3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2026-08-08 15:02:09 +00:00
z3/.github/workflows
Lev Nachmanson 249778137d
CI: collect F* test suite failure artifacts (#10390)
Fixes #10375.

## Analysis of [run
30786942559](https://github.com/Z3Prover/z3/actions/runs/30786942559)

The job is green, but `make test` exited 2. Every failing test is an
**expected-output mismatch**, and all 70 of them differ only by the
`--proof_recovery` banner:

```
   - The SMT solver could not prove the query.
+  - This query was retried due to the --proof_recovery option, yet it still
+    failed on all attempts.
```

That text comes from `--proof_recovery` in the workflow's own
`fstar_otherflags` default, which F*'s `.expected` files do not carry —
so these are configuration mismatches, not Z3 regressions. There are
also failures that never reach the solver (`hello.__all`, `dune`,
extraction diffs on `RemoveUnusedTypars_B.fs` / `Bug3865.out`).

None of that was reconstructible from the artifact: the run uploaded 526
`.smt2` files, almost all logged failing queries from negative tests
that are *supposed* to fail, and nothing else. No logs, no produced
output, no `.expected` oracle, no diff.

## Changes

* **`Resolve FStar options`** — computes `OTHERFLAGS` once (removing the
duplicated `--z3version` extraction) and enforces
`--log_failing_queries`. Scheduled runs get no `workflow_dispatch`
inputs, so the options that make F* emit `.smt2` files are hard-wired
instead of assumed to come from the inputs. The effective flags are
recorded in the artifact, the job summary and the discussion.
* **`Build FStar`** now tees to a log, as the test step already did.
* **`Collect FStar failure artifacts`** replaces `Collect generated SMT2
files` and produces:
* `logs/` — build log, test log, versions, commit, effective flags, and
a `failing-tests.txt` summary of mismatched outputs plus failed make
targets;
  * `smt2/` — the logged failing queries, as before;
* `test-output/` — for every expected-output test whose result differs
from its oracle: `<name>.actual`, `<name>.expected` and a unified
`<name>.diff`.
* **Upload always runs.** Previously, if no `.smt2` file existed the
collect step short-circuited and the upload was skipped, so the hardest
failures produced no artifact at all.
* The failure summary is surfaced in the **job summary** and in the
**discussion**, so a mismatch is visible without downloading anything.

Applied to the run above, `test-output/` would hold the
actual/expected/diff triple for each of the 70 mismatches and
`failing-tests.txt` would list them alongside `hello.__all` and the
other non-SMT failures.

## Validation

The workflow parses as YAML; every `run:` block passes `bash -n` and the
`github-script` body passes `node --check`. The new steps were executed
locally against a fixture reproducing the run's failure shapes:

* mismatched `.output` / `.json_output` / `.ideout` / `.fs` / `.out`
files are collected with correct diffs; the generated diff for
`Basic.fst.output` reproduces the annotation in the run exactly;
* matching outputs, `_output` files with no `.expected`, and files over
4 MB are correctly skipped;
* failed make targets are parsed from both logs;
* with no F* tree at all (build failed before clone) the collector still
exits 0 and the artifact still contains the logs;
* option resolution was checked with the default flags, with
`--log_failing_queries` absent, with empty flags, and with an
unparseable `z3 --version`;
* the rendered discussion body is 53 040 characters in the worst case,
below GitHub's 65 536 limit.

Behaviour deliberately unchanged: the build and test steps keep
`continue-on-error`, so a broken F* master still does not block the
report.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-08-05 09:03:37 -07:00
..
shared
a3-python.lock.yml Recompile agentic workflow lockfiles and refresh pinned AW metadata (#10315) 2026-07-30 16:43:39 -07:00
a3-python.md
academic-citation-tracker.lock.yml Recompile agentic workflow lockfiles and refresh pinned AW metadata (#10315) 2026-07-30 16:43:39 -07:00
academic-citation-tracker.md Fix agentic workflow auth by using Actions token-based Copilot inference 2026-07-28 02:22:11 -07:00
agentics-maintenance.yml Recompile agentic workflow lockfiles and refresh pinned AW metadata (#10315) 2026-07-30 16:43:39 -07:00
android-build.yml Bump actions/checkout from 7.0.0 to 7.0.1 (#10208) 2026-07-23 19:17:49 -07:00
api-coherence-checker.lock.yml Recompile agentic workflow lockfiles and refresh pinned AW metadata (#10315) 2026-07-30 16:43:39 -07:00
api-coherence-checker.md Fix agentic workflow auth by using Actions token-based Copilot inference 2026-07-28 02:22:11 -07:00
build-warning-fixer.lock.yml Route Clang-Tidy Warning Fixer to report-run artifacts and issue-based diff proposals (#10350) 2026-08-01 13:02:16 -07:00
build-warning-fixer.md Switch clang-tidy warning fixer from artifact downloads to job logs (#10354) 2026-08-01 14:35:53 -07:00
build-z3-cache.yml Bump actions/checkout from 7.0.0 to 7.0.1 (#10208) 2026-07-23 19:17:49 -07:00
ci.yml Remove z3_tptp5 example build steps from GitHub Actions 2026-07-29 15:53:08 -07:00
clang-tidy-warning-report.yml Fix cmake build command for parallel execution 2026-08-03 20:36:53 -07:00
code-conventions-analyzer.lock.yml Recompile agentic workflow lockfiles and refresh pinned AW metadata (#10315) 2026-07-30 16:43:39 -07:00
code-conventions-analyzer.md
code-simplifier.lock.yml Recompile agentic workflow lockfiles and refresh pinned AW metadata (#10315) 2026-07-30 16:43:39 -07:00
code-simplifier.md Fix Code Simplifier agent authentication in GitHub Actions (#10222) 2026-07-24 19:29:54 -07:00
compare-stats-anomaly-reporter.lock.yml Recompile agentic workflow lockfiles and refresh pinned AW metadata (#10315) 2026-07-30 16:43:39 -07:00
compare-stats-anomaly-reporter.md
copilot-setup-steps.yml
coverage.yml Remove z3_tptp5 example build steps from GitHub Actions 2026-07-29 15:53:08 -07:00
cross-build.yml Bump actions/checkout from 7.0.0 to 7.0.1 (#10208) 2026-07-23 19:17:49 -07:00
csa-analysis.lock.yml Recompile agentic workflow lockfiles and refresh pinned AW metadata (#10315) 2026-07-30 16:43:39 -07:00
csa-analysis.md
docs.yml Bump actions/setup-node from 6.4.0 to 7.0.0 (#10313) 2026-07-30 15:18:42 -07:00
fstar-master-build.yml CI: collect F* test suite failure artifacts (#10390) 2026-08-05 09:03:37 -07:00
issue-backlog-processor.lock.yml Recompile agentic workflow lockfiles and refresh pinned AW metadata (#10315) 2026-07-30 16:43:39 -07:00
issue-backlog-processor.md Fix agentic workflow auth by using Actions token-based Copilot inference 2026-07-28 02:22:11 -07:00
mark-prs-ready-for-review.yml
memory-safety-report.lock.yml Recompile agentic workflow lockfiles and refresh pinned AW metadata (#10315) 2026-07-30 16:43:39 -07:00
memory-safety-report.md Fix agentic workflow auth by using Actions token-based Copilot inference 2026-07-28 02:22:11 -07:00
memory-safety.yml Bump actions/checkout from 7.0.0 to 7.0.1 (#10208) 2026-07-23 19:17:49 -07:00
msvc-static-build-clang-cl.yml Bump actions/checkout from 7.0.0 to 7.0.1 (#10208) 2026-07-23 19:17:49 -07:00
msvc-static-build.yml Bump actions/checkout from 7.0.0 to 7.0.1 (#10208) 2026-07-23 19:17:49 -07:00
nightly-validation.yml Fix nightly-validation macOS wheel install by rewriting 13_3 platform tag to 13_0 2026-07-28 01:25:42 -07:00
nightly.yml Fix nightly release deployment tag permissions (#10383) 2026-08-04 12:32:12 -07:00
ocaml.yaml Bump actions/checkout from 7.0.0 to 7.0.1 (#10208) 2026-07-23 19:17:49 -07:00
ostrich-benchmark.lock.yml Recompile agentic workflow lockfiles and refresh pinned AW metadata (#10315) 2026-07-30 16:43:39 -07:00
ostrich-benchmark.md
pyodide-pypi.yml Bump pypa/cibuildwheel from 4.1.0 to 4.1.1 (#10312) 2026-07-30 15:14:08 -07:00
release-notes-updater.lock.yml Recompile agentic workflow lockfiles and refresh pinned AW metadata (#10315) 2026-07-30 16:43:39 -07:00
release-notes-updater.md
release.yml Bump actions/checkout from 7.0.0 to 7.0.1 (#10208) 2026-07-23 19:17:49 -07:00
smtlib-benchmark-finder.lock.yml Recompile agentic workflow lockfiles and refresh pinned AW metadata (#10315) 2026-07-30 16:43:39 -07:00
smtlib-benchmark-finder.md Fix agentic workflow auth by using Actions token-based Copilot inference 2026-07-28 02:22:11 -07:00
specbot-crash-analyzer.lock.yml Recompile agentic workflow lockfiles and refresh pinned AW metadata (#10315) 2026-07-30 16:43:39 -07:00
specbot-crash-analyzer.md Fix agentic workflow auth by using Actions token-based Copilot inference 2026-07-28 02:22:11 -07:00
tactic-to-simplifier.lock.yml Recompile agentic workflow lockfiles and refresh pinned AW metadata (#10315) 2026-07-30 16:43:39 -07:00
tactic-to-simplifier.md
tptp-benchmark.lock.yml Recompile agentic workflow lockfiles and refresh pinned AW metadata (#10315) 2026-07-30 16:43:39 -07:00
tptp-benchmark.md Fix agentic workflow auth by using Actions token-based Copilot inference 2026-07-28 02:22:11 -07:00
wasm-release.yml Bump actions/setup-node from 6.4.0 to 7.0.0 (#10313) 2026-07-30 15:18:42 -07:00
wasm.yml Bump actions/setup-node from 6.4.0 to 7.0.0 (#10313) 2026-07-30 15:18:42 -07:00
Windows.yml ci: add MinGW build/test job to Windows.yml (#10211) 2026-07-24 13:11:08 -07:00
wip.yml Bump actions/checkout from 7.0.0 to 7.0.1 (#10208) 2026-07-23 19:17:49 -07:00
workflow-suggestion-agent.lock.yml Recompile agentic workflow lockfiles and refresh pinned AW metadata (#10315) 2026-07-30 16:43:39 -07:00
workflow-suggestion-agent.md Fix agentic workflow auth by using Actions token-based Copilot inference 2026-07-28 02:22:11 -07:00
zipt-code-reviewer.lock.yml Recompile agentic workflow lockfiles and refresh pinned AW metadata (#10315) 2026-07-30 16:43:39 -07:00
zipt-code-reviewer.md recompile workflows 2026-07-28 01:05:54 -07:00