Skip to content

ci: pin z3 on windows to 4.15.2 (official release binary) - #1081

Merged
gustavo-grieco merged 1 commit into
mainfrom
ci-pin-z3-windows
Jul 21, 2026
Merged

ci: pin z3 on windows to 4.15.2 (official release binary)#1081
gustavo-grieco merged 1 commit into
mainfrom
ci-pin-z3-windows

Conversation

@gustavo-grieco

Copy link
Copy Markdown
Collaborator

Problem

The build (windows-latest) job currently fails on every PR (e.g. #1080) with 3 test failures:

  • negative-numbers-zero-comp — expected 1 counterexample, got 0
  • negative-numbers-zero-comp-simpleassert — expected 1 counterexample, got 0
  • eq-issue-with-length-cex-bug679 — cex found but doesn't match the expected model

This is unrelated to any recent hevm change: the windows job installs z3 via msys2's rolling package repo (z3:p in the pacboy list), so each run silently picks up whatever msys2 currently ships.

  • Last green run on main (Jul 6): msys2 z3 4.15.2-5
  • Failing runs now: msys2 z3 4.16.0-1

I could not reproduce any of the three failures with the official z3 4.16.0 release binary (macOS): hevm symbolic on assert(x >= 0) finds the counterexample, and the bug679 equivalence check produces the exact expected 0xff…fe0c calldata. So the breakage looks specific to the msys2 4.16.0 package (or z3-4.16-on-windows), not to upstream z3 4.16 semantics generally.

Fix

Install z3 on windows from the official Z3Prover release archive, pinned to 4.15.2 (the last version windows CI was green on) — exactly the pattern this job already uses for bitwuzla (0.8.2) and cvc5 (1.3.0). $Z3_PATH is added to the test and rpc-test PATH exports.

Solver upgrades on windows now happen via an explicit, bisectable diff instead of silently on the runner image.

🤖 Generated with Claude Code

The windows job installed z3 from msys2's rolling package repo, so every
CI run picked up whatever version msys2 currently ships. When msys2 moved
from z3 4.15.2 to 4.16.0, three solver tests started failing on windows
only (negative-numbers-zero-comp, negative-numbers-zero-comp-simpleassert,
eq-issue-with-length-cex-bug679) — the same queries pass with the official
upstream z3 4.16.0 build on other platforms, so this is specific to the
msys2 4.16.0 package.

Install z3 from the official Z3Prover release archive instead, pinned to
4.15.2 (the last version windows CI was green on), exactly like bitwuzla
and cvc5 already are in this job. Solver upgrades now happen via an
explicit diff instead of silently on the runner.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@gustavo-grieco
gustavo-grieco merged commit 7aa2322 into main Jul 21, 2026
17 of 18 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.

2 participants