Skip to content

docs(backlog): close six rows whose every limb is verified landed - #917

Merged
wshallwshall merged 1 commit into
mainfrom
claude/banner-flips-6a0cd1
Sep 6, 2026
Merged

docs(backlog): close six rows whose every limb is verified landed#917
wshallwshall merged 1 commit into
mainfrom
claude/banner-flips-6a0cd1

Conversation

@wshallwshall

@wshallwshall wshallwshall commented Sep 5, 2026

Copy link
Copy Markdown
Collaborator

What this closes

Six rows whose every limb is verified landed: #1272, #1291, #1345, #1366, #1367, #1410. Open rows go 279 to 273.

Why six and not 164

A complete run of scripts/coord/landed_citation_screen.py over all 278 open rows flagged 164 — 145 CITED, 19 MENTIONED — with its built-in controls passing.

That is a read-before-you-dispatch signal, not a completion claim, and the tool refuses that reading in its own words: landed code can cite a row while filing it, while testing around it, or while recording why it was not done.

Narrowing to rows that are CITED and carry a merged work PR and have no open PR and score value 1–2 gives 19 candidates.

Each of the 19 was proved individually, defaulting to refuse

The asymmetry drove the default: refusing a correct flip costs one re-read later, while accepting a wrong one removes the row from view, so the remaining work is never done and nothing reports a problem.

Six passed. Thirteen did not, each naming a specific unlanded limb:

Row What is still missing
#1020 three of its own "NOT BUILT" limbs unlanded; ADR 0167 still Proposed
#1061 the row's own banner says it must not close, and two merged PRs agree
#1282 the doc correction the row calls "what is left" has not landed
#1332 no limb landed at all — it is a tombstone for #1086
#1357 the decision record still states the retired value
#1361 the 25 budgeted message sites are not rewritten
#1368 branch-leak-scan.yml pins the same floor with no freshness check
#1372 the pinning test the row names as its only remainder never landed
#1383 45 assignment-shaped citations of refused keys remain
#1404 the enforce_admins claim is still wrong in four places
#1405 the second half of the two-step never landed
#1409 names two gaps that have no other number, so closing loses them
#1406 the injection never reaches the spawn path the Console actually uses

#1409 and #1368 are the instructive refusals. Both had every stated limb landed, and both were refused anyway because the verifier found something the row still uniquely records. That is the check working.

#1406's re-run has since completed, and it is a refusal too — 1 of 3 limbs. The headroom hook is wired on matcher ^(Task|Agent|Workflow)$|spawn_task (.claude/settings.json:60), but CLAUDE.md:290-292 says a Console spawns a Builder through a Bash(claude:*) grant, which no tool-name matcher can select. The shipped contract test does not merely fail to cover that path — tests/test_claude_settings_contract.py:151 puts Bash in _NEAR_MISS_TOOLS and asserts no matcher wiring this hook may select it. So the largest spend in the system, launching a whole session, still gets no reading, and nothing records the exclusion.

The verifier drove it rather than reading it: a Bash/claude --bg payload piped into the hook produced no output and exit 0, while a Task payload produced a full reading.

So the final count is six flipped, thirteen refused.

Shape of each edit

The check-mark banner leads. The original open banner is demoted, not deleted — its glyph is stripped and its filing prose stays beneath, which is the shape #1439 and #1432 already carry on main. The score line is untouched.

Exactly one status banner per row, asserted from the written file rather than from the plan.

Checks

  • backlog_status_check.py green: 670 items, each declaring exactly one status.
  • All six parse as closed, with one closed banner and zero open banners.
  • 113 tests pass across the status, citation, ledger and link-resolution legs.
  • Additive shape: 18 insertions, 6 deletions, docs/BACKLOG.md only.

Not enqueued, auto-merge not armed.

🤖 Generated with Claude Code

Flips #1272, #1291, #1345, #1366, #1367 and #1410 to SHIPPED. Open rows
go 279 to 273.

HOW THE CANDIDATES WERE FOUND, and why this is six and not 164. A full
run of scripts/coord/landed_citation_screen.py over all 278 open rows
flagged 164 -- 145 CITED, 19 MENTIONED -- with its controls passing. That
is a read-before-you-dispatch signal, not a completion claim, and the
tool refuses that reading in terms. Narrowing to rows that are CITED AND
carry a merged work PR AND have no open PR AND score value 1 or 2 gives
19 candidates.

EACH OF THE 19 WAS THEN PROVED INDIVIDUALLY, defaulting to refuse. The
asymmetry is the reason: refusing a correct flip costs one re-read, while
accepting a wrong one removes the row from view, so the remaining work is
never done and nothing reports a problem. Six passed. THIRTEEN DID NOT,
and each names a specific unlanded limb:

  #1020  3 of its own "NOT BUILT" limbs unlanded; ADR 0167 still Proposed
  #1061  the row's own banner says it must not close; two merged PRs agree
  #1282  the doc correction the row calls "what is left" has not landed
  #1332  no limb landed at all; it is a tombstone for #1086
  #1357  the decision record still states the retired value
  #1361  the 25 budgeted message sites are not rewritten
  #1368  branch-leak-scan.yml pins the same floor with no freshness check
  #1372  the pinning test the row names as its only remainder never landed
  #1383  45 assignment-shaped citations of refused keys remain
  #1404  the enforce_admins claim is still wrong in four places
  #1405  the second half of the two-step never landed
  #1409  names two gaps that have NO other number, so closing loses them
  #1406  its verifier failed on a schema cap and is being re-run

#1409 and #1368 are the instructive refusals: both had every stated limb
landed, and both were refused anyway because the verifier found something
the row still uniquely records.

SHAPE OF EACH EDIT. The check-mark banner leads; the original open banner
is DEMOTED rather than deleted -- its glyph is stripped and its filing
prose stays beneath, which is the shape #1439 and #1432 already carry on
main. The score line is untouched. Exactly one status banner per row,
asserted from the written file rather than from the plan.

Verified: backlog_status_check green (670 items, one status each, 433 in
the ledger), all six parse as closed with one closed banner and zero open
banners, and 113 tests pass across the status, citation, ledger and
link-resolution legs.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@wshallwshall
wshallwshall added this pull request to the merge queue Sep 6, 2026
Merged via the queue into main with commit d037694 Sep 6, 2026
37 of 41 checks passed
@wshallwshall
wshallwshall deleted the claude/banner-flips-6a0cd1 branch September 6, 2026 16:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant