docs: a seal that names a hash the file no longer holds - #3085
Merged
gHashTag merged 4 commits intoSep 4, 2026
Conversation
Closes #3082 PIN_COVERAGE.md lists xdc_qmtech_minimal() and xdc_qmtech_full() as "Rust pin definitions". grep says 0 definitions in the tree: added 1911edc (2026-04-09) with the gen-xdc command, removed 692ba52 (2026-04-14), and the subcommand went with them. CORPUS-RATCHET.md justifies excluding specs/scratch/ as "606,113,688 of 612,924,235 bytes (98.89%)". That directory has been out of the tree since 2255e4c -- 0 files in the index, absent from disk -- so the exclusion excludes nothing and the saving it claims was banked by the untracking, not by the filter. The untracking commit puts the same exclusion at 64.5% where this line puts it at 98.89%: two numbers for one subject, and neither re-takable now. The filter is kept; it costs nothing and makes the exclusion explicit if the directory returns. NUMERIC_FORMATS_83_METRICS.md cites gen/numeric/formats_catalog.json (77 formats) as a data source. That file was deleted by aa01dd4 -- "untrack stale gen/numeric catalog artifacts (drift 77 vs SSOT 83)". It was removed FOR being 77 against 83, and the document still publishes 77 and points at it. The re-takable source is the catalog itself, at 109 records today. SYNTH_REPORT.md declares every figure measured with yosys 0.65; `yosys -V` on the bench reports 0.68+post, and the file was last touched 2026-08-06 with no date of its own. Not re-measured here -- that needs a run, not an edit -- but a resource figure is a reading of an instrument, and the instrument is named beside the numbers now. Two measurements that produced no code, recorded because they cost the same either way. Extending the new status-table check from paths to code SYMBOLS: declined. 8 rows name a `fn()`, 5 "missing", 62% -- and the population is contaminated, since uart_tx_ready is a .t27 function that exists and quantize_groups is an RFC proposal. And the exclusion of docs/reports/** from that check, which I made by argument last pass: confirmed by measurement, 1566 of 1569 name a wave, ring or date. My first attempt at that measurement said 63 undated and was wrong, because `W\d{3}` does not match `WAVE_LOOP_170`.
Refs #3082 I excluded docs/reports/** by argument. Measuring it said 63 of 1569 undated -- and all 63 are WAVE_LOOP_NNN files, because my pattern was \bW\d{3}\b, which does not match WAVE_LOOP_170. Corrected: 1566 of 1569, exclusion justified. The check of an exclusion made to avoid a matcher describing its input was itself a matcher describing its input. Printing the members rather than the count is what caught it in one look. With the pass that produced no code: extending the check from paths to symbols measured 8 rows, 5 'missing', 62%, and the population spans three languages and an RFC proposal. Declined.
…ons-for-absent-subjects
Closes #3082 NUMERICS_VALIDATION.md states its measured runs are "sealed against the frozen codec revision 49e55df6 in bootstrap/stage0/FROZEN_HASH". That file holds 9b8875f1... today, last changed 2026-09-03 by #3026 -- one of this session's own PRs. Three identifiers are in play: the cited 49e55df6, the live 9b8875f1..., and the manifest's own seal 87e5cbd3... stamped 2026-07-16. The seal stays as the record of what was measured. What was wrong is the present tense: the sentence asserted a current fact about a file, and a re-run of `nmse_gf16.py --seal` today seals against 9b8875f1... and is therefore a NEW reading rather than a reproduction of the table it sits above. That is now said. PUBLICATION_AUDIT.md cites TNF_ARTICLE_RU.md:305 and :309. The Yosys 0.65 / nextpnr line is at :340 today, the post-route rows at :354, and :309 is blank. Both citations carry their old value beside the new one, because an audit that silently re-points is harder to check than one that shows the move. TWO TOOLS MEASURED AND DECLINED, which cost the same as building them would have. A FILE:LINE checker for docs: 43 citations outside the dated reports, 0 with a missing file, 1 with a line past end-of-file -- and that one is in docs/NOW.md, which the pre-commit hook itself calls a frozen archive. One hit in 43, inside a record, is not a population. The "print the members, not the total" rule I proposed last pass: the repository already keeps it. 39 python checks print a count, 33 also print their members, and the six that do not are generators and demos -- fuzz_trainer, gen_formats_catalog, the two gft demos, run_conformance_vvp. Not one is a check. That second number is the uncomfortable one and it belongs in the record. The three times a total hid a matcher error this session -- 153 of 232, 63 of 1569, 5 of 8 -- were all in my own ad-hoc probes. The rule I was about to propose to the repository is one the repository already keeps and I do not.
gHashTag
enabled auto-merge (squash)
September 4, 2026 00:25
Contributor
|
📓 NotebookLM Notebook linked to this PR
This notebook contains session context, decisions, and artifacts for this work. |
Contributor
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.
Closes #3082
1. A reproducibility seal pointing at a hash
FROZEN_HASHno longer holdsdocs/NUMERICS_VALIDATION.mdstates its measured runs are "sealed against the frozen codec revision49e55df6inbootstrap/stage0/FROZEN_HASH".49e55df69b8875f1…FROZEN_HASHholds87e5cbd3…Three identifiers, and none of them is the one in
FROZEN_HASHnow — and the change is partly this session's own doing.The seal stays as the record of what was measured. What was wrong is the present tense: the sentence asserted a current fact about a file. Re-running
nmse_gf16.py --sealtoday seals against9b8875f1…and is therefore a new reading, not a reproduction of the table it sits above. That is now said next to it.2. An audit citing line numbers that moved
docs/PUBLICATION_AUDIT.mdcitesTNF_ARTICLE_RU.md:305and:309. Today the Yosys/nextpnr line is at :340, the post-route rows at :354, and :309 is blank — off by 35 and 45.Both citations now carry their old value beside the new one: an audit that silently re-points is harder to check than one that shows the move.
Two tools measured and declined
A
FILE:LINEchecker for docs. 43 citations outside the dated reports: 0 with a missing file, 1 with a line past end-of-file — and that one is indocs/NOW.md, which the pre-commit hook itself calls a frozen archive. One hit in 43, inside a record, is not a population.The "print the members, not the total" rule I proposed last pass. The repository already keeps it: 39 python checks print a count, 33 also print their members, and the 6 that do not are generators and demos —
fuzz_trainer,gen_formats_catalog, the twogft_*_demos,run_conformance_vvp. Not one is a check.That second number is the uncomfortable one, and it belongs in the record. The three times a total hid a matcher error this session — 153 of 232, 63 of 1569, 5 of 8 — were all in my own ad-hoc probes. The rule I was about to propose to the repository is one the repository already keeps and I do not.