Skip to content

ci(coq): report all thirteen files instead of stopping at the first error - #3342

Open
gHashTag wants to merge 1 commit into
masterfrom
w119b-compile-all
Open

ci(coq): report all thirteen files instead of stopping at the first error#3342
gHashTag wants to merge 1 commit into
masterfrom
w119b-compile-all

Conversation

@gHashTag

@gHashTag gHashTag commented Sep 6, 2026

Copy link
Copy Markdown
Owner

Refs #3328

coqc ... || exit 1 thirteen times stops at the first failure. One CI run
therefore yields exactly one error, and learning how many of the 13 files
compile costs one run per file at ~4 minutes each.

That was harmless while the job could not start at all. It became the binding
constraint the moment it could: this workflow had never got past opam install
(#3324, #3326), so coqc had never run on these proofs, and the first thing it
said was that file 1 of 13 does not compile. The state of the other twelve is
unknown, not passing — and a stop-at-first-error loop cannot answer that.

What it prints now

=== Coq compile report: 11 of 13 compiled ===
  FAIL      CorePhi.v                  File "./CorePhi.v", line 14, characters 8-24:
  ok        AlphaPhi.v
  ok        FormulaEval.v
  ok        Bounds_Masses.v
  FAIL*     Bounds_Mixing.v            Error: Cannot find library Trinity.CorePhi
  ok        Bounds_Gauge.v
  ...
  FAIL* = failed AFTER an earlier failure; may be a cascade, not
  an independent defect. Only the first FAIL is certainly its own.

These compile in dependency order and a missing .vo cascades, so presenting
every failure as its own defect would overstate the problem. Full coqc output
per failing file goes into a collapsed ::group:: — nothing is lost, the table
stays readable.

Exit behaviour is unchanged: any failure still fails the job.

Verification

Run locally against a stub coqc:

stub expected got
fails on files 1 and 5 11 of 13, FAIL then FAIL*, exit 1
passes everything "All files compiled successfully!", exit 0

Checked with sh -n as well as bash -n — the container runs sh -e {0}, so a
bashism would have been a runtime failure rather than a syntax error.

This PR runs the workflow on itself, so its own run is the first full reading of
how many of the 13 proof files actually compile.

…rror

Refs #3328

`coqc ... || exit 1` thirteen times stops at the first failure. One CI run
therefore yields exactly one error, and finding out how many of the 13 files
compile costs one run per file at roughly four minutes each.

That was harmless while the job could not start at all. It became the binding
constraint the moment it could: this workflow had never got past `opam install`,
so coqc had never run on these proofs, and the first thing it said was that file
1 of 13 does not compile. The state of the other twelve was UNKNOWN -- not
passing -- and a stop-at-first-error loop cannot answer that question cheaply or
at all.

The step now attempts every file and prints a table with a count. Failures after
the first are tagged FAIL*, because these compile in dependency order and a
missing .vo cascades: only the first failure is certainly its own defect. The
full coqc output for each failing file goes into a collapsed `::group::` so the
table stays readable and nothing is lost.

Exit behaviour is unchanged -- any failure still fails the job.

Controls, run locally against a stub `coqc`:
  - stub fails on files 1 and 5  -> "11 of 13 compiled", FAIL on CorePhi.v,
                                     FAIL* on Bounds_Mixing.v, exit 1
  - stub passes everything       -> "All files compiled successfully!", exit 0
Checked with `sh -n` as well as `bash -n`: the container runs `sh -e {0}`, so a
bashism would have been a runtime failure and not a syntax error here.
@github-actions

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

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-09-06 02:01:50 UTC

Summary

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

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=60f03d78aeca != 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 enabled auto-merge (squash) September 6, 2026 02:18
This was referenced Sep 6, 2026
This was referenced Sep 8, 2026
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