Public face of the contracts domain: the shared data shapes every other
domain depends on. Consumers import from contracts, never from
contracts::structs internals.
Converse: two coding harnesses talking to each other in a tui tab. Each
turn is one one-shot headless invocation (opencode run, hermes -z),
captured and painted into the frame between turns so the exchange is
watchable and Ctrl-C always stops the current child, never the session
scaffold. The token bill is explicit: a fixed turn cap per conversation.
Public face of the tui domain: the interactive switcher for the harness
catalog. run is invoked by the cli domain for the tui action and for
bare invocations on a terminal. The domain is a thin, line-oriented shell
over the headless command surface – every slash command and selection
maps onto the exact Action grammar the cli parses, so TUI and headless
never drift. guard is pure and unit-tested; run only executes it.