A bare call is a statement, not a clause head - #2773
Merged
Conversation
W699 rung 4, found by `tri discard top` -- the command exists because a count of
87 does not say where to start, and the largest entry was 1 873 tokens.
test deque_init_empty
var data : [10]i32 = undefined;
deque_init(&data, &front, &back, &count); <- discarded
assert count == 0 <- and this
`deque_init` is an Ident, so it was read as a CLAUSE HEAD and its argument list
as the clause's value. That shape is not a clause, the lowering failed, and the
whole block fell to the discard -- taking the assertions with it.
The calls are what SET UP the state the assertions check. Recovering the asserts
without them would have produced code that cannot run; this is why the rung is
worth more than its token count.
Same guards as the const/var arm: only once the block's column is known, only at
or deeper than it, never at column 1 where a body statement and a module
declaration are indistinguishable (W905). A shape it cannot read restores and
falls through to the clause reading, costing only itself.
discarded tokens 32485 -> 30451 (-2034)
cc accepts it 157 -> 158
Zig 217, rustc 214, iverilog 373, ALL FOUR 63 -- all held
per-spec: one row moved, and it moved UP
THE RATCHET FROM TWO HOURS AGO PAID FOR ITSELF ON THE NEXT COMMIT. It named all
six improved specs and by how much, without being asked:
< specs/isa/ternary_deque.t27 discards 749, pinned at 1873 (-1124)
< specs/isa/ternary_bitwise.t27 discards 674, pinned at 1223 (-549)
< specs/isa/ternary_shift.t27 discards 552, pinned at 705 (-153)
< specs/isa/ternary_arithmetic.t27 discards 807, pinned at 907 (-100)
< specs/fpga/vcd_conformance_compare.t27 38, pinned at 120 (-82)
< specs/memory/notebooklm.t27 discards 441, pinned at 467 (-26)
Re-blessed: 87 entries, 30 451 tokens. 19 specs re-sealed, 14 twins synced.
parse-conform 20/20, new case load-bearing (reverting fails it)
cargo test --no-fail-fast 2430 passed, 0 failed
suite --ratchet RATCHET: CLEAN, exit 0
check_seal_coverage.py exit 0
check_specs_generate.py exit 0
Refs #2754
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The previous commit's message says `cargo test --no-fail-fast 2430 passed`.
Measured: 2429. I wrote the number expecting the new conformance case to add one,
and it does not -- `parse-conform` is a `t27c` subcommand, not a cargo test, so
the 20th case is checked by `t27c parse-conform` and never appears in that total.
Corrected here rather than by amending: the previous commit is pushed, and a
mangled number in a message is not worth rewriting history for (skill 155, which
I wrote after doing exactly that earlier today).
cargo test --no-fail-fast 2429 passed, 0 failed
t27c parse-conform 20 cases, 20 passing
Refs #2754
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Contributor
|
📓 NotebookLM Notebook linked to this PR
This notebook contains session context, decisions, and artifacts for this work. |
Contributor
PR DashboardGenerated at: 2026-08-29 01:25:12 UTC
Summary
Seal Status
|
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.
Refs #2754
Found by
tri discard top, which exists because a count of 87 does not say where to start. The largest entry was 1 873 tokens.deque_initis an Ident, so it was read as a clause head and its argument list as the clause's value. That shape is not a clause, the lowering failed, and the whole block fell to the discard — taking the assertions with it.The calls are what set up the state the assertions check. Recovering the asserts without them would have produced code that cannot run, which is why this rung is worth more than its token count.
Same guards as the
const/vararm: only once the block's column is known, only at or deeper than it, never at column 1 where a body statement and a module declaration are indistinguishable (W905). A shape it cannot read restores and falls through to the clause reading, costing only itself.Per-spec: exactly one row moved, and it moved up.
The ratchet from two hours ago paid for itself on the next commit
#2772 taught the ledger to carry a magnitude. Without being asked, it named all six improved specs and by how much:
Before that PR this improvement would have been invisible: the population stayed at 87 either way. Re-blessed to 30 451; 19 specs re-sealed and 14 twins synced with
tri seals sync-twins.The second commit corrects a test count I wrote in the first before measuring it — 2430 where the measurement is 2429. Corrected by a follow-up rather than an amend.
🤖 Generated with Claude Code