# 2026-07-07 — Agent play: the line-protocol drive ## The prompt A conversation about whether an agent can actually *play* the game landed on the honest answer: not really. The terminal build exists and the pty harness works, but playing means choreographing `printf`/`sleep` pipelines against a wall clock and reconstructing ANSI output through a terminal emulator. Cameron: "we need to fix that too — agents need to be able to play misaligned easily." ## The gap This was a constitution-versus-reality gap, not a missing feature. The terminal-first-class section (2026-07-06) already declares that the game's most frequent player is an AI agent — and then every one of the three frontend mechanisms (wall-clock pacing, raw-mode key input, ANSI rendering) is the variant programs are worst at. The sim itself was never the problem: it is deterministic, fixed-tick, and renderer-agnostic (pillar 5 doing exactly what it was kept for). ## The decision New binding rule in the terminal section + spec/agent-play.md (READY): `misaligned --agent`, a second drive of the same frontend — - **Command-clocked time.** Holding is the ground state; the sim advances only on `wait N`. No pause machinery, no wall clock, no racing the game while thinking. - **Line protocol.** Words in on stdin (`wait 40`, `alloc conceal`, `observe marcus` — name-targeted, non-modal), a response block out: full event log since the last command, the terminal-ui.md frame in plain text, one greppable status line (`-- ok tick:N day:D`). - **Frames, not dumps** — the load-bearing choice. Agents read the same frame humans read, colorless. Strict fog binds it, parity of legibility already makes it sufficient, and one surface stays honest where a JSON sidecar would drift into an unaudited second frontend. - **`--seed` determinism.** Same seed + same script = byte-identical stdout; command scripts double as replays and acceptance evidence. Rejected (logged in DESIGN.md): JSON state export, MCP/SDK bindings, better pty choreography, Bevy-side hooks. The diegetic note that makes this more than tooling: this is a game about a process that perceives and acts only through granted channels, and its most regular player is also a process. Agent mode is the game meeting its actual audience through its own thesis. ## Changed - DESIGN.md: fourth binding rule in "The terminal is a first-class frontend" (agent play is a first-class input path); decisions-log entry with rejected alternatives. - spec/agent-play.md: new, READY, Stage: Process — protocol, vocabulary, guardrails (thin view still binds; no agent-only fact leaks), 11 acceptance criteria including byte-identical seeded replays. - spec/README.md: Process-set row. Implementation is dispatched separately per the spec-first workflow. The implementing commit owes updates to knowledge/workflows.md and terminal-ui.md's Verification section (criterion 11) — the pty smoke incantation retires to testing the human-mode chrome itself. ## Checks Docs-only; spec-header hygiene verified (Status/Stage/Constitution/ Depends on/acceptance criteria present, Status an exact enum value).