The ledger gate stops running after any stopped rebase: drop the marker git leaves behind, and gate the hook on its own selftest - #85
Open
rmsharp wants to merge 1 commit into
Conversation
…ok on its own selftest .githooks/pre-commit skipped replayed commits by testing five markers under the git dir. One of them, REBASE_HEAD, is LEFT BEHIND by git when a rebase that stopped -- a conflict, or -i parked at `edit` -- runs to completion. From that moment the hook exits 0 on every commit in that clone. The marker loop runs before both gates the hook chains, so the casualty is not only the failure-mode -KJ5HST#27 ledger gate but quality_ratchet.py --precommit, whose whole job is refusing a loosened threshold. Both then read green because neither ran. The shape was chosen from a measurement rather than from plausibility: every operation in the list was run to completion on git 2.50.1 and its markers observed at each stage. REBASE_HEAD is the ONLY marker that survives its operation -- the other four are removed when the operation ends or is aborted -- and it is REDUNDANT, since a rebase in progress always carries rebase-merge or rebase-apply alongside it. Dropping it therefore costs no in-progress coverage. A clean rebase leaks nothing, which is why only a stopped rebase arms the trap. A hook is the one gate nothing else watches, and it fails OPEN: its failure mode is silence, not red. So the fix ships with a --selftest (10 checks, on the .githooks/commit-msg --selftest precedent) and a pre-commit-selftest gate modelled on the existing commit-msg-selftest entry. Adding a gate always passes the ratchet; no threshold moved and bin/tests.sh is unchanged. RED-first: the same ten checks against the unfixed marker list go red on exactly one and green on the other nine, so the test isolates the defect rather than being vacuously red; 0 red after. Each probe repo is built with `git init --template=` so a user's init.templateDir cannot install its own hooks into the probe and answer for the hook under test, and each fixture is asserted to have built -- a probe against a repo that failed to build answers about nothing, in green. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
rmsharp
added a commit
to rmsharp/methodology
that referenced
this pull request
Sep 20, 2026
… and sent Non-commit action, operator go-ahead given in the Phase 0 picker over this session's recommendation to hold it until PR KJ5HST#84 moves; the recommendation is recorded with the decision. Re-derived rather than cherry-picked: upstream has no Test 43 and no suite coverage of a hook selftest, so its precedent is the gate, and the PR adds pre-commit-selftest beside commit-msg-selftest with bin/tests.sh untouched. Measured on upstream's tree in a --no-local clone with HEAD asserted by sha: 139/0 before and after, gates 10/10 -> 11/11. The before-run reproduces the results hash upstream's own newest receipt cites. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
rmsharp
added a commit
to rmsharp/methodology
that referenced
this pull request
Sep 20, 2026
…e a tool that does not exist The ratchet two sessions called unwired turned out to be absent: measured_bytes appears once in the tool and feeds only a density warning, itself gated on status == "ok". The tell is grammatical -- the note is present indicative but names no command, gate or exit code. D3 discharged, and this is the first close-out the rule binds. 0 retire, 1 appended; considered KJ5HST#62 (an exit code already spent) and KJ5HST#82 (a correct mechanism not armed) and neither is superseded -- all three were live in this one finding at once. Nothing was mechanized and nothing was removed this session. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
rmsharp
added a commit
to rmsharp/methodology
that referenced
this pull request
Sep 20, 2026
…ts old subject's truths Re-pointing a note to a new subject silently inverts every clause that was true of the old one. Dated with git log -S: the clause entered at a51d848 (S159) true of the distributed file, inverted at 8cfaf0d (S176) which never touched it, removed at 9db2c18 -- 26 sessions false. D3 statement: 0 retired, 1 appended, no row qualifies. Considered KJ5HST#34 (the row that justified option C; the ceiling still exists as a reported series), KJ5HST#26 (budgets generally, no gate enforces it) and KJ5HST#85 (one session old, a different failure). None is mechanized, superseded or spent. check-learnings --file docs/FORK_LEARNINGS.md --first 15 --no-citations: 72 rows, contiguous 15..86, 0 over 1,500 B. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
rmsharp
added a commit
to rmsharp/methodology
that referenced
this pull request
Sep 20, 2026
P5 shipped at 9db2c18: the 81,920 B figure is a reported series, not a limit, in the last artifact that still called it a warning to be answered. BL-53 closed at fc4a006 with its limits named -- no row has ever been retired, option B stays declined and un-foreclosed, D3 is held by prose, not a gate. Three claims failed verification and were corrected, one of them mine. Phase 3A: S201's handoff scored 9/10 -- its predictions held exactly. Phase 3B: self 8/10; I read an exit code through a pipe and briefly believed the budget tool exits 0. Phase 3C: fork Learning KJ5HST#86, D3 statement 0 retired / 1 appended / KJ5HST#34, KJ5HST#26 and KJ5HST#85 considered. Phase 3E: 11/11 pass, results 10575dac7361, manifest 01a4ae7aa511, in a --no-local clone of 4504996 with HEAD asserted by sha. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
rmsharp
added a commit
to rmsharp/methodology
that referenced
this pull request
Sep 21, 2026
…entity, and a guard in the wrong unit Phase 3C. Row #87, 1,271 B; 73 rows, contiguous 15..87, 0 over the 1,500 B per-row budget. D3 (CLAUDE.md:38): no row retired, and the refusal is derived rather than asserted. (a) no gate was added or moved -- manifest 01a4ae7aa511, the same digest as S199-S202 -- so nothing became mechanized since S200 adjudicated all 69; (b) #87 is narrower than its neighbours, not a generalization; (c) nothing was removed. Rows considered: KJ5HST#45 (the nearest neighbour, RETAIN-partly, whose order half #87 does not touch), KJ5HST#85 and KJ5HST#86 (prose vs mechanism, where #87 is two numbers and one unit), KJ5HST#62 (re-applied this session -- it is what hid BL-80). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
rmsharp
added a commit
to rmsharp/methodology
that referenced
this pull request
Sep 21, 2026
…ey were asking was the wrong one Deliverable: the BL-78 costing at docs/planning/BACKLOG-DETAIL.md:2866 (a9e0952). Planning session -- no key in .context-budget.json was edited. 3A predecessor S202: 8/10. Its trim prediction held exactly and its ranking was right; its CHANGELOG projection was off by ~2x and aimed at the refusal rather than the archive trigger, which fires today, and it carried forward the ceiling/measurement-record conflation the costing had to undo. 3B self: 8/10. The central claim was run, not argued; against it, an unquoted ${arg} in a zsh loop made five dry runs report exit 2 until a direct re-run disagreed. 3C: fork Learning #87, D3 discharged by a derived refusal (rows KJ5HST#45, KJ5HST#85, KJ5HST#86, KJ5HST#62 considered by name). 3E: 11/11, results 10575dac7361, manifest 01a4ae7aa511, clone of c0d1d65; bin/tests.sh 343/0/6 after the trim. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
rmsharp
added a commit
to rmsharp/methodology
that referenced
this pull request
Sep 21, 2026
…what that key is Phase 1B claim. CHANGELOG entry (in progress) + HANDOFFS.md status: pending receipt, plus the two Phase 0 history rows this session's own runs appended (dashboard_history.jsonl, .context-budget-history.jsonl). Phase 0: CHANGELOG frontier = HEAD d402f26, gap empty; HANDOFFS frontier the same commit, gap empty. No pending stub, 2 receipts before this one. Gate citation re-run in a --no-local clone with HEAD asserted by sha: 11/11 - results 10575dac7361 - manifest 01a4ae7aa511, S203's citation exactly. Dashboard 76/100, medium, 0 high+. Upstream 0 open issues; KJ5HST#85, KJ5HST#84, KJ5HST#83 open with 0 reviews each. origin/main 8 commits behind local main. Operator picker: deliverable BL-78 P1; P2 settled as option beta (reported series), not executed here; CHANGELOG trim, HANDOFFS trim and the fork push approved; nothing upstream-facing approved pending review of draft comments. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
rmsharp
added a commit
to rmsharp/methodology
that referenced
this pull request
Sep 21, 2026
…fs against itself An instrument that records every run changes its own output, so a before/after diff of it carries the instrument's delta as well as yours. P1's central A/B came back non-empty on a growth-run counter (166 vs 167), which read once says "the edit changed the output" -- the opposite of the claim P1 existed to make. The control is one more run of the unchanged side. 1,497 B after two trims; drafts at 1,636 B and 1,509 B were both refused by the per-row budget and shortened, not waived. 74 rows, contiguous 15..88. D3 discharged by explicit refusal: no row qualifies for retirement. Considered KJ5HST#82 (mechanized by pre-commit-selftest and Test 43, but retained on S200's reasoning that a gate pins the instance, not the next case -- and BL-77 is its unmechanized residual), KJ5HST#85 (re-examined because P1 rewrote the note it is about; P1 wrote prose, not a gate, and the indicted clause still stands), KJ5HST#86, #87, KJ5HST#83 and KJ5HST#84. Age and file size are not grounds and were not used. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
rmsharp
added a commit
to rmsharp/methodology
that referenced
this pull request
Sep 21, 2026
…series Phase 1B claim. CHANGELOG entry (in progress) + HANDOFFS.md status: pending receipt, plus the Phase 0 dashboard history row this session's own run appended. Phase 0: CHANGELOG frontier = HEAD 2a8a76a, gap empty; HANDOFFS frontier 7ca7b94 with 2a8a76a above it, which IS that push's ledger entry, so no unrecorded action and nothing backfilled. No pending stub, 2 receipts before this one. Gate citation re-run in a --no-local clone with HEAD asserted by sha: 11/11 - results 10575dac7361 - manifest 01a4ae7aa511, S204's citation exactly. Dashboard 76/100, medium, 0 high+. Upstream 0 open issues; KJ5HST#85, KJ5HST#84, KJ5HST#83 open with 0 reviews each, nothing moved since S204. origin/main level with local main. Operator picker: deliverable BL-78 P2 (option beta), over BL-81, BL-80, BL-79. Nothing upstream-facing approved. The requested PR KJ5HST#83 twelve-decisions write-up is a second deliverable and is being opened as a backlog item instead. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
rmsharp
added a commit
to rmsharp/methodology
that referenced
this pull request
Sep 21, 2026
…rator decisions Phase 1B claim. CHANGELOG entry (in progress) + HANDOFFS.md status: pending receipt, plus the Phase 0 dashboard history row this session's own run appended. Phase 0: CHANGELOG and HANDOFFS frontiers both = HEAD c77aa65, gaps empty, no pending stub, 2 receipts before this one; nothing backfilled. Gate citation re-run in a --no-local clone with HEAD asserted by sha: 11/11 - results 10575dac7361 - manifest 01a4ae7aa511, S205's citation exactly. Dashboard 76/100, medium, 0 high+. Upstream 0 open issues; KJ5HST#85, KJ5HST#84, KJ5HST#83 open with 0 reviews each, nothing moved since S205. Local main 7 ahead of origin/main. Operator picker: deliverable BL-82 (internal draft, nothing posted), over a CHANGELOG.md trim, BL-80 and BL-79. BL-78 P3 answered "no enforcement", so BL-78 closes -- recorded here and in its detail block; the closing edits are their own session. Fork push approved for close-out. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
rmsharp
added a commit
to rmsharp/methodology
that referenced
this pull request
Sep 21, 2026
…ew for readability Phase 1B claim. CHANGELOG entry (in progress) + HANDOFFS.md status: pending receipt, plus the Phase 0 dashboard history row this session's own run appended. Phase 0: CHANGELOG and HANDOFFS frontiers both = HEAD 8f5bbb7, gaps empty, no pending stub, 2 receipts before this one; nothing backfilled. Gate citation re-run in a --no-local clone with HEAD asserted by sha: 11/11 - results 10575dac7361 - manifest 01a4ae7aa511, S206's citation exactly. Dashboard 76/100, medium, 0 high+. Upstream 0 open issues; KJ5HST#83 head 219fb9d with 0 comments and 0 reviews; KJ5HST#84's one comment is the fork's own check-in; KJ5HST#85 unchanged. Local main 1 ahead of origin/main. Operator picker: deliverable = recompose section 6 (too dense, undefined terms, poor structure), presented for review. Nothing is posted. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
rmsharp
added a commit
to rmsharp/methodology
that referenced
this pull request
Sep 21, 2026
…t_budget.py Phase 1B claim. CHANGELOG entry (in progress) + HANDOFFS.md status: pending receipt, plus the Phase 0 dashboard history row this session's own run appended. Phase 0: CHANGELOG frontier = HEAD 73b9536, gap empty; HANDOFFS frontier 1c56948, the one commit after it is S208's announced push record. No pending stub, 2 receipts before this one; nothing backfilled. Gate citation re-run in a --no-local clone with HEAD asserted by sha: 11/11 - results 10575dac7361 - manifest 01a4ae7aa511, S208's citation exactly. Dashboard 76/100, medium, 0 high+. Upstream 0 open issues; KJ5HST#83, KJ5HST#84, KJ5HST#85 open, 0 reviews, no maintainer comment. main = origin/main; upstream/main 6b29d3d. Operator picker: deliverable = a plan for one upstream-bound PR fixing BL-75 (no --status, unknown arguments ignored) and BL-80 (a false "Nothing is over a ceiling yet"). Side actions: HANDOFFS.md retention trim, the section 4.2 sentence fix in the PR KJ5HST#83 review, push fork main at close-out. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
rmsharp
added a commit
to rmsharp/methodology
that referenced
this pull request
Sep 21, 2026
…ee --status, unknown arguments refused) Phase 1B claim. CHANGELOG entry (in progress) + HANDOFFS.md status: pending receipt, plus the Phase 0 dashboard history row this session's own run appended. Phase 0: CHANGELOG frontier = HEAD cadd8a0, gap empty; HANDOFFS frontier e1795a0, the one commit after it is S209's announced push record. No pending stub, 2 receipts before this one; nothing backfilled. Gate citation re-run in a --no-local clone with HEAD asserted by sha: 11/11 - results 10575dac7361 - manifest 01a4ae7aa511, S209's citation exactly. Dashboard 76/100, medium, 0 high+. Upstream 0 open issues; KJ5HST#83, KJ5HST#84, KJ5HST#85 open, 0 reviews, no maintainer comment. main = origin/main = cadd8a0; upstream/main 6b29d3d. Operator picker: deliverable = P1 of docs/planning/context-budget-status-plan.md (D1 + D2 + D4), built on a local fix/context-budget-status branch from upstream/main; nothing pushed. Side actions: HANDOFFS.md retention trim + fold, push fork main at close-out. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
rmsharp
added a commit
to rmsharp/methodology
that referenced
this pull request
Sep 21, 2026
…th-run advisory agrees with its table) Phase 1B claim. CHANGELOG entry (in progress) + HANDOFFS.md status: pending receipt, plus the Phase 0 dashboard history row this session's own run appended. Phase 0: CHANGELOG frontier = HEAD 36044bb, gap empty; HANDOFFS frontier 1e1cd18, the one commit after it is S210's announced push record. No pending stub, 2 receipts before this one; nothing backfilled. Gate citation re-run in a --no-local clone with HEAD asserted by sha: 11/11 - results 10575dac7361 - manifest 01a4ae7aa511, S210's citation exactly. Dashboard 76/100, medium, 0 high+. Upstream 0 open issues; KJ5HST#83, KJ5HST#84, KJ5HST#85 open, 0 reviews, no maintainer comment. main = origin/main = 36044bb; upstream/main 6b29d3d; fix/context-budget-status = e859196. Operator picker: deliverable = P2 of docs/planning/context-budget-status-plan.md (D3), one commit on the local fix/context-budget-status branch; nothing pushed. Side actions: HANDOFFS.md retention trim + fold, push fork main at close-out. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
rmsharp
added a commit
to rmsharp/methodology
that referenced
this pull request
Sep 21, 2026
…package) Phase 1B claim. CHANGELOG entry (in progress) + HANDOFFS.md status: pending receipt, plus the Phase 0 dashboard history row this session's own run appended. Phase 0: CHANGELOG frontier = HEAD 304084d, gap empty; HANDOFFS frontier 68fd86d, the one commit after it is S211's announced push record. No pending stub, 2 receipts before this one; nothing backfilled. Gate citation re-run in a --no-local clone with HEAD asserted by sha: 11/11 - results 10575dac7361 - manifest 01a4ae7aa511, S211's citation exactly. Dashboard 76/100, medium, 0 high+. Upstream 0 open issues; KJ5HST#83, KJ5HST#84, KJ5HST#85 open, 0 reviews, only our comments. main = origin/main = 304084d; upstream/main 6b29d3d; fix/context-budget-status = c299c30. Operator picker: deliverable = P3 of docs/planning/context-budget-status-plan.md (vet and package); nothing pushed or opened. Side actions: HANDOFFS.md retention trim + fold, push fork main at close-out. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
rmsharp
added a commit
to rmsharp/methodology
that referenced
this pull request
Sep 21, 2026
…and the trial merges recorded docs/planning/context-budget-status-pr-body.md: the title and body for the context_budget.py PR, fork-only header marking it NOT POSTED. Every figure was measured this session; outward-text jargon scan 0 hits. Frozen here before the operator's review. CHANGELOG.md: two entries. d4dbc26 on the local branch fix/context-budget-status (upstream's tests-sh-passed 139 -> 141, context-budget-unit-tests 118 -> 129; fetched back as a fast-forward, not pushed), and the trial merges against KJ5HST#84, KJ5HST#85 and KJ5HST#83, each run through upstream's ratchet on the merge result: all green. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
rmsharp
added a commit
to rmsharp/methodology
that referenced
this pull request
Sep 21, 2026
and amended by the operator's review HANDOFFS.md: the S212 receipt completed (status: complete, self 7, predecessor 9); bin/check-handoff OK. CHANGELOG.md: the close-out entry with the Phase 3A evaluation of S211's handoff, the 3B self-assessment and the 3C note (no fork-learnings row; D3's retirement obligation does not arise). docs/planning/BACKLOG.md: an unbalanced ** in BL-80's index row, introduced in b6814a2, fixed. P3 = d4dbc26 on the local branch fix/context-budget-status (not pushed): upstream floors 141/129; trial merges vs KJ5HST#84/KJ5HST#85/KJ5HST#83 green on the merge results. The PR body (e4ad63d) was not approved; the operator added D6 (refused-argument messages answer the intent; --check = --status) and D7 (status precedence) to the same PR. Next: the plan's P2b. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
rmsharp
added a commit
to rmsharp/methodology
that referenced
this pull request
Sep 21, 2026
…ument messages and --check) Phase 1B claim. CHANGELOG entry (in progress) + HANDOFFS.md status: pending receipt. Phase 0: CHANGELOG frontier = HEAD 00b8685, gap empty; HANDOFFS frontier b3b1f3a, the one commit after it is S212's announced push record. No pending stub, 2 receipts before this one; nothing backfilled. Gate citation re-run in a --no-local clone at 00b8685: 11/11 - results 10575dac7361 - manifest 01a4ae7aa511, S212's citation exactly. Dashboard 76/100, medium, 0 high+ (run in the clone, so no history row). Upstream 0 open issues; KJ5HST#83, KJ5HST#84, KJ5HST#85 open, 0 reviews, only our comments. main = origin/main = 00b8685; upstream/main 6b29d3d; fix/context-budget-status = d4dbc26. Operator picker: deliverable = P2b of docs/planning/context-budget-status-plan.md (D6); nothing pushed or opened. Side actions: HANDOFFS.md retention trim + fold, push fork main at close-out. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
rmsharp
added a commit
to rmsharp/methodology
that referenced
this pull request
Sep 21, 2026
…in one session (D7, then re-vet and re-package) Phase 1B claim. CHANGELOG entry (in progress) + HANDOFFS.md status: pending receipt. Phase 0: CHANGELOG and HANDOFFS frontiers both = HEAD 2c711ab, gap empty. No pending stub, 2 receipts before this one; nothing backfilled. Gate citation re-run in a --no-local clone at 2c711ab: 11/11 - results 10575dac7361 - manifest 01a4ae7aa511, S213's citation exactly. Dashboard 76/100, medium, 0 high+ (run in the clone, so no history row). Upstream 0 open issues; KJ5HST#83, KJ5HST#84, KJ5HST#85 open, 0 reviews, only our comments. main 1 ahead of origin/main (8089df7); upstream/main 6b29d3d; fix/context-budget-status = 612570b. Operator picker: deliverable = P2c then P3' of docs/planning/context-budget-status-plan.md, one session (rules at :600); nothing pushed upstream or opened. Side actions: HANDOFFS.md retention trim + fold, the plan's stale :668 sentence fixed in P3''s records, push fork main at close-out. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
rmsharp
added a commit
to rmsharp/methodology
that referenced
this pull request
Sep 21, 2026
… on it, P5's stale --check line corrected P3' of docs/planning/context-budget-status-plan.md, in the same session as P2c (the operator's decision, 2c711ab). New floors on the LOCAL branch fix/context-budget-status: c1167ae (tests-sh-passed 141 -> 142, context-budget-unit-tests 129 -> 140), fast-forward 2f73733..c1167ae, not pushed; fresh clone 10/10 - results 8a465ec9a35d. Trial merges from c1167ae, merged for real, the ratchet on each result: KJ5HST#84 clean, 10/10 - e1b3029504e8, bin/tests.sh 166/0; KJ5HST#85 CHANGELOG only, 11/11 - 91e29f97f572; KJ5HST#83 CHANGELOG only, 10/10 - 8a465ec9a35d. docs/planning/context-budget-status-pr-body.md is rewritten from the draft reviewed at S212 (git show e4ad63d:...), every figure re-measured this session; jargon scan 0 hits, bin/check-links OK. Not posted. The plan gains a P3' outcome block and its status line; P5's "--check now exits 3" (false since D6) is corrected, as approved at the Phase 0 picker. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
rmsharp
added a commit
to rmsharp/methodology
that referenced
this pull request
Sep 21, 2026
…one session (2f73733, c1167ae); the PR body approved as written HANDOFFS.md receipt completed (self 9, predecessor 9) and the close-out ledger entry with the Phase 3A evaluation of S213's handoff and the 3B self-assessment. P2c is 2f73733 and P3''s floors c1167ae on the LOCAL branch fix/context-budget-status (not pushed); trial merges with KJ5HST#84, KJ5HST#85, KJ5HST#83 green under the ratchet; the rewritten body (fb324d6) approved as written, recorded e12cf47. Branch tip 10/10 - results 8a465ec9a35d; fork gates unchanged, 11/11 - results 10575dac7361. Phase 3C: no fork-learnings row. Next: the plan's P4 (push the branch, open the PR), its own go-ahead. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
rmsharp
added a commit
to rmsharp/methodology
that referenced
this pull request
Sep 21, 2026
… branch and open the upstream PR with the approved text Phase 1B claim. CHANGELOG entry (in progress) + HANDOFFS.md status: pending receipt. Phase 0: CHANGELOG frontier = HEAD 58f5d34, gap empty; HANDOFFS frontier 1b5365e, the one commit after it S214's announced push record. No pending stub, 2 receipts before this one; nothing backfilled. Gate citation re-run in a --no-local clone at 58f5d34: 11/11 - results 10575dac7361 - manifest 01a4ae7aa511, S214's citation exactly. Dashboard 76/100, medium, 0 high+ (run in the clone). Upstream 0 open issues; KJ5HST#83, KJ5HST#84, KJ5HST#85 open at unchanged heads, 0 reviews, only our comments. main = origin/main = 58f5d34; upstream/main 6b29d3d; fix/context-budget-status = c1167ae, not on origin. Operator picker: deliverable = P4 of docs/planning/context-budget-status-plan.md (push the branch to fork origin, open the PR with the approved text). Side actions: HANDOFFS.md retention trim + fold, push fork main at close-out. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
rmsharp
added a commit
to rmsharp/methodology
that referenced
this pull request
Sep 22, 2026
…ove to Completed items, and .context-budget.json's unwired "refused" sentence Phase 1B claim. CHANGELOG entry (in progress) + HANDOFFS.md status: pending receipt. Phase 0: CHANGELOG frontier = HEAD 68160ba, gap empty; HANDOFFS frontier 78cb080, the one commit after it S215's announced push record. No pending stub, 2 receipts before this one; nothing backfilled. Gate citation re-run in a --no-local clone at 68160ba: 11/11 - results 10575dac7361 - manifest 01a4ae7aa511, S215's citation exactly. Dashboard 76/100, medium, 0 high+ (run in the clone). Upstream 0 open issues; KJ5HST#83, KJ5HST#84, KJ5HST#85, KJ5HST#86 open at unchanged heads, 0 reviews, only our comments. main = origin/main = 68160ba; upstream/main 6b29d3d. Operator picker: deliverable = BL-78's closing edits (decided S206). Side actions: HANDOFFS.md retention trim + fold, push fork main at close-out. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
rmsharp
added a commit
to rmsharp/methodology
that referenced
this pull request
Sep 22, 2026
…se example (the ratchet it says does not exist is context_budget.py --precommit) A new open item: index row after BL-81, BL-83 on the Open: list, detail block at the end of BACKLOG-DETAIL.md. Written from what closing BL-78 already measured (--precommit refused a staged growth, exit 2, and passed a shrink, exit 0); nothing further measured. An item rather than a fix: docs/FORK_LEARNINGS.md:19-20 allows only compaction as an edit to an existing row, and D1 (CLAUDE.md:45) names no false-row case. Three shapes recorded, none costed. Operator's choice at the picker: raise a backlog item. Verified: BACKLOG-DETAIL.md.verify.sh C1-C5 OK; bin/check-links OK. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
rmsharp
added a commit
to rmsharp/methodology
that referenced
this pull request
Sep 22, 2026
…atchet exists, unwired); BL-83 raised; nothing upstream-facing HANDOFFS.md receipt completed (status: complete, self 8, predecessor 9) and the close-out ledger entry with the Phase 3A/3B evaluations. Deliverable: BL-78's closing edits (2674c95). Found on the way and recorded on the operator's choice: BL-83 (38e4e11), fork Learning KJ5HST#85's false example. Supporting: 461e38b claim, 1c1c4e3 + 2701247 HANDOFFS trim and fold. Gate citation, fork main clone of 38e4e11: quality_ratchet 11/11 pass - results 10575dac7361 - manifest 01a4ae7aa511, identical to Phase 0. Next: the maintainer's review of KJ5HST#83-KJ5HST#86 (P5 after KJ5HST#86 merges); failing a reply, planning BL-66 (upstream-bound, opens nothing). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
rmsharp
added a commit
to rmsharp/methodology
that referenced
this pull request
Sep 22, 2026
…vs BOOTSTRAP.md's --source=local advice Phase 1B claim. CHANGELOG entry (in progress) + HANDOFFS.md status: pending receipt. Phase 0: CHANGELOG frontier = HEAD f853edd, gap empty; HANDOFFS frontier 01116c6, the one commit after it S216's announced push record. No pending stub, 2 receipts before this one; nothing backfilled. Gate citation re-run in a --no-local clone at f853edd: 11/11 - results 10575dac7361 - manifest 01a4ae7aa511, S216's citation exactly. Dashboard 76/100, medium, 0 high+ (run in the clone). Upstream 0 open issues; KJ5HST#83, KJ5HST#84, KJ5HST#85, KJ5HST#86 open at unchanged heads, 0 reviews, only our comments. main = origin/main = f853edd; upstream/main 6b29d3d. Operator picker: deliverable = plan BL-66. Side actions: HANDOFFS.md retention trim + fold, raise BL-84 (seed CLAUDE.md warn line vs mandatory purpose fence, relayed from mts-system S143), push fork main at close-out. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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.
The gate stopped running, and nothing said so
.githooks/pre-commitskips replayed commits by testing five markers under the git dir:Git leaves
REBASE_HEADbehind when a rebase that stopped — a conflict, or-iparked atedit— runs to completion. It is not cleaned up at the end of the operation. From that moment thehook exits 0 on every commit in that clone, for the life of the clone.
The marker loop runs before both gates the hook chains, so the casualty is not only the
failure-mode-#27 ledger gate but
quality_ratchet.py --precommit, whose whole job is refusing aloosened threshold. Both then read green — because neither one ran. A hook is the one gate nothing
else watches, and it fails open: its failure mode is silence, not red.
The shape was chosen by measuring git, not by weighing plausible fixes
Every operation in the marker list was run to completion on git 2.50.1 and its markers observed at
each stage. Two facts decided the patch:
REBASE_HEADis the only marker that leaks.MERGE_HEAD,CHERRY_PICK_HEAD,rebase-mergeand
rebase-applyare all removed when their operation ends or is aborted — so none of themneeds the same treatment, and the fix stays one line wide.
rebase-mergeon themerge backend,
rebase-applyon--applyandgit am. DroppingREBASE_HEADtherefore costsno in-progress coverage; the skip still fires for every state that is genuinely mid-operation.
A third measured fact explains how this survives review: a clean rebase leaks nothing. Only a
rebase that stopped arms the trap, which is why a hook can be correct-looking, enabled, and silently
dead for weeks.
What ships
REBASE_HEADdropped from the marker list, with the measurement recorded in a commentbeside it so the next reader does not re-litigate it.
.githooks/pre-commit --selftest— 10 checks, on the existing.githooks/commit-msg --selftestprecedent: the gate refuses / passes / skips correctly, a stale
REBASE_HEADis still refused,and each genuinely in-progress state is still skipped.
pre-commit-selftestgate in.quality-gates.json, modelled on thecommit-msg-selftestentry beside it. Adding a gate always passes the ratchet; no threshold moved, and
bin/tests.shis unchanged.Evidence
RED-first. The same ten checks against the unfixed marker list go red on exactly one and
green on the other nine — the test isolates the defect rather than being vacuously red. 0 red after.
10 mutants, 10 killed: restore
REBASE_HEAD; drop each of the four remaining markers;-e→-f(which stops matching the two directories); delete the loop; short-circuit the ledger gate; and two
that break the selftest's own fixture builder.
End-to-end against real git, not planted files. A real conflicted rebase was stopped, resolved
and completed;
REBASE_HEADwas confirmed on disk afterwards. With the fix, a commit with no ledgerline is refused (exit 1, asserted bare — a pipe would clobber it), the same commit with the
ledger co-staged passes, and a commit taken during a genuine in-progress rebase is still
skipped. The control matters as much: in that identical scenario the unfixed hook lets the
unledgered commit straight through.
The selftest's own two hazards were closed before it was trusted. Each probe repo is built with
git init --template=, so a user'sinit.templateDircannot install its hooks into the probe andanswer for the hook under test; and each fixture is asserted to have actually built — a probe
against a repo that failed to build answers about nothing, and would do it in green.
Measured in a
--no-localclone with HEAD asserted by sha, before and after (the working treeis not the surface: one unit test there depends on local transcript data and fails in a working
tree while skipping in every clone).
Before, at
6b29d3d:bin/tests.sh139 passed / 0 failed; gates10/10 pass · 0 fail · 0 unmeasured · results 6542e640a956 · manifest 97a7aab85b9a— which is thesame
resultshash the newest receipt onmainalready cites, so the baseline is the one thisrepository last recorded.
After:
bin/tests.sh139 passed / 0 failed, unchanged; gates11/11 pass · 0 fail · 0 unmeasured · results acddacb93988 · manifest ec617cec62ed, the eleventhbeing the new one.
Scope
.githooks/is not inbin/_manifest.py, so no adopter is synced these files and nothingdistributed changes here. But
SAFEGUARDS.md— which is distributed — points adopters at this fileas "the canonical reference implementation" and tells them to enable it, so an adopter who followed
that instruction copied this defect too. That is the argument for fixing it here rather than
locally: the reference implementation is what people copy.
🤖 Generated with Claude Code