Skip to content

Two clause shapes the code had already named - #2780

Merged
gHashTag merged 2 commits into
masterfrom
w699-tail
Aug 29, 2026
Merged

Two clause shapes the code had already named#2780
gHashTag merged 2 commits into
masterfrom
w699-tail

Conversation

@gHashTag

Copy link
Copy Markdown
Owner

Refs #2754

Taken because #2774 is an owner decision and everything else in the distribution is now that one construct.

Rung 10 — comma-separated bindings

given clk = true, rst_n = false, angle = 4096, valid_in = true

The clause loop's own comment names this shape as a reason a block can stop mid-clause — "e.g. on the comma of given clk = true, rst_n = false" — and nothing ever acted on it. 19 fallback events in specs/igla/race/cordic_top.t27 alone, each taking a whole block of clauses with it.

Same line only: a comma opening the next line is somebody else's punctuation. A list this cannot finish restores to the comma and keeps what it read.

Rung 11 — a typed binding

given crossings: [i32] = []

The binding arm peeked for = immediately after the name, so an annotation between them read as not a binding and the clause — with its whole block — went to the discard. 17 events across 4 specs. The type is parsed and kept on the declaration, the way var x : T = v already does in the statement arm.

before after
discarded tokens 25 093 23 926 (−1 167)
specs discarding 77 76
Zig / rustc / cc / iverilog / ALL FOUR 214 / 214 / 163 / 373 / 66 all held

Per-spec: zero rows differ across 650 specs. Nothing was traded.

Instrument

--fallbacks --show <spec> scopes the fallback census to one file. The corpus view said 19 events in 1 spec and could not say which — a census that names a target you then cannot open stops one step short.

What is left

863 forall events in two spellings (#2774); 38 for events that are specs written in a syntax the language does not have (for (const i) |reg| in [...]); and a tail of 30.

parse-conform               24/24, both new cases load-bearing
cargo test --no-fail-fast   2432 passed, 0 failed
suite --ratchet             RATCHET: CLEAN, ledger 168 -> 167
check_seal_coverage.py      exit 0
check_elab_ratchet.py       exit 0
check_specs_generate.py     exit 0

🤖 Generated with Claude Code

W699 rungs 10 and 11 -- the long tail, taken because #2774 is an owner decision
and everything else in the distribution is now that one construct.

RUNG 10: comma-separated bindings.

    given clk = true, rst_n = false, angle = 4096, valid_in = true

The clause loop's own comment names this shape as a reason a block can stop
mid-clause -- "e.g. on the comma of `given clk = true, rst_n = false`" -- and
nothing ever acted on it. 19 fallback events in specs/igla/race/cordic_top.t27
alone, each taking a whole block of clauses with it.

Same line only: a comma opening the next line is somebody else's punctuation.
A list this cannot finish restores to the comma and keeps what it read.

RUNG 11: a typed binding.

    given crossings: [i32] = []

The binding arm peeked for `=` IMMEDIATELY after the name, so an annotation
between them read as "not a binding" and the clause -- with its whole block --
went to the discard. 17 events across 4 specs. The type is parsed and kept on the
declaration, the way `var x : T = v` already does in the statement arm.

    discarded tokens  25093 -> 23926   (-1 167)
    specs discarding     77 -> 76
    Zig 214, rustc 214, cc 163, iverilog 373, ALL FOUR 66 -- ALL HELD
    per-spec: zero rows differ across 650 specs

INSTRUMENT: `--fallbacks --show <spec>` scopes the fallback census to one file.
The corpus view said "19 events in 1 spec" and could not say WHICH, and a census
that names a target you then cannot open stops one step short.

What is left after this is 863 `forall` events in two spellings (#2774), 38
`for` events that are specs written in a syntax the language does not have
(`for (const i) |reg| in [...]`), and a tail of 30.

    parse-conform              24/24, both new cases load-bearing
    cargo test --no-fail-fast  2432 passed, 0 failed
    suite --ratchet            RATCHET: CLEAN, ledger 168 -> 167
    check_seal_coverage.py     exit 0
    check_elab_ratchet.py      exit 0
    check_specs_generate.py    exit 0

Refs #2754

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-08-29 04:48:05 UTC

Summary

Status Count
Total Open PRs 8
PRs with Failing Checks 7
PRs with All Checks Green 1
READY 0
FAILING 7
PENDING 0

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=347e84842d90 != 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).

@github-actions

Copy link
Copy Markdown
Contributor

📓 NotebookLM Notebook linked to this PR

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

…ve made (173-175)

Two rungs this pass were shapes the parser had already described in prose and
never handled -- and with the fn-given arm and the forall arm that is four
defects in one file where somebody wrote the shape down and stopped short.

And I deferred a failing assertion to "someone who knows the intended encoding"
when both functions were in the same file; twelve lines of Python answered it and
found a second bug the first one hid.

Refs #2754, #2778

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-08-29 04:49:26 UTC

Summary

Status Count
Total Open PRs 8
PRs with Failing Checks 7
PRs with All Checks Green 1
READY 0
FAILING 7
PENDING 0

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=347e84842d90 != 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).

@github-actions

Copy link
Copy Markdown
Contributor

📓 NotebookLM Notebook linked to this PR

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

@gHashTag
gHashTag merged commit 9f3d4fd into master Aug 29, 2026
34 checks passed
@gHashTag
gHashTag deleted the w699-tail branch August 29, 2026 05:02
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