fix(dispatch): background starter passes --repo to both order verbs

A background child runs in a worktree, and without --repo the order
verbs derive identity from the git toplevel's basename - the worktree's
name, not the repo's. Measured in the session that built the form: the
claim ran before the worktree and won; coord-order-done ran inside it and
exited 1 "no claimed order ... for dispatch-bg-form", leaving the order in
flight until --repo repo-mailbox was passed. The order's own starter
template carried the same defect.

§19b gains two checks (red against 24adf59, same predicate), the
template passes --repo <repo> to claim and done, and the skill says why.

Suites under bash 3.2: coord 257, board 495, route 73, orders 116,
guard 54 = 995. npm test 12/12.

Order 20260923T070445Z-9974217048-from-.claude (follow-up to 24adf59).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Kjell Tore Guttormsen 2026-09-23 09:37:38 +02:00
commit 741ada82b7
Signed by: ktg
SSH key fingerprint: SHA256:JakMjO6FTBBzN0Bhfj9saOoEjaFxlSdYuZQQpM/lF9Q
5 changed files with 32 additions and 12 deletions

View file

@ -467,7 +467,7 @@ marketplace plugin. Three components, one boundary:
- **Board (`scripts/board.sh`):** cross-repo attention board. Reads STATE.md
next-step blocks + board lines, `git status`, and mailbox pending counts, and
prints one line per repo. Read-only by construction: it writes to no repo, no
STATE.md and no mailbox. Pinned by `board-selftest.sh` (493 checks).
STATE.md and no mailbox. Pinned by `board-selftest.sh` (495 checks).
**It lives here because the mailbox is one of its three inputs, and it carries
the same axis distinction the mailbox does.** A pending count means *others
@ -1524,9 +1524,12 @@ marketplace plugin. Three components, one boundary:
splicing it keeps `--model` in the one position the budget hook counts.
board-selftest §19b reads the skill's background SECTION only. It pins
model-first (with a planted-wrong-order control), the three T4 tools,
`INGEN push`, `git checkout -B`, both order verbs by full path, and a
description that triggers on the form. It also pins that `--target-pane`
still refuses `bg`. **Stated overlap, not closed:** starter steps (1), (2) and
`INGEN push`, `git checkout -B`, and both order verbs by full path AND with
`--repo`. A worktree's git toplevel basename is the worktree's name, so
derived identity looks in the wrong queue. That was measured in the building
session: its close exited 1 until `--repo` was passed. The section also pins
a description that triggers on the form, and that `--target-pane` still
refuses `bg`. **Stated overlap, not closed:** starter steps (1), (2) and
(4) repeat the protocol `board.sh`'s thin starter carries. A protocol change
must move both copies.
@ -1570,7 +1573,7 @@ obligations in another repo.
builtins only in hook and tests.
- TDD: no behavior change without a failing selftest check first.
`bash scripts/coord-selftest.sh` must exit 0 (257/257),
`bash scripts/board-selftest.sh` must exit 0 (493/493),
`bash scripts/board-selftest.sh` must exit 0 (495/495),
`bash scripts/route-selftest.sh` must exit 0 (73/73),
`bash scripts/orders-selftest.sh` must exit 0 (116/116) and
`bash scripts/state-line-guard-selftest.sh` must exit 0 (54/54).