Skip to content

One missing brace in 27 specs — the cross-target proof was never running - #2186

Merged
gHashTag merged 1 commit into
masterfrom
loop/t27-genrust-width
Aug 18, 2026
Merged

One missing brace in 27 specs — the cross-target proof was never running#2186
gHashTag merged 1 commit into
masterfrom
loop/t27-genrust-width

Conversation

@gHashTag

Copy link
Copy Markdown
Owner

emit-bitexact has been red since 2026-08-14 (#2184). The cause is one character.

A bulk edit appended test <name>_w339_batch_depth_invariant_2 { to 27 spec files and omitted the closing } in every one. The parser then hits the next test keyword while still inside the block:

parse error in fn 'ternary_mac_w339_batch_depth_invariant_2' near line 1815:
unexpected token after expression statement: KwTest

That message is exact — file, function, line, token. Nothing surfaced it, because three layers each reported something else:

layer said true?
CI gate IGLA RACE CROSS-TARGET MISMATCH no — nothing was compared
verify_igla_race.py FAIL: C backend failed to build/run no — the backend never ran
t27c parse error … near line 1815 yes

verify_igla_race.py runs its builds with capture_output=True and inspects only returncode, so the compiler's message was collected and discarded. A diagnostic that names the wrong subsystem costs more than none: it sends the reader to the backend, and the top-level claim ("the C and Rust backends diverge") is far more alarming than the truth.

After closing 27 braces, verify_igla_race.py exits 0:

OK ternary_mul/mac:      C == reference BIT-EXACT over 800 vectors
OK ternary_mul/mac:      Rust == reference BIT-EXACT over 800 vectors
OK systolic_ternary_pe:  C == reference BIT-EXACT over 800 vectors (i16 psum)
OK systolic_ternary_pe:  Rust == reference BIT-EXACT over 800 vectors (i16 psum)
IGLA RACE ternary MAC + systolic PE BIT-EXACT ACROSS TARGETS (C + Rust + model)

So there was no cross-target divergence. #2184 is corrected by this: the i16 + i8 no-cast gap in gen_rust is real and separately documented in the script, but it is worked around there and was never what made the gate red.

Not in scope, deliberately. Closing the braces reveals that 15 of 27 igla specs still fail on unrelated parser features (unknown cast target type f32, Unexpected top-level token: KwModule), overlapping #2174. Those are a different class and are reported, not fixed here.

Gate: tools/check_specs_parse.py asks the question those three layers did not — does t27c accept the file — and prints the compiler's own message. It carries a negative control that plants an unclosed block and proves the gate rejects it.

Refs #2184

Closes #2185

🤖 Generated with Claude Code

…f was never running

emit-bitexact has been red since 2026-08-14. The cause is one character.

A bulk edit appended 'test <name>_w339_batch_depth_invariant_2 {' to 27 spec
files and omitted the closing brace in every one, so the parser hits the next
'test' keyword while still inside the block. Three layers then reported three
different things, and only the innermost was true:

  CI gate               IGLA RACE CROSS-TARGET MISMATCH   nothing was compared
  verify_igla_race.py   FAIL: C backend failed to build   the backend never ran
  t27c                  parse error in fn '...' near line 1815: unexpected token
                        after expression statement: KwTest          <- correct

verify_igla_race.py runs its builds with capture_output=True and inspects only
returncode, so the compiler's message -- which named the file, the function, the
line and the token -- was collected and discarded. A diagnostic that names the
wrong subsystem costs more than no diagnostic: 'the C and Rust backends diverge'
is a much more alarming claim than 'a spec has a typo', and it is where four days
of reading went.

There was no cross-target divergence. With the braces closed:

  OK ternary_mul/mac:      C == reference BIT-EXACT over 800 vectors
  OK ternary_mul/mac:      Rust == reference BIT-EXACT over 800 vectors
  OK systolic_ternary_pe:  C == reference BIT-EXACT over 800 vectors (i16 psum)
  OK systolic_ternary_pe:  Rust == reference BIT-EXACT over 800 vectors (i16 psum)

#2184 is corrected accordingly. The i16 + i8 no-cast gap in gen_rust is real and
documented in the script, but it is worked around there and was never the cause.

The 27 sites were edited mechanically only after confirming all 27 share one
shape -- comment, assert(true), blank line -- and the one already-correct site
was left alone. Each file's parse was then checked individually.

tools/check_specs_parse.py asks what the three layers did not, prints the
compiler's own message, and carries a negative control that plants an unclosed
block and proves the gate rejects it. It runs ahead of every other step because
it is their precondition.

Reported, not fixed: closing the braces reveals 15 of 27 igla specs still failing
on unrelated parser features (unknown cast target type f32, Unexpected top-level
token KwModule), overlapping #2174.

Closes #2185
Refs #2184

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

Copy link
Copy Markdown
Contributor

📓 NotebookLM Notebook linked to this PR

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

@github-actions

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-08-18 12:25:02 UTC

Summary

Status Count
Total Open PRs 29
PRs with Failing Checks 12
PRs with All Checks Green 17
READY 9
FAILING 12
PENDING 0

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=cd2822f290eb != 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 a8556ff into master Aug 18, 2026
19 checks passed
@gHashTag
gHashTag deleted the loop/t27-genrust-width branch August 18, 2026 12:33
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.

One missing brace in 27 specs, and three layers of diagnostics that named the wrong subsystem

1 participant