Skip to content

docs(corpus): refresh stale ledger metadata - #501

Merged
sims1253 merged 2 commits into
mainfrom
chore/corpus-metadata-hygiene
Sep 16, 2026
Merged

sims1253 merged 2 commits into
mainfrom
chore/corpus-metadata-hygiene

Conversation

@sims1253

Copy link
Copy Markdown
Owner

Closes #475

What was stale, and what was done

1. tidyverse source_sha256 — verified current, no change needed.
The staleness recorded in the issue (d9d1fca1 vs actual 27c0c289) was already superseded on main: the RY106 regeneration (bb164033) replaced the digest and the superassignment recompute (c636b6b7) recomputed it again. Following the corpus README recipe (concatenated bytes of all 32 non-posit *.root.txt reports, sorted by filename), the recorded value reproduces exactly:

21661fef4a99296e616422025eb0773d5c21ffea27d3ddafeb84e97375088354

The posit digest (e10dd488…) was also re-derived from its 62 reports and matches.

2. ecosystem/posit-packages.txt comment counts — refreshed (36 entries).
The header comments still carried audit-era (ry 0.8.0) counts that never tracked the regenerated reports. All stale counts now match the committed posit.*.root.txt reports and the check-ledger-validated per-package ledger counts — including the issue's lintr 12 → 9 (a 9th, the cp1252 RY000, was owned after the issue was filed by 250498eb) and testthat 9 → 2. Stars, refs, and ordering untouched.

3. One-time commit-reference audit — no dead references found.

  • All 86 package pins across both ledger packages blocks resolve in their upstream repos (GitHub API repos/{repo}/commits/{sha}, one 404 would have flagged).
  • Note references verified: dbe32a6 (dtplyr upstream fix), 6fec3ad (hms upstream fix) upstream; fd48562 (posit baseline note) and both ledgers' ry_commit 1dc59989 resolve in this repository.
  • posit-messages-0.9.json carries no commit hashes.

Folded-in nits from the issue comments

  • README digest paragraph: "six reports / 46 unowned / only fs and withr empty" → three reports (cli, rlang, testthat) hold 44 unowned; the remaining five are empty (scales since chore(release): prepare 0.10.0 #460, curl and jsonlite since Model <<- superassignment as a type update to the enclosing binding (drives all 6 corpus loop-condition FPs) #374).
  • Duplicate dbplyr RY091 entries: verified the multiset duplication is load-bearing — the committed hermetic dbplyr.root.txt emits each of test-backend-.R:110:36 and test-translate-sql-string.R:13:36 twice at the same span, and ecosystem/reconcile.R's multiset_delta requires both copies. Pinned with an explanatory ledger note rather than deduped (dedup would break --check).
  • docs/rules.md RY093 row: dropped abs() from the parenthetical — the pinned test comparison_inside_selected_scalar_calls_is_diagnosed asserts abs(x != y) fires RY100.

Deliberately not changed (reviewer attention)

  • Tier membership: four fast-tier packages (roxygen2, recipes, corrr, bigrquery) now read clean and five full-tier "clean" packages (rmarkdown, tidyr, learnr, dtplyr, bslib) now carry counts. Moving them across the # === full tier marker would make the tiers self-consistent again but changes what --tier fast clones/reconciles — left as a possible follow-up.

Verification

  • python3 ecosystem/check-ledger.py docs/corpus/posit-0.9.0.json docs/corpus/tidyverse-0.7.1.json — OK (410 / 88 findings)
  • python3 ecosystem/test-check-ledger.py — 6/6 OK
  • python3 ecosystem/test-posit-messages.py — 3/3 OK
  • Rscript ecosystem/test-reconciliation.R — all pass
  • ecosystem/test-manifest-isolation.sh, ecosystem/test-drift-detection.sh — PASS
  • cargo test -p ry-checker --test readme_rule_table — 2/2 OK (couples to the rules.md edit)
  • No Rust source changed, so broader cargo/clippy gates are unaffected; the heavy clone-based posit integration tests are untouched by comments-only manifest edits (the # namespace: posit directive, not file content hashing, selects report naming).

Hygiene for #475. The tidyverse source_sha256 flagged in the issue
(d9d1fca1 vs actual 27c0c289) was already superseded on main by the
RY106 regeneration (bb16403) and the superassignment recompute
(c636b6b); the recorded 21661fef verified to reproduce from the
committed 32 non-posit root reports concatenated in filename order,
so no digest change was needed.

ecosystem/posit-packages.txt carried audit-era (ry 0.8.0) per-package
counts that never tracked the regenerated reports: all 36 stale
comments are refreshed to the current committed posit.*.root.txt /
ledger counts, including the issue's lintr 12 -> 9 and testthat 9 -> 2.
Tier membership is deliberately untouched (roxygen2/recipes/corrr/
bigrquery now read clean inside the fast tier; rmarkdown/tidyr/learnr/
dtplyr/bslib carry counts inside the full tier) because re-tiering
changes what --tier fast clones and reconciles.

docs/corpus/README.md's digest-recipe paragraph said six ungated
reports hold 46 unowned findings with only fs and withr empty; the
current reports hold 44 across three (cli, rlang, testthat) and five
are empty (scales since #460, curl and jsonlite since #374).

The tidyverse ledger pins the two duplicated dbplyr RY091 identities
(test-backend-.R:110:36, test-translate-sql-string.R:13:36) with a
note: the hermetic report emits each twice at the same span and
reconcile.R compares multisets, so both copies are load-bearing.

docs/rules.md's RY093 row drops abs() from the parenthetical: the
pinned test (comparison_inside_selected_scalar_calls_is_diagnosed)
asserts abs fires RY100, not RY093.

One-time commit audit: all 86 package pins across both ledgers plus
the upstream-fix note references (dbe32a6 dtplyr, 6fec3ad hms) resolve
in their upstream repos via the GitHub API, and both ledgers'
ry_commit 1dc5998 and the fd48562 baseline note resolve in this
repository. No rewritten-away references remain.
@coderabbitai

coderabbitai Bot commented Sep 16, 2026 •

Copy link
Copy Markdown

Warning

Review limit reached

Next included review available in 15 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Advanced

Run ID: c89a9b4d-d4b2-41d4-ace7-7c5bac0f1300

📥 Commits

Reviewing files that changed from the base of the PR and between 151aa7b and d278b41.

📒 Files selected for processing (4)
  • docs/corpus/README.md
  • docs/corpus/tidyverse-0.7.1.json
  • docs/rules.md
  • ecosystem/posit-packages.txt

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@pullfrog pullfrog Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ℹ️ No blocking issues — one stale PR reference inline, plus a follow-up note on the tier markers.

Reviewed changes

  • ecosystem/posit-packages.txt comment refresh (36 entries) — recounted all 62 manifest entries against their posit.*.root.txt reports: every new count matches exactly (0 mismatches; clean corresponds to a 0-byte report). Pins, stars, and ordering are untouched, and ecosystem/run.sh scopes tiers by marker position, so the edits are inert to CI behavior.
  • docs/corpus/README.md unowned-findings paragraph — verified the arithmetic from the eight no-block reports: cli 14 + rlang 15 + testthat 15 = 44 unowned, and curl/fs/jsonlite/scales/withr are all 0 bytes; exactly those eight manifest packages lack a ledger packages-block entry. One provenance nit inline.
  • docs/corpus/tidyverse-0.7.1.json dbplyr-duplicate note — the hermetic report does emit each identity twice at the same span, the ledger's pr195-nse-stubs group holds all 6, and the described calls match the pinned upstream source at f478e207 (ifelse(x, 1L) in test-backend-.R, substr("test", 0) at test-translate-sql-string.R:13, both inside the NSE-capturing expect_translation_snapshot). ry_commit and both source_sha256 values are unchanged and still reproduce from the README recipes.
  • docs/rules.md RY093 summary — dropping abs() is correct: the pinned test comparison_inside_selected_scalar_calls_is_diagnosed asserts abs(x != y) fires RY100 while only length/nchar fire RY093. The readme_rule_table test pins only code/name/severity plus a non-empty summary, so the wording change can't break it, and no other doc describes RY093 with abs().
  • Ran check-ledger.py (410/88, OK), test-check-ledger.py (6/6), test-posit-messages.py (3/3), and recomputed both digest recipes locally.

ℹ️ Tier header comments now contradict the refreshed counts

After this refresh, four fast-tier packages read clean (roxygen2, recipes, corrr, bigrquery) while five full-tier "clean" packages carry counts (rmarkdown 2, tidyr 8, learnr 1, dtplyr 3, bslib 5), so both tier headers' stated invariants — >=1 ry diagnostic / 0 ry diagnostics; clean — are now wrong for the file as committed. The deferral is the right call here (moving entries across the # === full tier marker changes what --tier fast clones and reconciles on every PR, which deserves its own PR with a CI run), but nothing currently tracks it — worth a follow-up issue so the marker migration doesn't get lost now that the comments advertise the inconsistency.

Technical details
# Tier markers lag the refreshed per-package counts

## Affected sites
- ecosystem/posit-packages.txt:18 — `# === fast tier (>=1 ry diagnostic) ===` now contains 4 entries whose comments read `clean`: roxygen2, recipes, corrr, bigrquery.
- ecosystem/posit-packages.txt:54 — `# === full tier (0 ry diagnostics; clean) ===` now contains 5 entries with nonzero counts: rmarkdown (2), tidyr (8), learnr (1), dtplyr (3), bslib (5).

## Required outcome
- Either move the 9 packages across the marker so tier membership matches the counts, or track that migration in a follow-up issue; do not leave the headers' stated invariants silently false.

## Open questions for the human
- Moving the 5 counted full-tier packages into the fast tier grows PR CI reconcile scope (5 extra clones per PR run); moving the 4 clean ones out shrinks it. Both are behavior changes and belong in a dedicated PR with a green `posit` lane, which is why deferring here is reasonable.

Pullfrog  | Fix all ➔ | Fix 👍s ➔ | View workflow run | Using openai-compatible/glm-5.3 | 𝕏

Comment thread docs/corpus/README.md Outdated
Review of #501: 6d4ba4f, the commit that took
ecosystem/reports/scales.root.txt from 62 bytes to empty, landed via
#459, not #460 (the 0.10.0 release-prep PR merged a few hours later,
none of whose commits touch the file). The README attribution now
names the PR that actually emptied it; the curl/jsonlite -> #374
attribution on the same line is verified correct and unchanged.

@pullfrog pullfrog Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ No new issues found — the follow-up fix is exactly right.

Reviewed changes

Since the prior review, one commit landed: the sole prior inline finding (the scales provenance reference) is corrected, and nothing else moved.

  • Corrected the scales provenance reference in docs/corpus/README.md — the unowned-findings paragraph now credits PR #459 for emptying ecosystem/reports/scales.root.txt instead of the release-prep PR #460, matching the commit history verified in the prior review (6d4ba4f, which landed via #459, took the report from 62 bytes to empty while none of #460's commits touch it). The thread is resolved; no other file, count, or digest changed in this delta.

Pullfrog | View workflow run | Using openai-compatible/glm-5.3 | 𝕏

Pullfrog  | View workflow run | Using openai-compatible/glm-5.3 | 𝕏

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.

Corpus metadata hygiene: stale tidyverse source_sha256, stale manifest comment counts

1 participant