Skip to content

The ledger gate stops running after any stopped rebase: drop the marker git leaves behind, and gate the hook on its own selftest - #85

Merged
KJ5HST merged 1 commit into
KJ5HST:mainfrom
rmsharp:fix/pre-commit-stale-rebase-marker
Oct 1, 2026
Merged

KJ5HST merged 1 commit into
KJ5HST:mainfrom
rmsharp:fix/pre-commit-stale-rebase-marker

Conversation

@rmsharp

@rmsharp rmsharp commented Sep 20, 2026

Copy link
Copy Markdown
Collaborator

The gate stopped running, and nothing said so

.githooks/pre-commit skips replayed commits by testing five markers under the git dir:

for marker in MERGE_HEAD REBASE_HEAD CHERRY_PICK_HEAD rebase-merge rebase-apply; do

Git leaves REBASE_HEAD behind when a rebase that stopped — a conflict, or -i parked at
edit — runs to completion. It is not cleaned up at the end of the operation. From that moment the
hook 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 a
loosened 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:

  1. REBASE_HEAD is the only marker that leaks. MERGE_HEAD, CHERRY_PICK_HEAD, rebase-merge
    and rebase-apply are all removed when their operation ends or is aborted — so none of them
    needs the same treatment, and the fix stays one line wide.
  2. It is redundant. Every rebase in progress carries a directory too — rebase-merge on the
    merge backend, rebase-apply on --apply and git am. Dropping REBASE_HEAD therefore costs
    no 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

  • The fix: REBASE_HEAD dropped from the marker list, with the measurement recorded in a comment
    beside it so the next reader does not re-litigate it.
  • .githooks/pre-commit --selftest — 10 checks, on the existing .githooks/commit-msg --selftest
    precedent: the gate refuses / passes / skips correctly, a stale REBASE_HEAD is still refused,
    and each genuinely in-progress state is still skipped.
  • A pre-commit-selftest gate in .quality-gates.json, modelled on the commit-msg-selftest
    entry beside it. Adding a gate always passes the ratchet; no threshold moved, and
    bin/tests.sh is 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_HEAD was confirmed on disk afterwards. With the fix, a commit with no ledger
    line 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's init.templateDir cannot install its hooks into the probe and
    answer 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-local clone with HEAD asserted by sha, before and after (the working tree
    is 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.sh 139 passed / 0 failed; gates
    10/10 pass · 0 fail · 0 unmeasured · results 6542e640a956 · manifest 97a7aab85b9a — which is the
    same results hash the newest receipt on main already cites, so the baseline is the one this
    repository last recorded.
    After: bin/tests.sh 139 passed / 0 failed, unchanged; gates
    11/11 pass · 0 fail · 0 unmeasured · results acddacb93988 · manifest ec617cec62ed, the eleventh
    being the new one.

Scope

.githooks/ is not in bin/_manifest.py, so no adopter is synced these files and nothing
distributed changes here. But SAFEGUARDS.md — which is distributed — points adopters at this file
as "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

…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
… an identity, and a guard in the wrong unit

Phase 3C. Row KJ5HST#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) KJ5HST#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 KJ5HST#87 does not touch), KJ5HST#85 and KJ5HST#86 (prose vs mechanism, where KJ5HST#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 KJ5HST#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
…nt diffs 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,
KJ5HST#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>
rmsharp added a commit to rmsharp/methodology that referenced this pull request Sep 27, 2026
…earning #96

docs/planning/BACKLOG.md 58,727 -> 35,296 B, 21,454 B under the 56,750 B
one-read budget it was 1,977 B over. Dashboard risk HIGH -> MEDIUM, High+ count
1 -> 0, health 76/100 unchanged. No outward action was taken and none was asked
for: nothing pushed, no branch touched, KJ5HST#83-KJ5HST#87 exactly as Phase 0 found them.

Phase 3A -- S222's handoff scored 9/10. Its "read the dry run's shard name rather
than predicting it" was the trap S221 fell into, and following it produced both
the right answer and a diagnostic nobody had seen (CUT_STRADDLES_DAY). Its byte
figure for the backlog became this session's deliverable and its acceptance
criterion, and both re-measured exactly. Missing: nothing about the fixture
coupling that was this session's largest hazard. Wrong: "CHANGELOG.md IS ~155 KB"
against 161,678 B measured, ~7 KB low, hedged and harmless.

Phase 3B -- self-assessed 9/10. The proof shape was decided from measurement, not
from the claim's recorded worry, whose premise turned out false and is stated
rather than dropped. Every referrer was enumerated before editing, which found the
C4 coupling. All five checks proved killable, including redoing an invalid
mutation of my own. The reduction was made durable by moving the editing rule.
Self-caught slips: a [[wiki]] link in the receipt stub, a grep -c against indented
rows, a git checkout -- that invalidated one mutation run. Operator corrections to
the work: 0. One instruction added (task picker at Phase 0), applied same session.

Phase 3C -- fork Learning #96 appended (1,497 B; 82 rows, contiguous 15..96). D3's
retirement is owed and is REFUSED with the rows named and the criterion tested
against each -- and this is the THIRD CONSECUTIVE REFUSAL (S221, S222, S223),
flagged here rather than left to be noticed. KJ5HST#24: criterion (a) tested, not
assumed -- Test 29 was rewired to read live + archives at S87, but that mechanizes
one instance, not the rule; this session enumerated consumers by hand and found
one no test covers, which is #96. KJ5HST#26: its example is now falsified for this very
file, but a stale example is never a ground and its method is ungated. KJ5HST#31, KJ5HST#41,
KJ5HST#15, KJ5HST#78, KJ5HST#58, KJ5HST#85 each considered with its reason. No later row states any at
least as generally; every row's artifact exists.

Phase 3E -- gate citation from a --no-local clone of 27b1c33: quality_ratchet
11/11 pass - 0 fail - 0 unmeasured - results 10575dac7361 - manifest
01a4ae7aa511, exit 0, identical to Phase 0's at 73157d0. bin/tests.sh 343 passed /
0 failed / 6 skipped three times. check-handoff and --all OK; the receipt was
refused four times on the 12,288 B per-record budget and row #96 three times on
the 1,500 B row budget -- both cut shorter rather than raised.

Two findings recorded, not fixed (FM KJ5HST#17): the replaced heading named 19 of the 33
rows present; .context-budget.json:73's structure.why claims its pattern matches
"the 19 open-item rows and NOT the Completed items table" where today it matched
53 and 10.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
rmsharp added a commit to rmsharp/methodology that referenced this pull request Sep 27, 2026
…ream

Phase 1B claim. CHANGELOG entry (in progress) + HANDOFFS.md status: pending
receipt, plus the dashboard's history row from Phase 0.

Deliverable chosen at the Phase 0 task picker over three alternatives: BL-83
(fork Learning KJ5HST#85's false example), BL-84 (the seed's fixed warn line versus
its mandatory purpose fence) and BL-81 (.context-budget.json's three-places
stale sizes). P6 of the BL-66 plan is that plan's next phase but is still
blocked on KJ5HST#87's merge, so it was stated as blocked rather than offered.

Scope, stated explicitly: one branch based on upstream/main carrying the
re-derived §Without bin/sync rules, plus a drafted pull-request body under
docs/planning/. Opening the pull request is NOT in scope and is its own
go-ahead -- BL-85's own record says "Outward-facing in every shape but (d):
its own go-ahead. Decision first." Five pull requests already sit unreviewed
with 0 reviews.

Measured before claiming, at HEAD c5e311d:

  * grep -c 'never overwrite' starter-kit/BOOTSTRAP.md -- 2 on fork main and
    origin/main; 0 on upstream/main (6b29d3d) and on all five open PR heads
    (219fb9d, 77afc12, e2501c5, c1167ae, 67feb9f). BL-85's S218 measurement
    re-confirmed, now including KJ5HST#87's head, which did not exist when it was
    taken.
  * BL-85 warns rule 1's table must be re-derived because the manifests
    differ. They differ, but not there: bin/_manifest.py's DISTRIBUTION list
    is IDENTICAL across the two trees -- same 11 tracked starter-kit entries,
    same 6 seeds, same docs/methodology/ set, same order. Every difference is
    in comments or in STALE_FORMAT_MARKERS. Rule 1's table ports unchanged.
  * Rule 2 is the half that cannot port verbatim: it cites "ledger-format: 2"
    and the seed's pointer to FRAMEWORK_APPARATUS.md §The Action Ledger. On
    upstream/main the markers are "Authoritative Action Ledger"/"Handoff
    Receipts" and FRAMEWORK_APPARATUS.md has 0 occurrences of "Action Ledger".
    Both arrive with KJ5HST#84 (77afc12 adds ## The Action Ledger at :338).
  * Rule 3 ports unchanged: upstream/main's bin/status emits exactly the five
    strings the rule names (:95, :98, :102, :103, :106).
  * KJ5HST#84 does not touch §Without bin/sync -- its BOOTSTRAP.md hunks are the
    tree diagram, :73, :84 and two file tables. Conflict to be measured with
    git merge-tree, not predicted.

Phase 0: CHANGELOG frontier = HANDOFFS frontier = HEAD c5e311d, both gaps
empty. 2 receipts before this one, none pending; nothing backfilled. Gate
re-run in a --no-local clone at c5e311d: 11/11 pass - results 10575dac7361 -
manifest 01a4ae7aa511, S223's citation exactly, one commit later; suite 343
passed, 0 failed. context_budget.py --precommit exit 0. Dashboard 76/100, risk
MEDIUM, High+ 0 -- S223's extraction held. Upstream 0 open issues; KJ5HST#83-KJ5HST#87 all
open at unchanged heads, all MERGEABLE/CLEAN, 0 reviews, only our own two
comments. main level with origin/main; .git/REBASE_HEAD absent and
core.hooksPath is .githooks, so the hooks are armed.

Side action owed by the retention policy, not a picker item: this claim makes
three receipts, so the HANDOFFS.md trim and its fold follow the Phase 0 report.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
rmsharp added a commit to rmsharp/methodology that referenced this pull request Sep 27, 2026
… and body, nothing sent

Records the S224 deliverable on fork main. The branch itself is
fix/bootstrap-never-overwrite-rules, tip a88fce7, based on upstream/main
6b29d3d; this commit is its fork-side record, not its content.

Four files: the drafted pull-request body, BL-85's detail status paragraph,
BL-85's index row, and this ledger entry. Nothing outward was done -- no push,
no pull request, no comment. BL-85's four shapes remain open and remain the
operator's.

Two of BL-85's own three "before it goes up" warnings came back different from
what it predicted:

  * Rule 1's table needs NO re-derivation. bin/_manifest.py's DISTRIBUTION list
    is identical across the two trees; the manifests differ only in comments and
    STALE_FORMAT_MARKERS.
  * The half that could not port is rule 2, which BL-85 does not flag: it cites
    ledger-format: 2 and FRAMEWORK_APPARATUS.md §The Action Ledger, and
    upstream/main has neither. Rewritten to point at the existing "Updating an
    existing project..." paragraph instead of restating it, which is what makes
    it survive KJ5HST#84 untouched.
  * Rule 3 ports verbatim; its five verdicts were read from upstream's
    bin/status (:95, :98, :102, :103, :106).

Conflicts measured with git merge-tree and then re-run as real merges: KJ5HST#84
77afc12 is CLEAN including BOOTSTRAP.md, merged tree 163/0, gates 10/10. KJ5HST#83,
KJ5HST#85, KJ5HST#86, KJ5HST#87 collide in CHANGELOG.md only; KJ5HST#87's merged tree runs 188/0 with
its own raised floor met exactly, gates 10/10, results 2162213f5332 -- the
hashes KJ5HST#87 cites. This branch adds no tests and moves no floor.

Recorded and not fixed (FM KJ5HST#17): §Setup with bin/sync's prose at :74 omits
three installed executables and two seeds, stale against the manifest. Named
in the body's "Deliberately not in this pull request".

All three docs/planning/ proofs re-run green; check-links OK at 111.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
rmsharp added a commit to rmsharp/methodology that referenced this pull request Sep 27, 2026
…ng #97

Deliverable: branch fix/bootstrap-never-overwrite-rules (a88fce7, LOCAL ONLY)
carrying the three ledger-protection rules re-derived against upstream/main,
plus the drafted pull-request body. Nothing outward happened -- no push, no
pull request, no comment. BL-85's four shapes remain open and the operator's.

Phase 3A: predecessor S223 scored 9/10. Its shard-name prediction was exactly
right and it still said to read the dry run; three of its gotchas were load-
bearing. Its "index 28 rows" is wrong -- the table holds 61 -- and this
session incremented it to 29 and published that before measuring, which is
what keeps it off 10.

Phase 3B: self 8/10. Every claim was measured on a tree that was actually
built -- branch 139/0, merged with KJ5HST#84 163/0, merged with KJ5HST#87 188/0, the
counterparty's gate run on the merge rather than a grep. Against that, two
accuracy defects in one session, both self-inflicted: the inherited row count
published as a measurement, and a body paragraph saying "four" of six and
inferring a claim the acceptance test does not make.

Phase 3C: fork Learning #97 appended (1,492 B) -- an item's own "before it
goes up" warnings are a sample of what will not port, never a partition of
it. D3's retirement is owed and is REFUSED, rows named and tested. This is
the FOURTH CONSECUTIVE REFUSAL and is now a standing signal about the rule
rather than an incident. KJ5HST#22 is the nearest miss: the two .verify.sh C4
reachability checks do mechanize its lesson for the backlog, but criterion
(a) names a .quality-gates.json gate, a bin/tests.sh test or a numbered
failure mode, and grep -c 'verify.sh' bin/tests.sh is 0. KJ5HST#55 is cited by #97
and not stated as generally by it. KJ5HST#94, KJ5HST#61, KJ5HST#58, KJ5HST#24 -- no gate, artifacts
live. KJ5HST#85 -- known false (BL-83); wrongness is not a ground.

check-handoff and --all OK, receipt 0 over its 12,288 B budget; every line
citation in it re-verified against the tree it names.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
rmsharp added a commit to rmsharp/methodology that referenced this pull request Sep 27, 2026
…ample

Phase 1B: the (in progress) CHANGELOG.md entry, a status: pending receipt in
HANDOFFS.md, and Phase 0's dashboard_history.jsonl row.

Deliverable chosen at the Phase 0 task picker over BL-84, the two carried
FM KJ5HST#17 findings, and a decision pass on BL-81/79/77/74. P6 of the BL-66 plan
is still blocked on KJ5HST#87's merge, so it was stated as blocked, not offered.

Three things measured at Phase 0 rather than carried from the receipts:

- The CHANGELOG.md trim trigger fires (203,621 B vs 196,608 B) and the
  standing rule -- recorded in that file after the 2026-09-14 decision ran
  out at S196 -- says the trigger alone is not a reason to trim; the trim is
  raised as the file approaches the 262,144 B read refusal, 58,523 B away.
  S224's next steps (0) and (9) asked for it on the trigger alone. Not taken.
- .quality-gates-results.json is untracked, not stale at 431279b.
- bin/check-learnings needs --file docs/FORK_LEARNINGS.md; the bare form the
  receipts cite reads the distributed file and fails on contiguity. With the
  path: 83 rows, contiguous 15..97, 0 over the 1,500 B row budget.

Receipts go 2 -> 3, so the retention trim is owed as its own next action.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
rmsharp added a commit to rmsharp/methodology that referenced this pull request Sep 27, 2026
…etires -- the first retirement under D1(b)

BL-83, shape (1) of three, chosen by the operator after all three were costed
against measurements.

Row KJ5HST#85 said the .context-budget.json ratchet "does not exist". It does:
def precommit, starter-kit/context_budget.py:1000, byte arm :1037. It is
unwired in this clone, which is a different thing. Re-measured rather than
inherited from S216, in a --no-local clone at 28c24d3: nothing staged exit 0;
a staged growth of starter-kit/SESSION_RUNNER.md gave context-budget: REFUSED
and exit 2; a staged shrink exit 0.

D1(b) citation: #98 states KJ5HST#85's lesson at least as generally -- grep for the
behaviour a note asserts, not the fields it names -- and corrects the example.
KJ5HST#85's own Repair says to grep every field the note names; S201 did that and
reached the opposite answer, because the claim rests on max_bytes, a field the
note never names. That is the generalization.

First row ever retired, and the first use of D2's reserved-gap mechanism:
docs/archive/FORK_LEARNINGS-retired.md did not exist before this commit and the
live file carried 0 reserved lines. D3 is satisfied by the retirement itself,
so this close-out owes no fifth consecutive refusal; #98 is both the deliverable
and the Phase 3C learning.

Row KJ5HST#86 asserts KJ5HST#85's false premise in its own text and stays live -- its own
lesson is sound and it meets none of D1's criteria. #98 names the inheritance.

Not a reduction, and said so: 104,339 -> 104,875 B, net +536 B.

Proof: KJ5HST#85 byte-identical across the move (cmp clean, 1,470 B); retained rows
diff empty; check-learnings OK, 83 rows contiguous 15..98, no checker change;
the negative control fails with "missing KJ5HST#85"; check-links OK 111.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
rmsharp added a commit to rmsharp/methodology that referenced this pull request Sep 27, 2026
… predecessor scored 7

Phase 3A-3F. The receipt in HANDOFFS.md goes status: complete.

Deliverable: fork Learning #98 corrects KJ5HST#85 and KJ5HST#85 retires under D1(b)
(18d4034) -- the first row ever retired and the first use of D2's reserved-gap
mechanism. D3 is satisfied by the retirement itself, ending four consecutive
refusals. BL-83 stays open for its pointer row alone; that is BL-86.

Verified in a --no-local clone at 2f17170, exit codes read outside a pipe:
bin/tests.sh 343 passed / 0 failed / 6 skipped, exit 0, exactly the floor;
quality_ratchet: 11/11 pass, 0 fail, 0 unmeasured, results 10575dac7361,
manifest 01a4ae7aa511, exit 0 -- Phase 0's hashes unchanged, which is correct
for doc-only edits.

S224's handoff scored 7: its trim forecast was exact and saved time, but its
top two next steps asked for a trim a standing rule forbids on that ground, and
two of its gotchas were wrong (the untracked results file, the check-learnings
invocation). Recorded so it can be corrected, not carried a third time.

Also in this commit: five line numbers in the receipt's first draft were wrong
and were corrected by resolving all sixteen; BL-83's row cited
docs/FORK_LEARNINGS.md:97 for a row that is no longer in the live file, now
re-pointed at the archive; the CHANGELOG figure was measured after the fact
rather than predicted -- the prediction would have been 10 KB low.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
rmsharp added a commit to rmsharp/methodology that referenced this pull request Sep 28, 2026
Phase 3C. Appended: git log -- <path> simplifies history and drops commits
from the walk, so a per-commit classification is computed on a denominator
that silently excluded them -- the merge share of read-set growth bytes reads
2.6% by the default walk and 9.9% by --full-history (68 vs 124 commits).
Sibling of #102 with a different mechanism, and a different remedy.
1,431 B / 1,500 B; table contiguous 15..103, 88 rows.

RETIRED NOTHING, DELIBERATELY, rows named in the ledger entry: KJ5HST#87 (closest --
its token half IS gated, its byte half is not), KJ5HST#88 and #99 (both confirmed
again, not superseded), KJ5HST#86 and #102 (adjacent, no gate). KJ5HST#85 was already
retired at S225. None meets criteria (a), (b) or (c).

Also corrects "374 lines" to 376 in two records: the count was taken before
three citation edits added two lines to the same file.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
KJ5HST pushed a commit that referenced this pull request Oct 1, 2026
…st (88 → 87 → 86 → 85 → 84), not #84 first

The operator proposed 88 → 87 → 84. Simulated in a scratch clone, both
orders give the same final tree except CHANGELOG.md: only merging the
PR with the newest entries first keeps a keep-both resolution
newest-on-top (84-first put #88's 09-26 entry below #87's 09-21 ones).
bin/tests.sh on the 88 → 87 → 84 tree: 212 passed, 0 failed. #86 and
#85 are slotted by the same date rule, not simulated.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AsJekmqmNAnsjcEcDNj3Yk
@KJ5HST
KJ5HST merged commit a9946c6 into KJ5HST:main Oct 1, 2026
KJ5HST pushed a commit that referenced this pull request Oct 1, 2026
…lues — tests-sh-passed 215, context-budget-unit-tests 145, trimmer-unit-tests 124

Measured at d7768cb after merging #89, #88, #87, #86, #85, #84, #83
(--run 11/11, results 219197070a3b). Tightening only.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AsJekmqmNAnsjcEcDNj3Yk
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.

2 participants