What it prints
Part of team down — every line a stop prints, the skip lines for a seat left running, and the idle “nothing to stop”.
claude-keeper: stopped watch: stopped session beacon: stopped and cleared
A seat it stops prints <seat>: stopped; the watch prints watch: stopped; the session prints
session <session>: stopped and cleared — herdr keeps a stopped session listed until it is
deleted, so down clears the one it has itself just stopped, retrying while herdr still reports
it running, and the next up starts from the beginning. A clear that does not happen prints
session <session>: stopped; it did not clear, and down still exits 0: the stop itself
succeeded. A later up clears a stopped session this team's state records and goes on. A seat
this run asked whose exit could not be typed or confirmed, or whose exit was sent and which
did not leave within the wait, prints that, and that team down --abandon closes it; with
--abandon the same run closes its workspace and the line says so. A seat already sitting at
its own exit question is not that case: it is left, and the line says so and that --abandon
closes it; with the owner's --abandon it is closed as every seat that cannot be asked is
closed, and nothing is typed. A seat it does not stop prints one
skip line and is named in the last line instead of the session being stopped. A seat whose box
already holds its exit text, on a CLI with a clearing key, is stopped as a free seat is — the
clearing key runs first — and a dry run says so in a note under its typing step:
its box already holds this exit text; it is cleared first (<key>).
claude-beacon: is working (`--wait` waits for it); left running
session beacon: not stopped, 1 agent left in it
| Skip line | Meaning |
|---|---|
<seat>: is working (\--wait` waits for it); left running` | a turn is running |
<seat>: is blocked at a prompt, which \team never answers`; left running` | a permission dialog, a trust question or a question: only its owner answers it |
<seat>: sits at its own exit question; left running (team down --abandon closes it) | the pane already shows this CLI's framed exit question, left by an earlier stop: this run sends no key |
<seat>: holds unsent text in its input box; left running | half-typed text would be lost |
<seat>: holds this CLI's exit text (<exit>) unsent in its input box; left running (the owner sends it or clears it in its pane) | the box holds an earlier run's unconfirmed exit text, and the CLI has no key that empties a box |
<seat>: shows a screen the profile does not recognise; left running | nothing is typed into a screen it can't read |
<seat>: the state doesn't say which CLI it runs, so it can't be asked to exit; left running (team down --abandon closes it without typing) | the state predates the CLI record and the file no longer names the seat: nothing links its pane to a profile, so its owner closes it |
<seat>: left running; only the owner stops the orchestrator's or the operator's seat | a seat's own call, and this is the orchestrator or the operator |
session default: herdr's default session is never stopped | the default session is herdr's own |
It prints session <session> is not running: nothing to stop and exits 0 when there is nothing to
stop at all.
Nothing to stop
Once the session is down there is nothing to stop, and saying so is not an error:
team down ; echo "exit $?"
session beacon is not running: nothing to stop
exit 0