fake-harness-fixture¶
Provenance¶
- Source:
.spec/spexcode/spec-cli/sessions/harness-adapter/fake-harness-fixture/spec.md - Source SHA-256:
c272c9d32d53356a30feecc7d3a838a1363bd889e1d7e63399d1178c8503a67e
fake-harness-fixture¶
raw source¶
SpexCode needs one deterministic, no-model worker for proving the managed terminal path without credentials or a
network. This fixture is an external command boundary: a caller starts a backend with the fixture's claude
launcher on PATH, then the runner uses only the public HTTP/WebSocket session routes plus local tmux observation.
The fake launcher emits a fixed-rate, marker-bearing stream on its real PTY and binds the same per-session
rendezvous socket path the claude adapter expects. It accepts a line-JSON reply poke and answers a small ping
message for deterministic control probes. The
runner proves the complete user-shaped chain: POST /api/sessions creates the record, the board derives
online from the live rendezvous listener, /api/sessions/:id/socket completes HTTP 101, the PTY bridge carries
the fake stream and a rendezvous-delivered control marker, and POST /api/sessions/:id/close removes the tmux
session, rendezvous socket, worker process, worktree, and branch.
The fixture never edits session.json, invents a product route, invokes a real model, or contacts the network.
The runner is intentionally version-tolerant at the create boundary: it uses the named launcher field when
available and retries without that field only when an older backend explicitly reports it as unknown. The same
command can therefore drive a current or historical backend whose existing claude launcher is pointed at the fake
command by environment/configuration.