Refusals

Part of team worktree — every message that refuses it, the exit each carries, and the runs that trip them.

MessageExit
team worktree: a subcommand is required / unknown subcommand "x" / a task name is required / unexpected "x" (each with the usage)2
team worktree: remove takes no --kind or --seat (with the usage)2
team worktree: line <n>: <message>2
team worktree: --file is the owner's, from a terminal outside herdr; this call is <caller>1
team worktree: --session is the owner's, from a terminal outside herdr; this call is <caller>1
team worktree: only the owner, the orchestrator or the operator runs it; this call is <caller>1
team worktree: no pane is recorded for seat <name> in this session: the owner stops that seat and runs `team up` 1
team worktree: the state records pane <pane> for seat <name> in this session, not the pane this call is on: the owner stops the team and starts it again (`team down`, then `team up`) 1
team worktree: session can't be "default", herdr's own session1
team worktree: the file was never approved on this machine: run `team approve` 1
team worktree: approved before records were signed: run `team approve` once — the record was written by an earlier team; the same line, with the case, for a record that does not verify1
team worktree: the approval record cannot be read (<store>/approval.json: "file" is not a string): run `team approve` once — the record's file is not a string; the store refuses it before this command reads a copy1
team worktree: the approved copy can't be read: run `team approve` — a verified record whose stored copy this version can't read, whether or not the fingerprints match1
team worktree: a task name is one segment of letters, digits, ".", "_" and "-", and it starts with a letter or a digit1
team worktree: --kind: <the same, for the kind>1
team worktree: workspace.mode is shared: this team keeps one checkout, so there is no task worktree to create1
team worktree: workspace.path and workspace.base are required1
team worktree: --kind is required: the branch pattern is "{kind}/{task}"1
team worktree: --kind has nowhere to go: the branch pattern is "{task}"1
team worktree: <folder> is outside the approved trust paths1
team worktree: seat <name> is not in the approved file: run `team approve` — a seat the file declares and the approved copy does not1
team worktree: --seat "x" names no declared seat1
team worktree: "t" is already recorded / "t" is already recorded in session x1
team worktree: the worktree limit is 8, and 8 are open1
team worktree: <folder> already exists / branch <b> already exists / <remote>/<b> already exists1
team worktree: "b" is not a branch name1
team worktree: workspace.base "main" is not a branch here; nothing was created1
team worktree: couldn't fetch <remote>: <first line>. Nothing was created.1
team worktree: the worktree was not created: <first line of git's error>1
team worktree: setup failed on command <n> of <m>; the worktree is kept and recorded as setup: failed1
team worktree: no worktree named "t" is recorded1
team worktree: "t" is recorded in session x, not in y; nothing was removed1
team worktree: seat <name> is recorded in this worktree; team remove <name> first1
team worktree: uncommitted or untracked files: … the first twenty, one per line1
team worktree: commits on no remote branch: … the first twenty, one per line1
team worktree: the worktree was not removed: <first line of git's error>1

When setup fails, the folder is still printed on stdout before the refusal: the worktree is kept, recorded as setup: failed, and the exit code is 1.

A caller that cannot run it

A seat that isn't the orchestrator or the operator can't create one:

Terminal
 team worktree new select-width --kind fix ; echo "exit $?"
team worktree: only the owner, the orchestrator or the operator runs it; this call is claude-beacon
exit 1

A kind the pattern needs

The branch pattern asks for a kind, so the command does:

Terminal
 team worktree new select-width ; echo "exit $?"
team worktree: --kind is required: the branch pattern is "{kind}/{task}"
exit 1

A task name that is not one segment

The task name is one path segment, and nothing else:

Terminal
 team worktree new "select width" --kind fix ; echo "exit $?"
team worktree: a task name is one segment of letters, digits, ".", "_" and "-", and it starts with a letter or a digit
exit 1

A task already open

The same task can't be open twice:

Terminal
 team worktree new select-width --kind fix ; echo "exit $?"
team worktree: "select-width" is already recorded
exit 1

A worktree with commits to lose

A commit that lives only in the worktree keeps it in place:

Shell
-C ../worktrees/beacon/select-width commit --allow-empty -m "Measure the pane"
Terminal
 team worktree remove select-width ; echo "exit $?"
team worktree: commits on no remote branch:
  <sha> Measure the pane
exit 1