Skip to content

tools: the capacity fixture must not speak one compiler's dialect - #3452

Merged
gHashTag merged 1 commit into
masterfrom
fix/capacity-vendor
Sep 8, 2026
Merged

tools: the capacity fixture must not speak one compiler's dialect#3452
gHashTag merged 1 commit into
masterfrom
fix/capacity-vendor

Conversation

@gHashTag

@gHashTag gHashTag commented Sep 8, 2026

Copy link
Copy Markdown
Owner

Refs #3450

The gate I merged an hour ago went red on master, and it was mine.

The self-check asserted clang's exact wording:

use of undeclared identifier

On the ubuntu runner cc is gcc, which says:

'undefined_0' undeclared

Same defect, other dialect, and my assertion read it as a broken compiler. It
now asserts the identifierundefined_0 — which every C compiler must
name whatever its phrasing. The rustc, zig, iverilog and yosys fixtures were
pinned to one vendor's prose too, and all five are fixed.

The graceful degradation worked in that same run: zig, iverilog and
yosys were absent and were named as skipped rather than failing. The
failure was one wrong line, not the shape.

The uncapping flags are not interchangeable, and the failure is the worse kind

compiler -ferror-limit=0 -fmax-errors=0
clang works — 50 of 50 accepted and ignored — 20 of 50
gcc rejected works

A flag that is accepted and ignored is worse than one that is refused:
nothing in the output says so. c_uncap_flag() picks by vendor, and the
self-check verifies the effect rather than the spelling — the uncapped
invocation must report all 50.

cc (default) becomes informational rather than ratcheted: its value is a
property of the vendor (clang stops at 20, gcc does not stop), so a runner
switching compilers must not turn the gate red.

Controls, all re-run

control expected got
planted truncation red exit 1
PATH with cc only pass, naming 4 skips exit 0
empty PATH could not run exit 2
the accepted-and-ignored flag substituted red exit 1

Refs #3450

The gate went red on master minutes after it merged, and it was mine. The
self-check asserted clang's exact wording,

    use of undeclared identifier

and on the ubuntu runner `cc` is gcc, which says

    'undefined_0' undeclared

Same defect, other dialect, and the assertion read it as a broken compiler.
It now asserts the IDENTIFIER -- `undefined_0` -- which every C compiler must
name whatever its phrasing. The same change applies to the rustc, zig,
iverilog and yosys fixtures, all of which were pinned to one vendor's prose.

The graceful degradation worked in that same run: zig, iverilog and yosys were
absent and were named as skipped rather than failing. The failure was one
wrong line, not the shape.

THE UNCAPPING FLAGS ARE NOT INTERCHANGEABLE, and the failure is the worse
kind. gcc rejects `-ferror-limit`; clang ACCEPTS `-fmax-errors=0` AND IGNORES
IT -- 20 of 50 planted errors, with no diagnostic about the flag. A flag that
is accepted and ignored is worse than one that is refused, so `c_uncap_flag`
picks by vendor and the self-check verifies the EFFECT rather than the
spelling: the uncapped invocation must report all 50.

The `cc (default)` row becomes informational rather than ratcheted. Its value
is a property of the vendor -- clang stops at 20, gcc does not stop -- so a
runner switching compilers must not turn the gate red.

Controls, all re-run: a planted truncation exits 1; a one-compiler PATH passes
while naming four skips; an empty PATH exits 2; and substituting the
accepted-and-ignored flag fails the self-check.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@gHashTag
gHashTag enabled auto-merge (squash) September 8, 2026 02:21
@github-actions

github-actions Bot commented Sep 8, 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 8, 2026

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-09-08 02:21:32 UTC

Summary

Status Count
Total Open PRs 16
PRs with Failing Checks 13
PRs with All Checks Green 3
READY 2
FAILING 13
PENDING 0
NO CHECKS YET 0

These columns do not partition: 2 + 13 + 0 + 0 = 15, and there are 16 open PRs. A PR is being counted twice or not at all.

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=911a664330ef != 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 39ffe03 into master Sep 8, 2026
30 of 33 checks passed
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