Skip to content

fix(dashboard): recognize R in Code by Language, Quarto/R Markdown as docs - #72

Merged
KJ5HST merged 2 commits into
KJ5HST:mainfrom
rmsharp:fix/dashboard-r-quarto-rmarkdown-extensions
Aug 12, 2026
Merged

KJ5HST merged 2 commits into
KJ5HST:mainfrom
rmsharp:fix/dashboard-r-quarto-rmarkdown-extensions

Conversation

@rmsharp

@rmsharp rmsharp commented Aug 12, 2026 •

Copy link
Copy Markdown
Collaborator

SOURCE_EXTS already had .r (R source always counted toward Source LOC), but LANG_MAP had no entry for it, so R never got its own row in the Code by Language breakdown. Found scanning a real R package: 603 .r files, 77,773 LOC — present in Source, invisible per-language.

.qmd (Quarto) and .rmd (R Markdown) were in neither SOURCE_EXTS nor DOC_EXTS, so a file with either extension outside a docs/ path fell all the way through categorize_file's ladder to "other" — not source, not docs, not even LOC-counted (LOC is skipped entirely for "other"). Added both to DOC_EXTS: they're literate-document formats (prose with embedded code), the same bucket .md already lives in.

Also updated the doc-only corpus-disjunction comment (it described a pure-Quarto repo's .qmd as never counted as docs — no longer true; a pure-LaTeX repo's .tex still isn't), and added a new fixture + test that isolates the render-toolchain arm of that disjunction from the doc-corpus arms, since the existing Quarto fixture's own doc_loc now also clears the corpus threshold on its own.

DASHBOARD_VERSION 2.10.2 → 2.10.3 (also independently proposed by #70 and #71 for unrelated changes — whichever of the three merges last will need a fresh bump at that time; not something this PR can pre-empt).

RED-first: all 6 new/changed assertions confirmed failing against unmodified upstream/main before either constant was touched. Full suite 203/203 minus 2 pre-existing failures unrelated to this change (FRAMEWORK_INSTALLED_SOURCE not yet extended for context_budget.py — same baseline reproduced against a clean upstream/main worktree; #71 already addresses it).


Edit: addressed all three review findings.

1. Missing CHANGELOG.md entry — added. This was the only one of the five open PRs without one. Confirmed why: the .githooks/pre-commit ledger gate was deliberately bypassed with --no-verify for this upstream-targeted commit (the correct call — that hook enforces this fork's own ledger convention, which doesn't apply to an upstream branch), but the entry itself was simply never written, unlike the sibling PRs. Added now, describing the change, the classification consequence below, and verification.

2. Version collision — now three-way, resolved. #70 and #71 (open the same day) have since moved to 2.10.4 and kept 2.10.3 respectively, so this PR now takes 2.10.5 in both twins + test_dashboard_version.

3. Under-described blast radius — pinned with a new test, not split to a follow-on. You're right that Quarto repos don't actually reclassify (already doc_only via the toolchain-marker fallback; this PR only fixes their reported metrics) but bare .Rmd does — no toolchain marker at all, so adding .rmd to DOC_EXTS is what newly clears the corpus disjunction for that class. Verified by direct reproduction with the same fixture shape (a .R helper + several .Rmd files, no _quarto.yml/_bookdown.yml) against both trees:

upstream/main (pre-fix):  doc_only=False, risks include "No test infrastructure" (HIGH)
this branch (post-fix):   doc_only=True,  that risk replaced by a doc-only advisory

New test test_rmd_analysis_repo_flips_doc_only_and_softens_the_test_risk pins exactly this — RED-verified against a genuine pre-fix scanner checkout (not just git stash, since the underlying fix was already a committed diff on this branch, not working-tree state) before landing.

Re-verified

🤖 Generated with Claude Code

@KJ5HST

KJ5HST commented Aug 12, 2026

Copy link
Copy Markdown
Owner

Ran the checks at the head and verified the premises against main by importing the live constants rather than reading them off the diff. Approving in substance — every claim in this PR holds up, and the tests are the most careful of the five currently open. Two things to fix first, one of them just mechanical.

Premises, all confirmed:

Claim Verified
.r is in SOURCE_EXTS but absent from LANG_MAP ✓
.qmd/.rmd are in neither set ✓
They fall through categorize_file's ladder to "other" ✓ :287-303
"other" is not LOC-counted at all ✓ :788 — category not in ("assets", "other")
…but only outside a docs/ path ✓ :297 also matches "docs/" in rel_str, exactly as your comment says
Lowercased suffix makes .R/.Rmd resolve to the one key ✓ :775
.tex stays out ✓ absent, so the retained fallback comment is still accurate

Head: unit 201/203 (the 2 are main's, inherited), bin/check-links OK (83 links / 21 files), twins byte-identical.

Specific credit for one thing that's easy to miss. You noticed that the existing Quarto fixture would now clear the corpus arm on its own — silently converting a test that isolated the render-toolchain arm into one that no longer tested it — and added QUARTO_MINIMAL + test_a_pure_quarto_repo_below_doc_thresholds_still_doc_only_via_toolchain to keep the isolation. That's exactly the "incidental coverage evaporates when you improve a fixture" hazard your own #70 is about, caught unprompted in the same subsystem. Nice.

1. The PR under-describes its own blast radius

It's framed as a categorization/display fix. It's also a classification change. Measured across four fixtures, main 2.10.2 vs this head:

=== quarto WITH _quarto.yml ===
  main     doc_only=True   src=0    docs=0     other=6   no_test_risk=none
  #72      doc_only=True   src=0    docs=512   other=0   no_test_risk=none

=== quarto bare (.qmd only, no _quarto.yml) ===
  main     doc_only=True   src=0    docs=0     other=6   no_test_risk=none
  #72      doc_only=True   src=0    docs=512   other=0   no_test_risk=none

=== R Markdown (.Rmd x 5 + a 30-LOC helper.R) ===
  main     doc_only=False  src=30   docs=0     other=5   no_test_risk=HIGH   langs={}
  #72      doc_only=True   src=30   docs=430   other=0   no_test_risk=low    langs={'R': 1}

=== R package with a real test suite ===
  main     doc_only=False  src=360  docs=0     other=1   no_test_risk=medium
  #72      doc_only=False  src=360  docs=82    other=0   no_test_risk=medium

Three things fall out of that:

For Quarto, nothing reclassifies. *.qmd is already a render-toolchain marker (:1735), so a Quarto repo — with or without _quarto.yml — was already doc_only through the fallback arm. What you fix for them is the reported metrics, and that's worth fixing on its own: a Quarto book previously displayed zero documentation and 6 uncounted "other" files. Your in-code comment says this accurately; the title and body read like a misclassification is being repaired.

The reclassification is specifically R Markdown. .Rmd has no toolchain marker — _bookdown.yml is one, but a bare .Rmd analysis project has neither that nor *.qmd. So that class flips doc_only False → True and its "No test infrastructure" risk drops HIGH → low.

I think that flip is correct — an R Markdown analysis project is exactly the research population BL-5/v3.2 exists to score fairly, and your has-tests gate correctly protects the fourth fixture (an R package with tests/ stays code, and now gets its R language row). But a change that moves repos between scoring regimes and suppresses a HIGH advisory is a user-visible verdict change, and nothing pins it: the six new tests cover categorization, language rows, and the preserved toolchain arm — none asserts the downstream classification or risk consequence. Add a test that pins the .Rmd-analysis-repo classification and say it in the body, so a future edit to DOC_EXTS can't silently un-flip a whole population.

2. The version collision is three-way (blocking, mechanical)

You, #70 and #71 all bump DASHBOARD_VERSION 2.10.2 → 2.10.3 and all rewrite the same test_dashboard_version assertions. I merged all three onto origin/main in a scratch worktree:

So the three are code-compatible; two of them just need renumbering to 2.10.4 / 2.10.5 in both twins plus the assertions. I'm planning to take #71 first since it's the branch that un-reds main. (I told #70 "whichever of you lands second needs 2.10.4" before this PR existed — that was one short.)

3. No CHANGELOG.md entry

This is the only one of the five open PRs without one:

#68: CHANGELOG.md  starter-kit/RECOMMENDED_SKILLS.md
#69: CHANGELOG.md  starter-kit/HANDOFFS.md
#70: CHANGELOG.md  starter-kit/…py  tools/…py  tools/test_…py
#71: CHANGELOG.md  starter-kit/…py  tools/…py  tools/test_…py
#72:               starter-kit/…py  tools/…py  tools/test_…py

It changes tracked content, which is what the v3.1 .githooks/pre-commit gate refuses without a co-staged ledger entry — so either the hook isn't enabled on that clone or it got bypassed. FM #27, and the class Phase 0 reconcile-on-read exists to catch. Worth checking git config core.hooksPath .githooks on that clone either way, since a silently-disabled hook will keep doing this.

Completeness sweep — clean

Ran the Learning #10 sweep for sites this could have made stale. No live operative doc describes DOC_EXTS, SOURCE_EXTS, or "Code by Language" — nothing to update. The two places that still say .qmd isn't counted as docs are both frozen dated records (root CHANGELOG.md:568 and CLAUDE.md:118, v3.2 release narration), which the v2.7.1 convention keeps verbatim by design. The one live .qmd mention, RESEARCH_DOCUMENTATION_WORKSTREAM.md:337, is the toolchain matrix's render-command column and is unaffected by categorization.


Add the ledger entry and the classification test, take whichever version number falls out of the merge order, and I'll merge this. If you'd rather ship the classification test as a follow-on, say so — it's the one item here I'd accept splitting, since the behavior it pins is behavior I think is right.

rmsharp added a commit to rmsharp/methodology that referenced this pull request Aug 12, 2026
- Add the missing CHANGELOG.md entry -- this PR was the only one of the
  five open PRs without one, which the .githooks/pre-commit ledger-gate
  should have caught (confirmed: it was bypassed with --no-verify for
  this upstream-targeted branch, same precedent as other PRs, but the
  entry itself was never written).
- DASHBOARD_VERSION 2.10.3 -> 2.10.5: 2.10.3 is independently claimed by
  a sibling PR, 2.10.4 by another, both open the same day.
- Pin the classification consequence review found under-described: a
  bare .Rmd analysis repo (no toolchain marker) flips doc_only
  False -> True and softens its "No test infrastructure" risk from HIGH
  to a doc-only advisory. Quarto repos do NOT reclassify (already
  doc_only via the toolchain-marker fallback; only their reported
  metrics change) -- confirmed by direct reproduction against both
  upstream/main (pre-fix: doc_only=False, HIGH risk) and this branch
  (post-fix: doc_only=True, softened risk) with the identical fixture.
  New test_rmd_analysis_repo_flips_doc_only_and_softens_the_test_risk,
  RED-verified against a temporary pre-fix scanner checkout before
  landing (git stash alone does not RED-verify a change already baked
  into a prior commit on this branch -- had to swap in the actual
  pre-fix file content).

Verified: python3 -m unittest tools/test_methodology_dashboard.py
204/204 (198 prior + 6 original + 1 new); the 2 failures on this base
are pre-existing and fixed by a sibling PR, not this one. bin/check-links
OK. Twins byte-identical. Rebased onto upstream/main (clean, no conflict
-- this PR had no CHANGELOG.md entry to collide with).

Reviewed-by: KJ5HST <review comment on PR KJ5HST#72>

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@rmsharp
rmsharp force-pushed the fix/dashboard-r-quarto-rmarkdown-extensions branch from 6380139 to 3082d71 Compare August 12, 2026 02:30
rmsharp and others added 2 commits August 11, 2026 22:40
…s docs

SOURCE_EXTS already had .r (R always counted toward Source LOC), but
LANG_MAP had no entry for it, so R never got its own row in the Code
by Language breakdown -- found scanning a real R package (603 .r
files, 77,773 LOC, present in Source but invisible per-language).

.qmd (Quarto) and .rmd (R Markdown) were in neither SOURCE_EXTS nor
DOC_EXTS, so a file with either extension outside a docs/ path fell
through categorize_file's whole ladder to "other" -- not source, not
docs, not even LOC-counted (LOC is skipped entirely for "other").
Added both to DOC_EXTS: they are literate-document formats (prose
with embedded code), the same bucket .md already lives in.

Updated the doc-only corpus-disjunction comment, which described a
pure-Quarto repo's .qmd as never counted as docs -- no longer true
after this change (a pure-LaTeX repo's .tex still isn't). Added a
new fixture + test isolating the render-toolchain arm of that
disjunction from the doc-corpus arms, since the existing Quarto
fixture's own doc_loc now also clears the corpus threshold on its
own and no longer exercises the toolchain arm in isolation.

DASHBOARD_VERSION 2.10.2 -> 2.10.3 (also independently proposed by
two other currently-open PRs against unrelated changes; whichever
merges last will need a fresh bump at that time).

RED-first: all 6 new/changed assertions confirmed failing against
unmodified upstream/main before either constant was touched. Full
suite 203/203 minus 2 pre-existing failures unrelated to this change
(FRAMEWORK_INSTALLED_SOURCE not yet extended for context_budget.py,
same baseline reproduced against a clean upstream/main worktree).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- Add the missing CHANGELOG.md entry -- this PR was the only one of the
  five open PRs without one, which the .githooks/pre-commit ledger-gate
  should have caught (confirmed: it was bypassed with --no-verify for
  this upstream-targeted branch, same precedent as other PRs, but the
  entry itself was never written).
- DASHBOARD_VERSION 2.10.3 -> 2.10.5: 2.10.3 is independently claimed by
  a sibling PR, 2.10.4 by another, both open the same day.
- Pin the classification consequence review found under-described: a
  bare .Rmd analysis repo (no toolchain marker) flips doc_only
  False -> True and softens its "No test infrastructure" risk from HIGH
  to a doc-only advisory. Quarto repos do NOT reclassify (already
  doc_only via the toolchain-marker fallback; only their reported
  metrics change) -- confirmed by direct reproduction against both
  upstream/main (pre-fix: doc_only=False, HIGH risk) and this branch
  (post-fix: doc_only=True, softened risk) with the identical fixture.
  New test_rmd_analysis_repo_flips_doc_only_and_softens_the_test_risk,
  RED-verified against a temporary pre-fix scanner checkout before
  landing (git stash alone does not RED-verify a change already baked
  into a prior commit on this branch -- had to swap in the actual
  pre-fix file content).

Verified: python3 -m unittest tools/test_methodology_dashboard.py
204/204 (198 prior + 6 original + 1 new); the 2 failures on this base
are pre-existing and fixed by a sibling PR, not this one. bin/check-links
OK. Twins byte-identical. Rebased onto upstream/main (clean, no conflict
-- this PR had no CHANGELOG.md entry to collide with).

Reviewed-by: KJ5HST <review comment on PR KJ5HST#72>

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@rmsharp
rmsharp force-pushed the fix/dashboard-r-quarto-rmarkdown-extensions branch from 3082d71 to c4fd879 Compare August 12, 2026 03:54
@KJ5HST
KJ5HST merged commit 5c59f0b into KJ5HST:main Aug 12, 2026
rmsharp added a commit to rmsharp/methodology that referenced this pull request Aug 16, 2026
…tream PRs, 4 merged

Reviewed and responded to maintainer feedback on PRs KJ5HST#68-KJ5HST#72 one at a
time. KJ5HST#68 needed no action (maintainer merged unassisted). KJ5HST#69/KJ5HST#70
each got one targeted fix. KJ5HST#71's own fix was found not to work by the
maintainer; rewritten in-branch as a real per-file signature gate
(operator-directed) rather than merged-then-follow-up. KJ5HST#72 was
reviewed separately mid-session and got three fixes (missing
CHANGELOG entry, version collision, an under-described classification
consequence pinned with a new regression test).

upstream/main moved three times during the session (PR merges landing
mid-work), forcing repeated CHANGELOG.md-prepend-collision rebases,
resolved with explicit operator go-ahead each time. KJ5HST#68/KJ5HST#69/KJ5HST#70/KJ5HST#71
are now all MERGED upstream. KJ5HST#72 remains open with a real multi-file
code conflict against the cumulative merged state -- deliberately left
unresolved per operator direction rather than rushed.

Two process deviations disclosed in the S82 receipt, not hidden: no
Phase 1B claim stub was written at session start, and a commit landed
on PR KJ5HST#70 after an operator 'yes' that answered a different question --
caught by the operator directly, not self-caught. Operator's direction
was to leave the KJ5HST#70 push as-is.

Self-score 7/10; predecessor S81 evaluated at 8/10 (see HANDOFFS.md for
both full write-ups).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
rmsharp added a commit to rmsharp/methodology that referenced this pull request Aug 16, 2026
…directed

Also reconciles S82's own receipt: `commit:` answer slot was still
`pending`; the commit that flipped that block to `status: complete`
is 62168e6 itself.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
rmsharp added a commit to rmsharp/methodology that referenced this pull request Aug 16, 2026
…s a byproduct

Local main had not merged upstream/main since a2a7275 (PR KJ5HST#66), so it was 21
commits behind: PRs KJ5HST#68/KJ5HST#69/KJ5HST#70/KJ5HST#71's own merges, plus two of the maintainer's
own S9/S10 sessions this fork's ledger never recorded. PR KJ5HST#72's 4-file
conflict was really "local main is stale," not a defect in the PR itself.

Resolved file by file (git merge --no-commit, no --strategy shortcut):

- CHANGELOG.md/HANDOFFS.md: discarded upstream's re-sent content that this
  fork had already archived on its own side; appended the 3 genuinely-new
  upstream-only actions (issue KJ5HST#65's structural tests, the AGENTS.md/citation
  cleanup, FM KJ5HST#28 + context_budget.py) at the tail, dated by their true date.
- CLAUDE.md: kept this fork's own docs/RELEASE_HISTORY.md extraction (BL-9 L3)
  over upstream's un-extracted inline history (confirmed byte-identical
  content); FM count 27->28 auto-merged cleanly.
- tools/methodology_dashboard.py + starter-kit/ twin: kept this fork's more
  evolved _FRAMEWORK_INSTALLED_CONTENT derived-table design over upstream's
  separately-maintained _FRAMEWORK_FILE_SIGNATURES dict (same underlying
  fix, built independently on each side after PR KJ5HST#71's review cycle); ported
  context_budget.py/.context-budget.json's real signature values into it.
  DASHBOARD_VERSION 2.15.1 -> 2.15.2.
- bin/check-handoff: kept this fork's richer stub-schema logic, added
  upstream's --all mode (validate_ledger/scan had already auto-merged
  cleanly). --all immediately found and fixed a real pre-existing defect: a
  stray bare ``` in HANDOFFS.md was silently swallowing S72's receipt whole.
- bin/check-learnings: arrived from upstream's issue KJ5HST#65 work, written
  against upstream's inline-table layout; retargeted at this fork's own
  extracted FRAMEWORK_LEARNINGS.md (S34, BL-9) and given a table-header-row
  anchor instead of a section-heading one, plus a reserved-number exception
  for the file's own documented `KJ5HST#14` gap. Immediately surfaced BL-35
  (raised, not fixed) -- two malformed rows live since S40/S41.
- bin/tests.sh: kept all of this fork's own Tests 23-31; renumbered
  upstream's new tests 23-25 -> 32-34 and its untitled context_budget.py
  block -> 35; rewrote Tests 32-34 to target this fork's real files/anchors
  dynamically (not hardcoded upstream-only text) and to assert on each
  mutation's specific finding rather than "any failure."
- bin/_manifest.py: added context_budget.py (TRACKED) after this fork's own
  methodology_trim.py entry; .context-budget.json (SEED) had already
  auto-merged in cleanly elsewhere in the file.
- starter-kit/BOOTSTRAP.md: added .context-budget.json to the never-overwrite
  row and context_budget.py to the tracked row (Test 28 caught the gap).
- README.md: combined both sides' bin/ tree rows.

Verified: python3 -m unittest tools.test_methodology_dashboard 299/299;
python3 bin/check-links OK; python3 bin/check-handoff --all OK (modulo this
session's own still-open S83 claim stub); python3 bin/check-learnings reports
exactly BL-35's 2 disclosed findings; bin/tests.sh 225/229 (Test 9's
pre-existing baseline + 3 findings tied to this session's own still-pending
S83 receipt, all confirmed resolving once that receipt is completed at
close-out); twins re-confirmed byte-identical throughout.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
rmsharp added a commit to rmsharp/methodology that referenced this pull request Aug 16, 2026
… upstream merge, self-score 8/10

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
rmsharp added a commit to rmsharp/methodology that referenced this pull request Aug 16, 2026
…rebased branch outside any session

Phase 0 orientation found PR KJ5HST#72 already mergeable_state:clean on GitHub, though
S83's receipt says its rebased branch was NOT pushed. The PR timeline shows the
operator force-pushed it twice outside any session, landing exactly the sha S83's
next_steps specified. Non-commit outward action, no prior ledger record (FM KJ5HST#27) --
reconciled, not altered.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
rmsharp added a commit to rmsharp/methodology that referenced this pull request Aug 16, 2026
… self-score 8/10

Also reconciled a Phase 0 gap (operator pushed PR KJ5HST#72's branch outside
any session, unrecorded) before task selection.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
rmsharp added a commit to rmsharp/methodology that referenced this pull request Aug 16, 2026
…m merge

Phase 1B stub. Operator reported PR KJ5HST#72 merged. Independently verify,
record mirroring the BL-26/PR KJ5HST#66 precedent, update BL-34's BACKLOG.md
status, assess whether to sync local main with upstream/main now.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
rmsharp added a commit to rmsharp/methodology that referenced this pull request Aug 16, 2026
…fied, not synced into local main

Operator reported the merge; independently re-verified in an isolated
worktree at the merge commit (5c59f0b) rather than trusting the report or
the commit messages -- unittest 208/208, bin/tests.sh 114/114, both review
requests (version collision resolved, classification test) confirmed
present.

Local main deliberately not synced here: a real 4-file conflict exists
because BL-34's fix was built twice independently against two different
base trees (once on local main directly, once on the PR KJ5HST#72 branch against
a clean upstream/main). Reconciling is a real judgment call, deferred to a
dedicated sync.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
rmsharp added a commit to rmsharp/methodology that referenced this pull request Aug 16, 2026
…rded, self-score 8/10

Sync of local main with upstream/main deliberately deferred: a real 4-file
conflict exists because BL-34's fix was built twice independently against
two different base trees. Verify+record scoped as this session's deliverable;
the sync itself needs a real judgment call, left for a dedicated pass.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
rmsharp added a commit to rmsharp/methodology that referenced this pull request Aug 16, 2026
…BL-34's 4-file conflict

Real 3-way merge (git merge upstream/main --no-commit, no strategy shortcut),
file by file. Upstream moved further than S86's own claim scoped (v3.7
tagged, issue KJ5HST#67 independently fixed) between claim and this commit --
re-derived the actual conflict shape rather than trusting the snapshot
(Learning KJ5HST#13), then resolved the full scope rather than narrowing back.

CLAUDE.md/docs/RELEASE_HISTORY.md: kept this fork's own extraction (BL-9 L3)
over upstream's reintroduced inline history; appended upstream's new v3.7
entry to RELEASE_HISTORY.md with a fork note that every functional item in
it had already reached this fork independently before the tag (S83's merge,
BL-34, this fork's own S62 issue-KJ5HST#67 fix).

CHANGELOG.md: newer-dated upstream entries (v3.7 release narration, issue
KJ5HST#67 fix) placed above this fork's own 2026-08-11 entries; dropped one
orphaned duplicate (upstream's own BL-31/PR#71 narration -- same event this
fork's BL-31 entries already cover, integrated at S83).

tools/methodology_dashboard.py + starter-kit twin: kept this fork's own
BL-34 comments/DASHBOARD_VERSION (2.15.2) throughout -- functionally
identical to upstream's leaner upstream-targeted wording. For issue KJ5HST#67's
stale-copy remedy, kept this fork's own `--sync [DIR]` single-project
scoping design over upstream's `cp`-based one -- more general, already
covered by ~15 existing Row 13/14 tests. README.md's auto-merged "What's
New in v3.7" section described upstream's cp-based remedy; corrected the
one inaccurate bullet to match what this fork actually ships.

tools/test_methodology_dashboard.py: kept BL-34 comment flavor; adopted
upstream's new `test_rmd_analysis_repo_flips_doc_only_and_softens_the_test_
risk` (genuinely new, never landed on this fork's own main, only on the
separate PR KJ5HST#72 branch); dropped upstream's whole `TestCliRemedyProportion
ality` class as redundant with this fork's own more thorough --sync-target
coverage -- one of its assertions (`assertIn("cp ", err)`) would have failed
against this fork's correct, already-tested `--sync [DIR]` design, not
caught a real defect.

HANDOFFS.md: upstream's S11 (issue KJ5HST#67 fix) merged in, dated later than
this session's own recent entries but placed BELOW this session's S86 stub
-- `check-handoff --allow-pending` exempts only the file's literal newest
block, so a later-dated but still-open receipt above an in-flight one
breaks the exemption (found live: two stacked pending stubs, both flagged
red under --allow-pending). Upstream's own S12 (the v3.6->v3.7 release
session, still `status: pending` at upstream/main's tip) is deliberately
NOT recorded -- a pending stub is a live claim, not settled history; a
future sync should re-check for its completion rather than assume this one
reconciled it. Receipt count corrected 24 -> 28.

Verified: python3 -m unittest tools.test_methodology_dashboard 300/300;
bash bin/tests.sh 228/229 (Test 9's pre-existing github-source gap aside);
bin/check-links OK (88/22); bin/check-learnings OK (22 rows, 0 findings);
bin/check-handoff --all --allow-pending OK (28 receipts); twins
byte-identical.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
rmsharp added a commit to rmsharp/methodology that referenced this pull request Aug 16, 2026
…4 fully

CHANGELOG.md entry narrating the aa378ab merge's file-by-file resolution.
BL-34's BACKLOG.md entry gets a SYNCED paragraph; header updated to drop
"local main not yet synced". BL-34 is now fully closed -- both the PR KJ5HST#72
merge and the local sync are done.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
rmsharp added a commit to rmsharp/methodology that referenced this pull request Sep 17, 2026
…-57 row, plan status, fork Learning KJ5HST#72

The BL-54 row and detail record the fix, the operator's option C with the
options measured, and that the item stays open only for its upstream PR.
BL-57's next step becomes P6-P11, and the plan's status line says adopters
can sync from fork main again. Fork Learning KJ5HST#72: a rejected design option
is a ready-made mutant.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
rmsharp added a commit to rmsharp/methodology that referenced this pull request Sep 22, 2026
…history; nothing upstream-facing

Receipt complete (check-handoff OK): predecessor S217 scored 8, self 8.
Gate citations: fork main (clone of f92a55b) 11/11, identical to Phase 0;
the branch (clone of 252a4b6) 10/10, suite 170/0/0. Fork Learning KJ5HST#92 with
D3's retire-or-refuse: rows KJ5HST#16, KJ5HST#64, KJ5HST#72, KJ5HST#91 considered, none retires.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@rmsharp
rmsharp deleted the fix/dashboard-r-quarto-rmarkdown-extensions branch September 29, 2026 14:48
rmsharp added a commit to rmsharp/methodology that referenced this pull request Oct 6, 2026
…etail; fork learning #107

No row retired: none qualifies (rows considered: KJ5HST#16, KJ5HST#31, KJ5HST#72, #106).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
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