Skip to content

docs(verilog): fourteen was the flag count, not the site count - #3026

Merged
gHashTag merged 1 commit into
masterfrom
w44-fourteen-was-the-flags
Sep 3, 2026
Merged

docs(verilog): fourteen was the flag count, not the site count#3026
gHashTag merged 1 commit into
masterfrom
w44-fourteen-was-the-flags

Conversation

@gHashTag

@gHashTag gHashTag commented Sep 3, 2026

Copy link
Copy Markdown
Owner

The StmtBreak comment in compiler.rs, written by #3014, carried two numbers
and both are scoped to a reading that the shipped fix superseded.

the comment said tri jumps census on master reads
"the 581 generated .v files" 643 generated .v files (581 is the specs/ subset)
"all fourteen sites" 17 sites in 8 files

The second is the finding. 14 is the current count of guard FLAGS, which
those 17 sites share — and fourteen was also the count of disable fork; lines
before the fix. So a reader who checks 14 against the census finds 14 and
concludes the comment is right. A wrong number of one quantity that equals a
right number of another, and therefore self-confirming.

Second occurrence of this class in two passes. #3017 corrected a referee
test whose comment carried patch C's 37 where the shipped change moves 7.
Both are a comment inside the fix quoting the number from before the
correction, and both survived review because the number was plausible. A third
occurrence means the cure is wrong rather than that this is another case.

Controls

  • Comment-only: tri seals drift reads zero across the sealed corpus, so
    no generated byte moved. FROZEN_HASH resealed in this commit.
  • My first control was broken and is worth recording. Comparing 31 freshly
    generated files against a cached corpus at /tmp/genv reported 7 differing.
    That corpus predates fix(verilog): a return inside a loop left the function and not the loop #3021grep -l 'while (.*!__t27_ret' returns 0 in it
    against 2 in a fresh one — and every one of the 7 diffs is fix(verilog): a return inside a loop left the function and not the loop #3021's guard plus
    its iteration-tail barrier (i = (i + 1); re-indented inside
    if (!__t27_ret) begin … end). A baseline of unknown provenance is a stale ruler.
    Before that, the same comparison printed same=0 differ=0 because the filename
    mapping was wrong — a control that compared nothing.

Refs #2988

🤖 Generated with Claude Code

The StmtBreak comment carried two numbers, both scoped to a reading this
fix superseded.

The population is 643 generated .v files, not the 581 under specs/.
And the sites are 17 in 8 files, not fourteen.

The second is the one worth having. `tri jumps census` on master reads
17 sites sharing 14 guard FLAGS, and fourteen was also the count of
`disable fork;` lines before the fix. So a reader checking 14 against
the census finds 14 and concludes the comment is right: a wrong number
of one quantity that equals a right number of another, and therefore
self-confirming.

Second occurrence of this class in two passes. #3017 corrected a referee
test whose comment carried patch C's 37 where the shipped change moves 7.
Both are a comment inside the fix quoting the number from before the
correction, and both survived review because the number was plausible.

Comment-only: `tri seals drift` reads zero across the sealed corpus, so
no generated byte moved. FROZEN_HASH resealed in this commit.

Refs #2988
@github-actions

github-actions Bot commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

📓 NotebookLM Notebook linked to this PR

This notebook contains session context, decisions, and artifacts for this work.

@github-actions

github-actions Bot commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-09-03 13:51:57 UTC

Summary

Status Count
Total Open PRs 11
PRs with Failing Checks 10
PRs with All Checks Green 1
READY 0
FAILING 10
PENDING 0

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=9b8875f1c9d4 != manifest seal=87e5cbd3ad94.
    The committed NMSE numbers were certified against an older compiler.rs.
    Run scripts/reseal-check.sh locally for the two-step reseal command (advisory; not a merge gate).

@gHashTag
gHashTag merged commit 04959f3 into master Sep 3, 2026
37 checks passed
@gHashTag
gHashTag deleted the w44-fourteen-was-the-flags branch September 3, 2026 14:10
gHashTag added a commit that referenced this pull request Sep 4, 2026
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 added a commit that referenced this pull request Sep 4, 2026
* docs: four justifications whose subjects are gone

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`.

* skill: the matcher that verifies your matcher is a matcher

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.

* docs: a seal that names a hash the file no longer holds

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.
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.

1 participant