diff --git a/work-items/open/20260531-045034-spawn-through-insomnia-pod-subcommand/item.md b/work-items/open/20260531-045034-spawn-through-insomnia-pod-subcommand/item.md index 5791a5c2..8961bbb0 100644 --- a/work-items/open/20260531-045034-spawn-through-insomnia-pod-subcommand/item.md +++ b/work-items/open/20260531-045034-spawn-through-insomnia-pod-subcommand/item.md @@ -7,7 +7,7 @@ kind: task priority: P2 labels: [cli, pod, client, nix] created_at: 2026-05-31T04:50:34Z -updated_at: 2026-05-31T04:51:14Z +updated_at: 2026-05-31T05:25:12Z assignee: null legacy_ticket: null --- diff --git a/work-items/open/20260531-045034-spawn-through-insomnia-pod-subcommand/thread.md b/work-items/open/20260531-045034-spawn-through-insomnia-pod-subcommand/thread.md index 810284ce..4848c225 100644 --- a/work-items/open/20260531-045034-spawn-through-insomnia-pod-subcommand/thread.md +++ b/work-items/open/20260531-045034-spawn-through-insomnia-pod-subcommand/thread.md @@ -20,4 +20,67 @@ Implementation plan: 6. Leave Nix/package removal of `insomnia-pod` to a follow-up unless this change proves complete and low-risk. +--- + + + +## Implementation report + +Implementation report from coder Pod `spawn-through-insomnia-pod-coder-20260531`: + +- Branch: `spawn-through-insomnia-pod-subcommand` +- Commit: `4f622b8` (`cli: spawn pods through insomnia pod`) +- Added new `pod-command` crate with typed `PodRuntimeCommand { program, prefix_args }`. +- Default runtime command now resolves to `current_exe()` + `pod` prefix args, except when running through the temporary legacy `insomnia-pod` wrapper. +- `INSOMNIA_POD_COMMAND` remains executable-only, is not shell-parsed, and bypasses prefix args for development/debug override behavior. +- Migrated internal Pod runtime launches to the typed command: + - `client::spawn_pod` + - `SpawnPod` child process creation + - `PodDiscovery::restore` / `RestorePod` + - TUI spawn/restore callers through `client::spawn_pod` +- Preserved detached process behavior, process groups, socket prediction/probing, and `INSOMNIA-READY` stderr handshake. +- Left `insomnia-pod` package/output removal for the next phase. + +Validation reported by coder: + +- `cargo fmt --check` passed +- `cargo test -p pod-command` passed +- `cargo test -p client -p pod-command` passed +- `cargo test -p pod --lib discovery::tests` passed +- `cargo test -p pod --test spawn_pod_test` passed +- `cargo test -p tui parse_pod_subcommand_uses_runtime_mode` passed +- `cargo check -p client -p pod -p tui` passed with existing dead-code warnings +- `./tickets.sh doctor` passed +- `git diff --check` passed + +Unresolved follow-ups: + +- Remove/demote `insomnia-pod` package/output once packaging/devshell/docs are updated. +- Optional stronger future test: capture actual argv of a mock spawned executable in a default-command call site. + + +--- + + + +## Review: approve + +External review by reviewer Pod `spawn-through-insomnia-pod-reviewer-20260531`: approve. + +Reviewer summary: + +- The implementation adds typed `PodRuntimeCommand { program, prefix_args }` command resolution. +- Default runtime command is now current executable plus `pod` prefix args, except for the temporary legacy `insomnia-pod` wrapper path. +- `INSOMNIA_POD_COMMAND` remains executable-only and is not shell-parsed. +- `client::spawn_pod`, `SpawnPod`, and `RestorePod`/discovery restore paths now use the typed command. +- Detached process behavior and `INSOMNIA-READY` handshake are preserved. +- Nix/package removal and crate rename are not mixed into this ticket. + +Blockers: none. + +Non-blocking follow-up: + +- Future test could capture actual argv of a mock spawned executable in a default-command call site. Current tests are adequate for this ticket because the typed command composition and existing spawn behavior are covered. + + ---