Second Codex pass caught two proposed RFCs that describe the bash seam as it WAS (with get/list) and would read stale once this prune lands, plus a latent test-helper edge: - docs/rfc/proposed/architecture/2026-06-20-branded-ids.md and 2026-06-20-generic-long-running-tool-runtime.md: drop get/list from the BashExecutor seam description (surviving: resolve/run/start/ownerOf/ readOutput/kill/onTaskDone). branded-ids will be further updated when it is implemented; this keeps it accurate in the meantime. - trackCompletions now records every completion to `done` unconditionally (and also wakes a parked waiter), so a second doneFor(id) after completion resolves instead of hanging.
bash/ — bash capability family
The canonical three-package capability seam (see capability seams): an abstract executor interface, a concrete local implementation, and the model-facing tool that consumes it. All product packages.
| Package | Role | ctx key |
|---|---|---|
bash/ |
Abstract bash executor seam (interface + vocabulary) | ctx.bash |
bash-local/ |
Local-subprocess BashExecutor implementation |
(registers ctx.bash) |
tool-bash/ |
Model-facing bash/bash_output/bash_kill tool schemas |
(registers on ctx.tools) |
The interface lives at bash/bash/. A sandboxed executor would replace bash-local without touching the interface or the tool — the split is what makes that possible.