T-5UT9-add-a-tmux-host-and-a-pi-harness
State: closed/done · Impact: medium · Complexity: medium
simple-dispatch’s host/harness survey covers three harnesses (claude, codex, pi)
and adds a tmux host alongside terminal/orca/cmux, per
docs/planning/notes/N-C7QF-hosts-tmux.md and
docs/planning/notes/N-XA3J-harnesses-pi.md. Neither exists
in sdlc today; this closes both gaps.
Approach
Section titled “Approach”- Add a tmux host under
lib/services/host/hosts/tmux.tsimplementingsession()/terminal()per the researched pane-naming and discovery scheme. - Add
pias a third harness value alongside claude/codex in the splitHarnessenum (T-GG0N), with open/resume argv perdocs/planning/notes/N-XA3J-harnesses-pi.md. - Note pi’s
--mode rpcsurface for a later headless path (the P3 analog), without building headless dispatch here. - Extend the host/harness mapping’s tests and
available()probes to cover both.
| Area | Note |
|---|---|
solutions/ontological/lib/services/host/hosts/tmux.ts | New tmux host |
solutions/ontological/lib/services/host/engines.ts | Add pi to the (post-split) Harness enum |
docs/planning/notes/N-C7QF-hosts-tmux.md | Source for tmux pane naming/discovery |
docs/planning/notes/N-XA3J-harnesses-pi.md | Source for pi’s open/resume/native-send/headless surface |
Acceptance criteria
Section titled “Acceptance criteria”- AC-1: The tmux host passes the same session()/terminal() contract tests as
terminal/orca/cmux, exercised against a fake
CommandRunner(never a realtmuxbinary). Verified:hosts.test.ts’s “tmux host” describe block. - AC-2:
piis a selectable harness with anavailable()probe and open argv, unit-tested the same wayclaude/codex/cursor’s argv already are. Verified:harnessArgv('pi', ...)/harnessAvailable('pi')tests inhosts.test.ts. - AC-3 (refined — the task’s original “smoke test where both tools are
installed” conflicts with this campaign’s testing rule that no test may
launch a real tmux server or harness CLI): a tmux-hosted
pisession’s full open path — composed argv, thetmux new-sessioninvocation, and the tag used to name it — is exercised end-to-end against a fakeCommandRunnerthat records the exact argv, in one test that never starts a realtmuxserver orpiprocess. Verified:hosts.test.ts’s standalone AC-3 test.
Out of scope
Section titled “Out of scope”- Host.send/native send for pi (
T-CPJI) - pi’s headless RPC mode
Dependencies
Section titled “Dependencies”T-GG0N
Depends on
Section titled “Depends on”T-GG0N