Skip to content

fix(tri): an unplaceable failure is not a generation refusal - #2996

Merged
gHashTag merged 2 commits into
masterfrom
w42-vsim-unknown
Aug 30, 2026
Merged

fix(tri): an unplaceable failure is not a generation refusal#2996
gHashTag merged 2 commits into
masterfrom
w42-vsim-unknown

Conversation

@gHashTag

Copy link
Copy Markdown
Owner

Self-audit of #2993 against the section that merged beside it.

tri vsim funnel had two arms returning Stage::Gen for states nobody
measured:

let Ok(out) = out else {
    return Stage::Gen;          // could not SPAWN -- no perl, no binary
};
...
return Stage::Gen;              // failed, and no message matched any arm

Both file a hole in the reader as a verdict about the spec. That is exactly the
shape of ci-gates 428, which merged an hour earlier in #2995 — written after
three status readers of mine were wrong in one session, and then sitting in my
own code.

The change

  • new Unattributed stage with its own printed row,
    failed, and nothing said where
  • attribution extracted into attribute_failure(&log), so the decision can be
    tested without spawning a process
  • two tests: a message matching no arm is Unattributed and not Gen
    ("" too), and each of the four arms is reachable by the compiler's own words

Measured, 650 specs, at d7f20a559

  refused by gen-verilog-for-simulation    69      (unchanged)
  iverilog rejected the testbench         410      (unchanged)
  simulation exited non-zero                0      (unchanged)
  ran and REPORTED FAILURES                 9      (unchanged)
  ran and produced a verdict              107      (unchanged)
  ran, exit 0, and said NOTHING            55      (unchanged)
  timed out at 60s                          0      (unchanged)
  failed, and nothing said where            0      <- new

Nothing was being misfiled today. The change is preventive, and the row
prints its zero rather than being omitted, because a reader cannot otherwise
tell none from not looked for — the same reason the vacuity census on this
page prints its zeros beside its hits.

Refs #2987

🤖 Generated with Claude Code

`tri vsim funnel` shipped in #2993 with two arms returning `Stage::Gen` for
states nobody had measured: a process that could not be spawned, and a failure
whose message matched none of the four patterns. Both file a hole in this reader
as a verdict about the spec -- the shape ci-gates 428 names, written in the same
session and then present in my own code.

  * new `Unattributed` stage, with its own printed row
  * attribution extracted into `attribute_failure(&log)`, so the decision can be
    tested without spawning anything
  * two tests: a message matching no arm is Unattributed and NOT Gen; and each
    of the four arms is reachable by the compiler's own words

Measured over 650 specs at d7f20a5: the new row reads 0 and every other row is
identical (69 / 410 / 0 / 9 / 107 / 55 / 0). Nothing was being misfiled today --
the change is preventive, and the zero is printed beside the hits because a
reader cannot otherwise tell "none" from "not looked for".

Refs #2987
@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-30 22:18:08 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)=fd84214651ae != 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

PR Dashboard

Generated at: 2026-08-30 22:28:42 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)=fd84214651ae != 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 9503515 into master Aug 30, 2026
36 checks passed
@gHashTag
gHashTag deleted the w42-vsim-unknown branch August 30, 2026 22:38
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