57 lines
3.1 KiB
Markdown
57 lines
3.1 KiB
Markdown
---
|
|
id: 20260531-124040-dev-pod-runtime-command-env
|
|
slug: dev-pod-runtime-command-env
|
|
title: 'Dev: add Pod runtime executable override env'
|
|
status: closed
|
|
kind: task
|
|
priority: P2
|
|
labels: [cli, pod, env, dev]
|
|
created_at: 2026-05-31T12:40:40Z
|
|
updated_at: 2026-05-31T20:41:56Z
|
|
assignee: null
|
|
---
|
|
|
|
## Background
|
|
|
|
During dogfooding, long-running TUI/Pod processes can keep executing an old `target/debug/insomnia` inode after `cargo build` or `cargo clean` replaces/removes the binary. On Linux, `std::env::current_exe()` then returns a path like:
|
|
|
|
```text
|
|
/home/.../target/debug/insomnia (deleted)
|
|
```
|
|
|
|
Current Pod spawn/restore paths use `current_exe() + ["pod"]` as the runtime command, so a long-running process can try to spawn `.../insomnia (deleted) pod` and fail with `No such file or directory`.
|
|
|
|
This is primarily a development/dogfooding problem. The previous general-purpose `INSOMNIA_POD_COMMAND` override was intentionally removed; do not restore that semantics. Instead, add a narrow development escape hatch that replaces only the executable used in the standard `insomnia pod ...` runtime command.
|
|
|
|
## Requirements
|
|
|
|
- Add a narrowly scoped development override environment variable, tentatively `INSOMNIA_POD_RUNTIME_COMMAND`.
|
|
- Semantics:
|
|
- if unset/empty, default remains `current_exe() + ["pod"]`;
|
|
- if set, the value is the executable path used instead of `current_exe()`;
|
|
- the `pod` prefix argument is still automatically added;
|
|
- the value is not shell-parsed and cannot include arguments.
|
|
- Keep this as a development escape hatch, not normal user configuration.
|
|
- Update diagnostics so a failed spawn shows the resolved runtime command clearly enough to debug deleted-path issues.
|
|
- Document the variable in `docs/environment.md` under a clearly development-only section.
|
|
- Do not reintroduce `INSOMNIA_POD_COMMAND` or its old executable-without-prefix semantics.
|
|
- Do not change Pod runtime flags/profile/manifest/protocol semantics.
|
|
- This ticket may be implemented before or folded into `insomnia-crate-cli-owner`, but must not create `pod -> insomnia` or `tui -> insomnia` architectural coupling beyond the current transitional state.
|
|
|
|
## Non-goals
|
|
|
|
- Making environment variables a general configuration mechanism.
|
|
- Adding shell-string command parsing.
|
|
- Supporting wrapper commands with arguments.
|
|
- Solving all hot-reload/self-rebuild lifecycle issues.
|
|
- Reintroducing the removed `insomnia-pod` binary/alias.
|
|
|
|
## Acceptance criteria
|
|
|
|
- Setting `INSOMNIA_POD_RUNTIME_COMMAND=/path/to/insomnia` causes spawn/restore paths to execute `/path/to/insomnia pod ...`.
|
|
- Unset or empty `INSOMNIA_POD_RUNTIME_COMMAND` preserves the default `current_exe() + ["pod"]` behavior.
|
|
- Tests cover override, empty-as-unset, and no shell parsing/argument splitting semantics.
|
|
- Active code/docs do not reference the old `INSOMNIA_POD_COMMAND` name except historical work items.
|
|
- `docs/environment.md` explains this as a development-only escape hatch for dogfooding/rebuild deleted-exe cases.
|
|
- `cargo fmt --check`, focused tests for the runtime command helper/spawn paths, `cargo check` for affected crates, `./tickets.sh doctor`, and `git diff --check` pass.
|