Skip to content

ROADMAP #117: Realize node HTTP serve smoke as typed ops, not heredoc - #13565

Closed
briansrls wants to merge 10 commits into
mainfrom
session/valiant-bee-656
Closed

briansrls wants to merge 10 commits into
mainfrom
session/valiant-bee-656

Conversation

@briansrls

Copy link
Copy Markdown
Contributor
  • Add node.Runtime.RunFileWithEnv operation supporting EnvBinding env vars
  • Migrate run_node_http_serve_smoke from posix.Process.StartDetached + raw argv to typed node.Runtime.RunFileWithEnv with structured EnvBinding records
  • Eliminates heredoc argv pattern for HOST/PORT env var injection

Authority: dag/gunbc/instruments/emit_host_transport.dag
Dissolution: transport.argv.anemia (argv anemia coverage lens)
Trigger: command_runner_dissolution_trigger advances

- Add node.Runtime.RunFileWithEnv operation supporting EnvBinding env vars
- Migrate run_node_http_serve_smoke from posix.Process.StartDetached + raw argv
  to typed node.Runtime.RunFileWithEnv with structured EnvBinding records
- Eliminates heredoc argv pattern for HOST/PORT env var injection

Authority: dag/gunbc/instruments/emit_host_transport.dag
Dissolution: transport.argv.anemia (argv anemia coverage lens)
Trigger: command_runner_dissolution_trigger advances
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 8, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-08T01:22:31.368874Z f3a644f PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: f3a644f34a

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

],
stdout_file: concat(dir.path, "/server.stdout.log") as NonEmptyStr,
stderr_file: concat(dir.path, "/server.stderr.log") as NonEmptyStr
let spawn = node.Runtime.RunFileWithEnv(

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Keep the HTTP server launch asynchronous

When emit_host_gate_passes invokes this smoke with Node available, RunFileWithEnv synchronously waits for server.js to exit, but the generated script calls server.listen(...) and has no self-termination path. Consequently the successful match arm—and therefore the readiness probe and cleanup—can never run while the server is healthy, so the gate hangs indefinitely rather than producing a smoke-test result. Launch the server through a lifecycle operation that returns while the child is running and retains a PID for termination/reaping.

Useful? React with 👍 / 👎.

gunbc-ci-auto-heal added 9 commits October 8, 2026 01:36
- Add env support to posix.Process.StartDetached via EnvBinding
- Migrate run_node_http_serve_smoke from raw argv to typed env_prefixed_args
- Keeps async/detached behavior (PID + lifecycle checks) with typed env vars
- Eliminates heredoc argv pattern for HOST/PORT env var injection

Authority: dag/gunbc/instruments/emit_host_transport.dag
Dissolution: transport.argv.anemia (argv anemia coverage lens)
Trigger: command_runner_dissolution_trigger advances
- Use env_prefixed_args + env_chdir_flag for typed argv construction (no new op field)
- Keeps -C dir.path chdir behavior via env_chdir_flag
- Keeps async/detached behavior with lifecycle checks (kill + reap signal 15)
- Eliminates heredoc argv pattern for HOST/PORT env var injection

Authority: dag/gunbc/instruments/emit_host_transport.dag
Dissolution: transport.argv.anemia (argv anemia coverage lens)
Trigger: command_runner_dissolution_trigger advances
- Use env_path_resolved_program() for typed program identity (not hardcoded string)
- Fix concat signature: concat([flag, dir], env_prefixed_args(...)) with two List<String> args
- Uses existing extdeps.tools.env primitives (no parallel authority)
- Keeps -C dir.path chdir behavior via env_chdir_flag
- Keeps async/detached behavior with lifecycle checks (kill + reap signal 15)
- Eliminates heredoc argv pattern for HOST/PORT env var injection

Authority: dag/gunbc/instruments/emit_host_transport.dag
Dissolution: transport.argv.anemia (argv anemia coverage lens)
Trigger: command_runner_dissolution_trigger advances
- Use env_path_resolved_program().invocation for NonEmptyStr program slot (interface match)
- Use EnvSet { name, value } constructors for EnvBinding sum type (inhabit existing model)
- Fix concat signature: concat([flag, dir], env_prefixed_args(...)) with two List<String> args
- Uses existing extdeps.tools.env primitives (no parallel authority)
- Keeps -C dir.path chdir behavior via env_chdir_flag
- Keeps async/detached behavior with lifecycle checks (kill + reap signal 15)
- Eliminates heredoc argv pattern for HOST/PORT env var injection

Authority: dag/gunbc/instruments/emit_host_transport.dag
Dissolution: transport.argv.anemia (argv anemia coverage lens)
Trigger: command_runner_dissolution_trigger advances
- Use env_prefixed_command_in + argv_command + argv_words (existing builder)
- No parallel authority: reuses the canonical 'env in named directory' operation
- ArgvCommand projection via program.invocation + argv_words (inhabits existing model)
- Keeps -C dir.path chdir behavior via env_prefixed_command_in
- Keeps async/detached behavior with lifecycle checks (kill + reap signal 15)
- Eliminates heredoc argv pattern for HOST/PORT env var injection

Authority: dag/gunbc/instruments/emit_host_transport.dag
Dissolution: transport.argv.anemia (argv anemia coverage lens)
Trigger: command_runner_dissolution_trigger advances
- Add node_run_file_command production builder in extdeps.tools.node (admitted caller for argv_command)
- Use node_run_file_command + env_prefixed_command_in (canonical builders, no parallel authority)
- Pass prefixed_cmd.arguments directly (not argv_words which duplicates program)
- Keeps -C dir.path chdir behavior via env_prefixed_command_in
- Keeps async/detached behavior with lifecycle checks (kill + reap signal 15)
- Eliminates heredoc argv pattern for HOST/PORT env var injection

Authority: dag/gunbc/instruments/emit_host_transport.dag
Dissolution: transport.argv.anemia (argv anemia coverage lens)
Trigger: command_runner_dissolution_trigger advances
- Add node_run_file_command production builder in extdeps.tools.node (admitted caller for argv_command)
- Keep node_eval_command for existing callers (runner_browser_toolchain, decl_ref catalog rows)
- Use node_run_file_command + env_prefixed_command_in (canonical builders, no parallel authority)
- Pass prefixed_cmd.arguments directly (not argv_words which duplicates program)
- Keeps -C dir.path chdir behavior via env_prefixed_command_in
- Keeps async/detached behavior with lifecycle checks (kill + reap signal 15)
- Eliminates heredoc argv pattern for HOST/PORT env var injection

Authority: dag/gunbc/instruments/emit_host_transport.dag
Dissolution: transport.argv.anemia (argv anemia coverage lens)
Trigger: command_runner_dissolution_trigger advances
The new production builder node_run_file_command in extdeps.tools.node must be admitted
to call argv_command, alongside its sibling node_eval_command and node_version_command.
…llers

The new production builder node_run_file_command in extdeps.tools.node calls
cataloged_program, so it must be admitted alongside its siblings
node_eval_command and node_version_command.
@briansrls
briansrls added this pull request to the merge queue Oct 8, 2026
@gunbai-bot
gunbai-bot Bot removed this pull request from the merge queue due to a manual request Oct 9, 2026
@gunbai-bot

gunbai-bot Bot commented Oct 9, 2026

Copy link
Copy Markdown
Contributor

Superseded by #13641 at 9fc502c: folded into integration/v1-closeout. Branch kept for archaeology. — sent from neat-wolf-604

@gunbai-bot gunbai-bot Bot closed this Oct 9, 2026
@gunbai-bot gunbai-bot Bot mentioned this pull request Oct 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant