Repository navigation
Conversation
…J5HST#7 + Phase 3F hook — issue KJ5HST#19 The v2.6 cycle produced three instances of one self-review failure mode that git-diff-only review cannot catch — the defect is an *absence* on the destination side: - "24 failure modes" stale-by-one after FM KJ5HST#25 appended on a sibling file - /diagnose and /grill-with-docs index rows understated their citation sites - /init aspirational citation: index claimed a destination that didn't cite back Formalize the heuristic (issue KJ5HST#19, placement option c — both an authoritative Learning row and a workflow hook): - Learning KJ5HST#7 "Cross-reference completeness at self-review" appended to the canonical "Learnings (added by sessions)" table (append-only). - One-line trigger in Phase 3F (Commit), alongside the existing debug-instrumentation removal gate, citing Learning KJ5HST#7. Reconciliation with the issue: option (a) named ITERATIVE_METHODOLOGY.md §Knowledge Accumulation, but that section only *describes* the four accumulation mechanisms and §Session Learnings is a per-session close-out template — neither holds named-Learning rows. The actual canonical Learnings table is in SESSION_RUNNER.md, and Phase 3C routes canonical-repo framework learnings there. Both edits therefore land in SESSION_RUNNER.md (one file). Self-reviewed with the discipline it documents: the "(Learning KJ5HST#7)" reference resolves to the new row; growing the table 6->7 drifts no current-count claim (the only count mentions are dated changelog deltas and frozen docs/planning audits, verbatim by design). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
rmsharp
added a commit
to rmsharp/methodology
that referenced
this pull request
Jun 19, 2026
…KJ5HST#17/KJ5HST#19 Adds the v2.7.2 changelog (CLAUDE.md Versioning bullet + README "What's New") covering the three PR-14-review fixes that ship without their own version notes: KJ5HST#16 (PR KJ5HST#29, agent-level memory), KJ5HST#17 (PR KJ5HST#30, workstream skill-citation convention), and KJ5HST#19 (PR KJ5HST#31, cross-reference completeness Learning KJ5HST#7). Bumps the version line v2.7 -> v2.7.2. Merge-order dependency: this note builds on v2.7.1 (PR KJ5HST#28, issue KJ5HST#15), so KJ5HST#28 must merge first. The CLAUDE.md version line + changelog anchor and the README What's-New anchor will need a trivial resolution against KJ5HST#28 at merge time (keep both the v2.7.1 and v2.7.2 entries; version line = v2.7.2). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…KJ5HST#17/KJ5HST#19 Adds the v2.7.2 changelog (CLAUDE.md Versioning bullet + README "What's New") covering the three PR-14-review fixes that ship without their own version notes: KJ5HST#16 (PR KJ5HST#29, agent-level memory), KJ5HST#17 (PR KJ5HST#30, workstream skill-citation convention), and KJ5HST#19 (PR KJ5HST#31, cross-reference completeness Learning KJ5HST#7). Bumps the version line v2.7 -> v2.7.2. Merge-order dependency: this note builds on v2.7.1 (PR KJ5HST#28, issue KJ5HST#15), so KJ5HST#28 must merge first. The CLAUDE.md version line + changelog anchor and the README What's-New anchor will need a trivial resolution against KJ5HST#28 at merge time (keep both the v2.7.1 and v2.7.2 entries; version line = v2.7.2). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
rmsharp
force-pushed
the
fix/issue-19-cross-reference-completeness-learning
branch
from
June 19, 2026 21:20
8a41a88 to
1cd93cb
Compare
rmsharp
added a commit
to rmsharp/methodology
that referenced
this pull request
Jun 19, 2026
…adox + taxonomy + phased execution) Planning-session deliverable for B1 (queued 2026-06-19). Evidence-based: grep inventory of SYNC_FILES/COLUMNS usage, the RS/CONTEXT_TEMPLATE cross-reference edges, and the README Option A/B scope discrepancy. Key finding beyond the queued notes: the link-topology paradox — cross-refs spanning the starter-kit/<->framework boundary cannot be verbatim-correct in both the canonical-repo and adopter layouts. Quantifies rewrite cost per placement; recommends RS+CONTEXT_TEMPLATE at adopter root (leaves the must-stay-byte-identical SESSION_RUNNER.md untouched). Phases B1 into 1 planning + 3 implementation sessions; flags the SESSION_RUNNER.md:62 ../docs/methodology bug and the PR KJ5HST#31 Learning-KJ5HST#7 numbering collision. Fork-only planning doc (origin/main); B1 execution branches come clean from upstream/main. Not implemented. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Owner
|
Merged into Resolved exactly as documented here: the v2.7.1 (#28) and v2.7.2 changelog/What's-New entries were unioned (both kept), and the version line set to v2.7.2. The Learning #7 row + Phase 3F hook in GitHub doesn't auto-mark a conflict-resolved manual merge as "Merged," so closing explicitly. Issue #19 is closed. Thanks @rmsharp. |
rmsharp
added a commit
to rmsharp/methodology
that referenced
this pull request
Jun 20, 2026
Keeps fork-only docs/planning commits; brings in Phase 1B/2B naming (KJ5HST#15), agent-level memory (KJ5HST#16), workstream citation convention (KJ5HST#17), Learning KJ5HST#7 + Phase 3F hook (KJ5HST#19), and v2.7.1/v2.7.2 release notes. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
rmsharp
added a commit
to rmsharp/methodology
that referenced
this pull request
Aug 1, 2026
…L-11/BL-12 raised Ledger entry, S22 receipt completed (status: pending -> complete), BL-10 retired to the Completed table, and two follow-ons filed. BL-11: unreachable non-Learning referents (the four Learnings Source rows, HOW_TO_USE.md's 'anti-pattern KJ5HST#31 in the original methodology', and BL-5 / Layer N tokens inside the adopter-installed dashboard). Gated on a maintainer decision, since the Learnings table is append-only and those rows are merged. BL-12: two verified defects found in the sweep but outside BL-10's scope -- RESEARCH_DOCUMENTATION_WORKSTREAM.md's '19 anti-patterns' where the list has 20 (self-contradicted at :306 in the same file), and the Learnings table's absent shape coverage, which upstream's own S5 receipt mutation-proved. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
rmsharp
added a commit
to rmsharp/methodology
that referenced
this pull request
Sep 5, 2026
…ed 9/10 The trim itself landed in 17753d9 as a standalone commit; this finalizes the receipt afterwards, which is the whole point — a frozen proof reads all three artifacts from the trim commit, so this edit is invisible to it. Result: docs/archive/HANDOFFS-through-2026-08-15.md.verify.sh is the first HANDOFFS losslessness proof in this repo that passes. Also here: Framework Learning KJ5HST#31 (30 rows, KJ5HST#14 still reserved) and BL-40, both from the same finding — the tool's default cut retained 2 receipts and silently made five of bin/tests.sh Test 34's assertions vacuous, because Test 34 reads its mutation anchors as ids[1]/ids[2] of the live ledger. The suite went 235/1 -> 229/6 and is back to 235/1 at --cut 3. Avoided, not fixed. CARVE-OUT BREACH, RECORDED: the claim declared zero distributed files, and Phase 3C's only home is starter-kit/FRAMEWORK_LEARNINGS.md, which is distributed. Learning kept — skipping a mandatory close-out step to protect a self-imposed scope note is the wrong trade, and the edit is append-only and local, so no operator gate is involved. The claim should have pre-declared it, as S93's did. Verified: 26 manifest rows, 6 files changed, one distributed. No outward-facing action: no PR, no push, no issue, no comment, no tag. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
rmsharp
added a commit
to rmsharp/methodology
that referenced
this pull request
Sep 5, 2026
…ated skip Option (b) of BL-40, canonical-only: bin/tests.sh is not in _manifest.py's 26 SOURCE rows, so no adopter receives this. Option (a) -- a retained-records floor in the distributed trimmer -- stays declined; the trimmer has no business knowing a test's fixture requirements. handoff_anchors returns "<count> <A1> <A2>" and cannot raise. anchor_disposition routes that count to MALFORMED / EMPTY / SHORT / ANCHORED, non-numeric arm FIRST so a garbled count cannot reach the permissive default. The SHORT arm emits six SKIP rows naming each unbuildable assertion and why; skip() counts separately from pass(), and the summary line carries the total -- routing an unbuildable assertion to pass() was the real hazard and nothing a reader watches would move. RED first against COPIED fixtures, never the live ledger: the pre-change body replayed at 1/2/3/4 receipts gave 2 passed/5 failed below the floor and 8/0 at or above it; after, 11/0/6 and 17/0/0. Zero receipts still FAILS -- corruption is not rotation. BL-40 and Learning KJ5HST#31 both said FIVE assertions stopped asserting. Six did; the sixth sat in a failed guard's then-branch and emitted no row at all. The pass delta (-6) never matched the failure delta (+5) and nobody subtracted. That correction is Learning KJ5HST#33. 9-mutant round, 9/9 killed, unmutated control green, each mutant verified to apply first. Suite 247/1/0, diffed row-for-row against a 236-row baseline: zero rows lost. Sole failure is Test 9's pre-existing --source=github 404, by name. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
rmsharp
added a commit
to rmsharp/methodology
that referenced
this pull request
Sep 5, 2026
…ification THE DELIVERABLE: docs/planning/read-cap-premise-correction-plan.md. A planning session -- nothing implemented, no numeral changed, no distributed file touched (FM KJ5HST#18/KJ5HST#19). Recommends A -> B -> C as three separate sessions and DECLINES the one-pass fix. THREE DEFECTS IN ONE DISTRIBUTED CONSTANT, separated because their remedies and risks differ. READ_CAP_LINES = 2000: its stated behaviour is false ("no error and no missing-data marker"), its unit is wrong (the cap is ~25,000 TOKENS), and its value is ~2.9x too permissive at this repo's ledger density. THE FINDING THAT DECIDED THE PLAN'S SHAPE, AND NO GREP FOR 2000 REACHES IT. LINE_FIRE_BELOW = 15 and LINE_STOP_ABOVE = 30 are denominated in RECORDS OF HEADROOM TO THE CAP. Run through the trimmer's own evaluate_trigger arithmetic at both ledgers' real baseline commits: at a corrected cap max possible headroom falls to 12 and 22 records against a >30 stop, so stops() = byte_ok and line_ok can never return true. AND stops() HAS EXACTLY ONE CALLER: choose_cut (:876-881) loops the retention count downward and `return 1` when nothing satisfies it -- so the next --write at every adopter would RETAIN ONE RECORD and archive the rest. S94 measured a cut to TWO taking bin/tests.sh from 235/1 to 229/6 (Learning KJ5HST#31); S96 corrected that to six assertions, not five (Learning KJ5HST#33). EVERY EXISTING TEST STAYS GREEN, because nothing evaluates the rate rule at a corrected cap. A session that "just fixes the number" ships that to every adopter. THE STRUCTURAL RESULT. DEFAULT_BUDGET_BYTES = 64*1024 = 65,536 B sits INSIDE the measured one-read band of 60,475-66,425 B. The framework already ships a guard on the right axis at very nearly the right value; the line cap is a redundant second guard on the wrong axis, firing ~3x late. This answers S38's residual 1, which methodology_dashboard.py:3001-3003 itself records as undecided. THE COMMENT'S OWN CITED BASIS REFUTES IT. git show 3aee4e3^:CHANGELOG.md is 2,090 lines / 186,704 B = 2.8-3.1x the token cap, so it had been truncating since roughly line 676-743. The constant records where the problem was NOTICED, not where it starts. FOUR PROBES, AND THE FOURTH FALSIFIED MY OWN FIRST DRAFT. 3,000 lines returned whole; 101 lines / 199,700 B cut at line 10 with a loud PARTIAL-view banner naming the next call; 2,000 lines of this repo's own ledger content cut at line 687 of 2,001. Then FRAMEWORK_LEARNINGS.md (65,520 B) returned WHOLE -- so the 2.419 B/token ratio does not transfer across content types (measured range 2.42-2.66), and a table asserting "two governed files already truncate" was withdrawn before it shipped. The plan therefore prescribes the METHOD, never a new numeral. THE INVENTORY CAUGHT THE PLAN ITSELF. Six blind search angles plus two adversarial critics, 301 sites across 30 files; every reported citation re-read and machine- verified before use (a subagent's citation is a claim until the line is read). A first draft written from one reader's grep named 19 sites; the completed sweep found live sites in TEN FURTHER FILES -- three of them DISTRIBUTED SEEDS, including the two that state the false claim as doctrine in a table (starter-kit/CHANGELOG.md:103, starter-kit/HANDOFFS.md:97) -- plus the line metric's own raison d'etre comment at methodology_trim.py:696. AND THOSE SEEDS CANNOT BE REPAIRED BY SYNCING. Both are SEED in bin/_manifest.py, and bin/sync:225-230 writes a SEED only when the dest is absent, never overwriting it afterward. A correction reaches FUTURE ADOPTERS ONLY; every already-bootstrapped project keeps the false doctrine permanently. Same defect class as BL-46/47/48, which is the substantive reason this batches with them rather than a scheduling convenience. THE SURFACE, named per SESSION_RUNNER.md's planning checklist: every DONE criterion is demonstrated on the local suites, AND THAT SURFACE CANNOT ENFORCE THE PROPERTY UNDER TEST. The three carriers are Python and cannot invoke the agent's Read tool; bin/tests.sh has ZERO READ_CAP references. No test in this repository can falsify a read-cap claim, so each phase requires Appendix A re-run in the implementing session with its output in the receipt. CARVE-OUT, re-derived off the SOURCE column after a first attempt hit the DEST column and read the root ledgers as distributed: all files touched here are canonical-only. NO ADOPTER RECEIVES ANYTHING. NO OUTWARD-FACING ACTION. Two questions left for the operator rather than decided: whether to annotate the design records (Sec 5.4), and ratification of A -> B -> C (Sec 7). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
rmsharp
added a commit
to rmsharp/methodology
that referenced
this pull request
Sep 5, 2026
…cored 8/10 Phase 3D receipt in HANDOFFS.md, 12,237 B inside the 12,288 B per-record budget -- reached in seven passes, each RUN against bin/check-handoff rather than estimated, every cut taken from the trailing prose where the checker says to cut. DELIVERABLE (c2bc56f): docs/planning/read-cap-premise-correction-plan.md, DRAFT awaiting ratification. Plus the forced close-out trim (9038e40) and BL-50/BL-51. TWO FINDINGS THIS SESSION DID NOT SET OUT TO MAKE, BOTH FROM CHECKING RATHER THAN REASONING. BL-50 -- the trimmer refuses a correct trim, and it is a DISTRIBUTED defect. insert_pointer (starter-kit/methodology_trim.py:940-950) appends "\n" + block when the front matter does not already end "\n\n"; L2's confinement proof (:582-586) removes only `block` and never that injected newline, so the reversal cannot restore the original bytes and the run dies reporting a losslessness failure THAT IS AN ARTIFACT OF ITS OWN INSERTION. Reproduced in isolation -- first difference at char 6126, the tool's own number -- rather than forced past with --force. Reachable because S109's compaction removed the trailing pointer blocks that used to end "\n\n". Worked around with a one-byte fork-side data edit; NOT with a standalone `---`, which would trip [ZONE_UNCLASSIFIED], BL-46's exact failure. BL-51 -- choose_cut is what makes the read-cap correction dangerous. stops() has exactly one caller, and choose_cut (:876-881) falls through to `return 1` when nothing satisfies it. So correcting READ_CAP_LINES alone would make every adopter's next --write retain ONE record. S94 measured a cut to TWO taking the suite from 235/1 to 229/6 (Learning KJ5HST#31). Every existing test stays green. METHOD NOTES WORTH MORE THAN EITHER FINDING. A ratio measured on one content type does not transfer to another (2.419 B/token from ledger content vs >=2.62 from prose), and probe D killed a self-consistent table this session had already drafted. A --check IS NOT A DRY RUN: it returns at :1698, before the L1/L2/L3 machinery, so it reports a green trigger for a trim that will refuse. And a subagent's citation is a claim -- 301 reported sites, every one re-read and verified against the file before use. PHASE 3C NOT DISCHARGED, structurally rather than skipped: starter-kit/FRAMEWORK_LEARNINGS.md is 16 B from its ceiling (BL-45) and no budget-conforming row fits. TWO LEARNINGS ARE EARNED AND OWED, recorded in the receipt's gotchas. VERIFICATION. Control 287 rows, 286 passed / 1 failed / 0 skipped; after the trim 287 rows, 286 / 1 / 0. Row-for-row, both populations asserted non-empty: ZERO status flips, ZERO skipped; the five differing rows each carry a derived count the trim legitimately moved. Sole failure both sides by name: `github source dry-run failed`, Test 9's standing 404. Trim losslessness three ways including an INDEPENDENT inverter modelling the declared link-rebase transform (Learning KJ5HST#37): 6 records, 6 byte-identical, 0 unexplained, none in both files. check-handoff OK; --all OK (4); check-links OK (88/22); check-learnings OK (37); trim --check silent; context_budget.py no file over a ceiling, bare exit 1 = WARN from the growth run alone (64 vs 10), ceiling-independent; BACKLOG-DETAIL.md.verify.sh OK (C1-C5). FM KJ5HST#28 GATE, MEASURED AFTER THE LAST WRITE. HANDOFFS.md 52,808 B (12,728 B clear), front matter 6,362 / 7,168 B; CHANGELOG.md 59,542 B before the close-out entry; FRAMEWORK_LEARNINGS.md 65,520 B (16 B free); BACKLOG.md 30,458 B. main is 61 ahead of origin/main; nothing pushed. The receipt deliberately does NOT state its own file's size -- a file cannot, without changing it (Learning KJ5HST#26); my first attempt was stale by 6 B as I wrote it. CARVE-OUT re-derived by importing DISTRIBUTION and reading the SOURCE column, after a first attempt grepped the bare filename and hit the DEST half of ("starter-kit/HANDOFFS.md", "HANDOFFS.md", SEED). Nothing this session touched is a manifest source. NO ADOPTER RECEIVES ANYTHING. NO OUTWARD-FACING ACTION. OPEN FOR THE OPERATOR: ratify or reject the plan's A -> B -> C (Sec 7), and answer Sec 5.4 (annotate the design records, or leave them?). BL-45 still blocks Phase 3C for the next session too. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
rmsharp
added a commit
to rmsharp/methodology
that referenced
this pull request
Sep 21, 2026
…lines, not records From the BL-82 measurement: git's merge=union kept real ledger entries whole but fused two real receipts into one block with two session: lines, exit 0, because receipts share their fence lines. Countermeasure: merge two real records from the ledger's history and run its checker; exit 0 is not "whole". 1,142 B. D3 discharged by explicit refusal: KJ5HST#31, KJ5HST#33, KJ5HST#41, KJ5HST#58 and KJ5HST#82 considered; none meets (a), (b) or (c). check-learnings: 76 rows, 15..90, 0 over budget. 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 KJ5HST#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 KJ5HST#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 KJ5HST#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 KJ5HST#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
Oct 17, 2026
…idate, draft 10 approved and held for PR5; receipt complete, the fork's gate run saved (BL-101) Receipt status: complete (predecessor 8, self 8); gate 18/18, 0 unmeasured, in a clean clone of 150e1bf; no fork learning row (D3 not triggered; rows KJ5HST#23, KJ5HST#19, KJ5HST#31 considered). Nothing sent to KJ5HST/methodology. Co-Authored-By: Claude Fable 5.1 <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.
Resolves #19.
Formalizes the v2.6 self-review heuristic — the failure mode that
git diff-only review structurally cannot catch, because the defect is an absence on the destination side. The three v2.6 instances the issue documents:CLAUDE.md"24 failure modes" stale-by-one after FM Fix SESSION_RUNNER 3C: route project learnings to CLAUDE.md, reserve SESSION_RUNNER table for framework learnings #25 was appended on a sibling file;/diagnoseand/grill-with-docsindex rows that understated their citation sites;/initaspirational citation — index claimed a destination that never cited back.What changed (issue placement option c — both)
Both edits land in
starter-kit/SESSION_RUNNER.md:## Learnings (added by sessions)table (append-only, the authoritative statement).Reconciliation with the issue (a cross-reference fix in itself)
Option (a) suggested a Learning row in
ITERATIVE_METHODOLOGY.md §Knowledge Accumulation. On inspection that section only describes the four accumulation mechanisms, and§Session Learningsis a per-session close-out template inside a fenced block — neither holds named-Learning rows. The actual canonical Learnings table is inSESSION_RUNNER.md, and Phase 3C explicitly routes canonical-repo framework learnings there. So both edits go toSESSION_RUNNER.md(one file, low blast radius).Fittingly, the issue's own citation (
§Knowledge Accumulation→ "sits alongside other named Learnings") did not resolve to a Learnings table — precisely the failure mode Learning #7 addresses.Self-review (dogfooding Learning #7 on this very change)
(Learning #7)reference in §3F resolves to the new row.docs/planning/*audits, all verbatim by design.0behindupstream/main(clean single-commit PR).Out of scope (per the issue)
The mechanized
bin/check-cross-refs.pylint is deliberately not included; it can ship later as a separate PR now that the Learning exists.🤖 Generated with Claude Code
Update (2026-06-19): v2.7.2 combined release note appended
A second commit (
1cd93cb) adds the v2.7.2 changelog so issues #16/#17/#19 are recorded in the version history — PRs #29/#30/#31 ship no version notes of their own. This makes #31 the last-to-merge of the four.v2.7 → v2.7.2+ a v2.7.2 Versioning bullet covering CONTEXT_TEMPLATE.md references Claude-Code-specific 'auto-memory' — generalize for agent independence? #16/Workstream citation pattern inconsistent across AUDIT/DEV/ARCH — propose a convention? #17/Cross-reference completeness — formalize the v2.6 self-review heuristic as a methodology Learning #19.Merge order / dependency. v2.7.2 builds on v2.7.1 (PR #28, issue #15), so merge #28 first, then #29 and #30 (either order), then #31 last. Because #28 and #31 both touch the CLAUDE.md version line + changelog anchor and the README What's-New anchor, expect a trivial 3-hunk add/add conflict at #31's merge — resolve by keeping both the v2.7.1 and v2.7.2 entries and setting the version line to v2.7.2. (#29/#30 touch neither file, so they never conflict.) The "single-commit / 0-behind" line in the self-review above describes the original Learning #7 commit only.