The rows
Part of team status — one line per seat: its state, its model, its pane — and the approval note.
team beacon, session "beacon" claude-keeper missing Claude Opus 5.5 - claude-beacon working Claude Opus 5.5 w1:p1
The columns are the seat, its state, the model, and the pane. The state is what herdr says
(idle, working, blocked…), with , parked added for a seat the file parks and , temporary
for a temporary one; or <state> (unsent text) when an idle or done seat — the two states team
types into — holds text in its input box that was never sent; or <state> (screen not recognised)
when an idle or done seat's screen is not one its profile reads: herdr's word alone would read a
stall as settled, so the row says what could not be read; or missing when the seat is in the
file and nothing is running for it, or when the pane the state recorded for it runs no CLI — the
CLI ended, or the session was restored, and the pane is back at its shell; or restored, not launched by team when its pane runs a process team did not launch — another session's restore,
or a CLI started by hand; or stopped when the file marks it stopped; or wrong name
when an agent sits in the seat's workspace under another name. A wrong name row's model is
the one that pane's screen names, or (unread) when the screen names none — never the file's.
A pane is its seat only while the process team launched is still in it. The state records, for
each seat up or add launched, the pane's own shell process and the processes the launch left in
front of it — pids only, never a command line. The reading is one herdr pane process-info of the
pane, taken once, after the idle prompt appears and after the launch model check: nothing is read
again after a first message. Wherever status reads the seat as running, the two are compared:
same is the pane team launched, missing a pane back at its shell, restored, not launched by team a pane held by another process. The comparison is pids only, and it accepts the seat while
any recorded CLI pid is still in front: an extra pid beside them, or another order, changes
nothing. A restored row's model is -, never the file's: nothing checks what that process runs.
When that pane's screen names a model, a note names it — <seat>: its pane runs <model> <version>; that process is not the one team launched — and the note does not change the exit. A
seat with no launched record — a seat launched before this record existed, or one whose process
herdr could not read (the reading is taken once, after the seat's idle prompt; a seat stopped at a
dialog records it in the same write as its waiting record) — is shown as it always was;
team doctor says which seats those are.
The comparison is wrong in the safe direction, but it is wrong: a CLI that replaces its own process
— an updater that re-executes, a wrapper that hands over — changes the foreground pids, and the
seat then reads restored, not launched by team although nothing was restored and its conversation
is intact. up acts on that reading: it closes the pane without input and launches the seat fresh,
and the conversation in it is lost. No reading of a CLI after its first message was taken when this
record was made; a review's runs of a CLI that starts a helper beside itself and of one behind a
pipeline kept every pid in front, so all of them were recorded. Before running up over such a
row — status names the seat — the owner looks at the pane: it says whether the CLI there is the
one team launched, and up's own guards are in docs/commands/up.md.
The model is the seat's display when the running model matches the file, and
<model> <version> (file: <display>) when it doesn't. A screen that doesn't show the model is a
note rather than a difference: unread is never wrong.
An approval in force is a note of its own, approval #1 (2026-10-04), key fe21ef6293de: the
signing's number, its date and the key's fingerprint — the first twelve hex digits of the key's
public half. An owner who noted the fingerprint sees a replaced key; a process that only reads
it changes nothing team shows, and team computes what it shows.