docs(ledger): extract the long residuals into docs/residuals/ - #197
Conversation
Raised independently by three reviewers across four PRs, and deferred three times on the grounds that migrating one residual alone would leave the ledger inconsistent about where provenance lives. Done properly now: every residual whose record passed 4,000 characters moves in one pass. R-5, R-10, R-13, R-18 and R-19 move to docs/residuals/R-NN.md. The ledger table keeps a row for all 23 residuals with classification, current status and a link to the full record, so it remains the index. The concrete harm was demonstrated rather than theoretical. A Markdown table row cannot contain a hard line break, so these records grew as single lines of tens of thousands of characters -- R-18 reached 47,811 -- and unescaped pipes inside inline code spans then split the row. markdownlint reported the consequence exactly: MD056 "Expected: 5; Actual: 9; Too many cells, extra data will be missing". Content at the END of the row, which is where the newest appends land, was being dropped from the rendered table. The files are append-only exactly as the rows were. Superseded claims stay in place and marked rather than being edited away; a record that shows only the conclusion cannot show which measurement overturned which guess, and several of these rows exist mainly to record refuted hypotheses. Extraction verified mechanically, not by eye: all 20 cells across the five moved residuals were checked to appear verbatim in their new files before the rows were replaced. Zero cells lost. The longest remaining table row is 3,750 characters, down from 47,811. Gates: fmt, cargo test --workspace, rustdoc -D warnings, markdownlint -- green. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
📝 WalkthroughSummary by CodeRabbit
WalkthroughThe accuracy ledger now links oversized entries to append-only residual records. New records preserve investigation histories for R-5, R-10, R-13, R-18, and R-19, while ledger statuses and supporting R-14 and R-6 text are refreshed. ChangesResidual documentation
Estimated code review effort: 2 (Simple) | ~10 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 10✅ Passed checks (10 passed)
Comment |
Antigravity, correctly: auto-truncating each cell to 180 characters chopped mid-word and left unclosed bold tags -- "noise, LO", "**persp", "**[HISTORICAL BASELINE — SUPERSEDED", "currently in the T", and an R-18 status ending "asserted a" before the link. R-13 also still pointed at "the RESOLUTION at the end of this cell" for text that had moved to another file. Auto-summarising was the wrong approach. A summary is written, not chopped: the five stubs are now hand-written complete sentences that say what the residual is, what was suspected, and where it actually stands -- including that R-18's recorded mechanism was wrong (the causes were an ERET interrupt livelock and a PIF reporting four controllers, not the OS-boot runtime the row theorised), and that R-10's noise input is deliberately not attempted because Angrylion fakes it with a shadertoy PRNG rather than modelling hardware. Checked mechanically as well as by eye: no residual row has unbalanced ** or ` formatting. Gates: fmt, cargo test --workspace, rustdoc -D warnings, markdownlint -- green. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Adjudication — Antigravity reviewNo blocking issues. The truncation finding is adopted in full, and it was correct on every instance. Truncated / unclosed summaries — adoptedYou caught five real defects, and I verified each:
The R-13 one is the worst of them and the one I would not have caught by skimming: a cross-reference that was correct in the original row became a dangling pointer the moment the cell was split, telling the reader to look at the end of a cell whose end no longer exists. The fix is not better truncation — it is not truncating. I was auto-summarising with a 180-character cut and a sentence-boundary regex that fell back to a hard slice. A summary is written, not chopped. All five stubs are now hand-written complete sentences, and they say more than the truncations did:
Checked mechanically too: no residual row has unbalanced Gates re-run: fmt, |
Antigravity review (Gemini via Ultra)This PR refactors Blocking issuesNone found. Suggestions
Nitpicks
Automated first-pass review by |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@docs/residuals/R-5.md`:
- Line 16: Mark the specified append-only investigation text as historical
without rewriting or deleting it: in docs/residuals/R-5.md lines 16-16 identify
the high-bit-replication statement as superseded by the truncating-conversion
resolution; in docs/residuals/R-10.md lines 12-16 and docs/residuals/R-13.md
lines 12-16 label the descriptions as initial baseline/investigation state; in
docs/residuals/R-18.md lines 12-16 mark the no-video/interrupt theory as
superseded; in docs/residuals/R-18.md line 24 replace “authoritative current
count” for 53 probes with dated historical wording and defer to docs/STATUS.md
as canonical; and in docs/residuals/R-19.md lines 12-16 mark the initial hang
diagnosis as historical.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: 2d3e6928-2166-4b3c-b33b-b7e33ec2d486
📒 Files selected for processing (7)
docs/accuracy-ledger.mddocs/residuals/R-10.mddocs/residuals/R-13.mddocs/residuals/R-18.mddocs/residuals/R-19.mddocs/residuals/R-5.mddocs/residuals/README.md
Closes the refactor raised independently by three reviewers across four PRs (#188, #193, #194, #195) and deferred three times — on the grounds that migrating one residual alone would leave the ledger inconsistent about where provenance lives. Done properly now: every residual whose record passed 4,000 characters moves in one pass.
What moved
The table keeps a row for all 23 residuals with classification, current status and a link. It remains the index. Longest remaining row: 3,750 chars.
The harm was demonstrated, not theoretical
A Markdown table row cannot contain a hard line break, so these records grew as single lines of tens of thousands of characters. Unescaped
|inside inline code spans then split the row, andmarkdownlintreported the consequence exactly:"extra data will be missing" — content at the end of the row, which is where the newest appends land, was being dropped from the rendered table. That was found on #194 and fixed by escaping; this removes the condition that made it possible.
Append-only is preserved
The new files are append-only exactly as the rows were. Superseded claims stay in place and marked (
[HISTORICAL BASELINE — SUPERSEDED …],RETRACTED,at the time of writing) rather than being edited away. That matters more than usual here: several of these records exist mainly to hold refuted hypotheses, and a record showing only the conclusion cannot show which measurement overturned which guess.Verified mechanically, not by eye
The obvious failure mode for a 47 KB text move is silently dropping a paragraph. Before replacing any row, all 20 cells across the five moved residuals were checked to appear verbatim in their new files:
(A first pass compared sentence chunks and reported 15 "losses"; every one straddled a cell boundary, where the row had
|and the file now has a section heading. Per-cell comparison is the correct check and shows zero loss. Worth recording — a verification that reports false positives is one you stop trusting.)Gates
cargo fmt --all --check·cargo test --workspace· rustdoc-D warnings· markdownlint — green. Docs only; all link targets verified to exist.