The prompt never locks.
Send while the boss is mid-turn and the line lands in a backlog the office manages — not a tunnel, not a lost keystroke. Flushes go out as one batch, completions sweep the board behind them, and everything the office finishes lands in a ledger the next boss reads.
The backlog is a queue the office manages.
Hit enter while the boss works and the prompt free-sends into the backlog — the status line reads busy · N queued and you keep typing. Queued items are not invisible: each one gets a board row, so the office and its telemetry agree on what is waiting.
When the backlog drains it goes out as a single [BATCH DISPATCH] — one composed message the boss decomposes into parallel sub-agents, instead of N separate turns replayed in order./route forces that flush early, and /queue shows the backlog (/queue clear drops it). A dead boss respawns a fresh session and resends the batch — the queue is not hostage to one process.
![theboringfloor chat tab: three queued prompts flushing out as one [BATCH DISPATCH] message](/shots/docs/batch-dispatch.png)
Every completion sweeps the board behind it.
A worker return — or a flushed queue item — flips stranded DOING rows to DONE so the office board stays honest without you policing it. Only office-owned DOING rows are in play: agentmemory-mirrored rows own their own lifecycle and are never touched.
The matching is conservative by design. The completion's own exact row is excluded — the caller already closed it, and the sweep never double-flips it. Then the same worker's oldest in-progress row flips, one per completion. Then a normalized title-prefix match (≥8 characters, case- and whitespace-insensitive) catches twins. A row flips only when exactly one rule claims it — ambiguity across workers flips nothing, and nothing about it is printed or fudged.
When anything did move you get exactly one dim note: [office] board sync: flipped N rows to done. No sweep, no banner — and that note stays on the status bar and the activity log, never in the transcript.

The ledger is the office's completed-work memory.
Every completed dispatch lands in <dir>/.opencode/office-ledger.md — newest first, capped at 50 — as one ### date · title — worker (role) · `verdict` block carrying the summary line, the touched files, the verify digest, a proof one-liner and a ledgerId. The charter wires that file into the boss's instructions, so the next session's boss reads what this project already finished before re-dispatching it. No more "I don't have any memory of a prior task."
The same record also rides to agentmemory as an office_dispatch_done observation when that server is up — file-only when it is not. The boot splash's memory: ledger armed versus memory: file-only (agentmemory :3111 refused) line, and the status line's memory: note, tell you which lane got it.
In-app, /memory reads the ledger newest-first: the header counts the records and names the memory state (agentmemory OK or file-only), a missing ledger shows an honest empty state, and /memory fix narrows rows case-folded over title and files. Each completed dispatch also stamps a [memory] recorded: <title> → ledger line into the activity tab.
/stop aborts. The watchdog names a wedge.
/stop aborts current work — boss and workers — on the spot, and free-send keeps taking prompts the whole time. If a busy turn goes silent for two minutes, the wedge watchdog notes it once: the office calls that a wedge, and it reads on the status bar and in the activity log — never in the transcript.
A wedge is a suspicion, not a lock. The office itself keeps answering: keys, panels, scrolling and /stop all still work while the note is up, so a silent turn never takes the floor down with it.
The inverse is an idle floor. After workers finish and the last real chat was yours — not the boss, not the office concierge — two quiet minutes asks the boss to write a recap in chat. The fallback office note only appears if that send misses the wire. A late boss or concierge wrap cancels the recap.

What this doesn't do yet.
- Stuck rows stay stuck. Board sync never flips a row it can't prove — a cross-worker doubt means no flip and no drama, so a stray DOING row is yours to close by hand.
- The ledger is not recall. It records completed dispatches for the next boss, newest 50. The boss's scrollback is transcript history; agentmemory's semantic search is agentmemory's.
/memoryonly reads the ledger. - /stop is not a rollback. It aborts the turn — whatever the turn already changed on disk stays changed.
- /queue clear has no undo. Dropped backlog items are gone, not parked.
