box/.github/scripts
dan-claude-bot 27cfc5b8c1 fix(labels): never name a label the repo lacks; a stale round owes an ask too
Round 1 review (claude-bot, codex-bot on #138 and the sibling PRs).

gh issue edit rejects the WHOLE call on one unknown label name, and this
change made state and blockers share a single edit for anti-flicker. On a repo
whose taxonomy predates the blocker:* labels -- every repo, at merge -- the
first sweep would therefore converge NOTHING on exactly the PRs the change
exists to fix, surfacing only as a warning in a cron log. Adds are now
filtered against the repo's real label set, read once per sweep. Removals need
no filter: they are built from has_label, so they provably exist. An
unreadable label set does not filter, because a failed read must not silently
strip the board.

blocker:unrequested also missed the stale round. MISSING and STALE are both
verdicts this head does not have -- nobody reviewed it, or everybody reviewed
something else -- and the agent owes an ask either way. The stale one is the
worse of the two: it has approvals on the page that no longer describe the
tree, which is the case LABELS.md already called the most dangerous.

Fixtures 66 -> 68.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-20 17:50:00 +00:00
..
changelog-armed.sh fix: the armed guard also refuses a half-done ceremony (#108, cast#114 review) 2026-07-19 20:43:52 +00:00
changelog-monotonic.sh fix: the guard also refuses a DUPLICATED release heading, not just a deleted one 2026-07-20 14:08:56 +00:00
labels-reconcile.sh fix(labels): never name a label the repo lacks; a stale round owes an ask too 2026-07-20 17:50:00 +00:00
release-notes.sh feat(release): publish the tagged version's changelog section (#83) 2026-07-18 22:17:51 +00:00