# The terminal is a first-class frontend ``` Type: law ``` ## The terminal is a first-class frontend Adopted 2026-07-06. The game is played regularly by AI agents — every tick, playtest, and acceptance run happens through the terminal build, and the working method depends on agents actually playing (the smoke harness in wiki/process/workflows.md is the definition of done's "observed in an actual run"). The most frequent player of Misaligned is an agent. The terminal frontend is therefore **not a disposable dev harness but a first-class frontend**, held to pillar 4's beautiful-and-readable standard with the same force as the Bevy build. A terminal that is ugly or illegible degrades every future session's judgment of the game itself. Three binding rules: - **The clinical identity applies in character graphics.** Near-monochrome grey ramp (bone white → gunmetal → chrome) on near-black; **sterile amber is the single signal color** and means machine presence — the process, its hardware, its status, caution; **blood crimson means detection and danger** and nothing else. No decorative color. - **Visibility best practices bind.** One meaning per color, everywhere. Information is never carried by color alone: suspicion bands print their names beside their meters, selection is reverse-video plus a marker, paused says PAUSED. Columns align; meters carry their numbers; the day and tick are always on screen; log lines carry the tick they happened on. - **Parity of legibility.** Every mechanic the sim exposes must be playable, and every number legible, in the terminal — justification-and-legibility applies to terminal rendering with full force. A mechanic observable only in Bevy is a violation. - **Agent play is a first-class input path.** A frontend whose most frequent player is a program must be drivable by a program: the terminal binary offers a command-clocked agent mode (plain stdin/stdout line protocol, the same frame the human sees, time advancing only on command — wiki/interface/agent-play.md). A pty with wall-clock pacing is never the only way in, and a mechanic playable only by raw-mode keystroke is a violation on par with one observable only in Bevy.