backlog: archive #335, file #1002 for #105's renumber, re-derive the census - #183
Merged
Merged
Conversation
…census ONE operation, deliberately. The pieces cannot be split: removing a closed-but-rowed item and adding a new rowed item both move the rank column and both change every census line, so two passes would each publish a wrong count in between. WHAT MOVED Archived #335 out. Its work landed in #177; it carried a closed banner while KEEPING its ranked-table row, which is what broke the heading-to-row bijection. Moved verbatim to BACKLOG-CLOSED.md (60 lines, unedited) and its row dropped. Filed #1002 - the AG-rig validation that PR #105 filed as #319. #319 was never allocated through alloc.ps1 and #105 gave it NO ranked-table row, so merging #105 as-is would have duplicated the item under a second number AND left a rowless heading. #1002 is allocated to this worktree. PR #105 is superseded and will be closed. Added the AOAG-DEPLOYMENT.md note #105 carried, renumbered to #1002, applied as a block rather than cherry-picked: main's copy of that file has moved 29 insertions / 23 deletions since #105 branched, so taking the file would have reverted main's newer content. The anchor slug was verified to resolve against the new heading, character for character, rather than assumed. Re-derived all four census lines plus the sum-to assertion. Note line 144 - "Every one of the **93 open items**" - was SEVEN out, not one: it is the line the recompute script does not emit, so it drifts on every filing and was last corrected in #178. Fixing the line again without fixing the generator guarantees a third occurrence; that is recorded in the plan rather than papered over here. MEASURED AFTER, with parse_items imported from backlog_status_check.py and never a hand-rolled scan (CLAUDE.md section 11 - I wrote three hand-rolled checkers in one day and got three different wrong answers, the third falsely reporting three OPEN items as closed): 101 items - 101 OPEN - 0 closed-in-file - 101 live rows open heading with no row : NONE row whose item is not open: NONE ranks contiguous 1..101 : True all four census lines sum to 101 The bijection now holds in BOTH directions. A matching total alone would not have shown that: a closed-but-rowed item and a filed-without-a-row item cancel, and every total-only assertion passes while both sets are wrong. ONE NEAR-MISS WORTH RECORDING. My first attempt renumbered 235 ranks. The live table has 101; the file also holds a superseded 134-row 2026-07-10 table, and an unscoped renumber walked straight into it and continued the sequence. Reverted and redone with the renumber bounded to the live section, plus an assertion that the historical rows are byte-identical afterwards. The gate would not have caught it - it reads item banners, not ranks. VERIFIED, including the guards a docs-only PR does not run. The pytest legs are gated on `code == 'true'`, and `.md` is in the noncode allowlist, so for this PR they are skipped pre-merge and fire only on the push to main. Run locally: test_cutover_slug_rot.py (the two-way prose ratchet, sitting exactly at its ceiling), test_backlog_status_check.py and test_feature_map_claims.py - 30 passed. Ledger gate OK at 288 items across both files. Leak gate exit 0 with real detectors armed. At least three items still carry banners that understate what shipped. Stated as "at least" on purpose: a sweep is what establishes the real count, and an enumeration here would be the completeness claim CLAUDE.md section 11 warns against.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes the ledger reconciliation the last three PRs deferred. Supersedes #105, which will be closed.
One operation, deliberately
The pieces cannot be split. Removing a closed-but-rowed item and adding a new rowed item both move the rank column and both change every census line, so two passes would each publish a wrong count in between.
What moved
Archived #335 out. Its work landed in #177; it carried a closed banner while keeping its ranked-table row, which is what broke the heading-to-row bijection. Moved verbatim to
BACKLOG-CLOSED.md(60 lines, unedited) and its row dropped.Filed #1002 — the AG-rig validation that PR #105 filed as #319. That number was never allocated through
alloc.ps1, and #105 gave it no ranked-table row — so merging #105 as-is would have duplicated the item under a second number and left a rowless heading. #1002 is allocated to this worktree.Added the
AOAG-DEPLOYMENT.mdnote #105 carried, renumbered, and applied as a block rather than cherry-picked: main's copy of that file has moved 29 insertions / 23 deletions since #105 branched, so taking the file would have reverted main's newer content. The anchor slug was verified to resolve against the new heading character for character rather than assumed.Re-derived all four census lines plus the sum-to assertion. Line 144 — "Every one of the 93 open items" — was seven out, not one. It is the line the recompute script does not emit, so it drifts on every filing, and it was last corrected in #178. Fixing it again without fixing the generator guarantees a third occurrence; that is recorded in the migration plan rather than papered over here.
Measured after
Using
parse_itemsimported frombacklog_status_check.py, never a hand-rolled scan (CLAUDE.md §11 — I wrote three hand-rolled checkers in one day and got three different wrong answers, the third falsely reporting three open items as closed):The bijection now holds in both directions. A matching total alone would not have shown that — a closed-but-rowed item and a filed-without-a-row item cancel, and every total-only assertion passes while both sets are wrong.
One near-miss worth recording
My first attempt renumbered 235 ranks. The live table has 101; the file also holds a superseded 134-row 2026-07-10 table, and an unscoped renumber walked into it and continued the sequence. Reverted and redone with the renumber bounded to the live section, plus an assertion that the historical rows are byte-identical afterwards (verified: 0 changed rows at rank >= 100).
The gate would not have caught it. It reads item banners, not ranks.
Verified, including the guards this PR will not run
The pytest legs are gated on
code == 'true'and.mdis in thenoncodeallowlist, so for a docs-only PR they are skipped pre-merge and fire only on the push to main afterwards. Run locally instead:tests/test_cutover_slug_rot.py— the two-way prose ratchet, which sits exactly at its ceiling (54 of 54)tests/test_backlog_status_check.pytests/test_feature_map_claims.py30 passed. Ledger gate OK at 288 items across both files (101 + 187). Leak gate exit 0 with real detectors armed (
names=7, estate=13, site_prefixes=1).Scoring note, easy to correct
#1002 is scored 6 / 4 / quick win / P2, anchored explicitly on #1003 (7/4) and stated in the row's own rationale: one value below because #1003 discharges four hardware-gated residuals where this discharges one documentation mandate; difficulty matches because it is the same rig, a failover and a failback. I checked it is not subsumed — #1003 covers #99/#98/#320/#351, none of which is the cross-subnet reconnect.
At least three items still carry banners that understate what shipped. Stated as "at least" on purpose: a sweep establishes the real count, and an enumeration would be the completeness claim §11 warns against.