Skip to content

ci: expose r0vm on PATH and add timeout to risc0 job - #761

Open
ch4r10t33r wants to merge 6 commits into
mainfrom
fix/risc0-ci-r0vm-path
Open

ci: expose r0vm on PATH and add timeout to risc0 job#761
ch4r10t33r wants to merge 6 commits into
mainfrom
fix/risc0-ci-r0vm-path

Conversation

@ch4r10t33r

@ch4r10t33r ch4r10t33r commented Apr 17, 2026

Copy link
Copy Markdown
Contributor

Problem

After #759 cleared the xmss_aggregate GPF, the risc0 CI job progressed past mock-chain generation for the first time in months and landed in actual default_prover().prove(...). It then ran against the default 6h job budget with no visible output, and I cancelled run 24583531824 after ~1h.

Two separate fixes are needed to make this workflow maintainable again.

Diagnosis

1. No timeout on the prover step

Checking the last green risc0 run on main (run 21992231306, Feb 13, commit #574):

Step Duration
Set up / install / cache ~30s
run prover 2h 3m 17s

So even a successful run genuinely takes ~2h on the standard 2-core Ubuntu runner. Without an explicit timeout-minutes, a regression that turns those 2h into a hang silently wastes 6h of runner budget and bounces off the default job timeout instead of giving a clean red X.

2. No discoverability check on r0vm

risc0-zkvm = 3.0.3's default_prover() is an IPC client that requires r0vm on PATH. It turns out rzup install r0vm 3.0.3 drops the binary in ~/.cargo/bin/r0vm (already on PATH via setup-rust-toolchain), so today this happens to work — but there's nothing in the workflow asserting that. A future upgrade that changes the install layout, or a missing/version‑mismatched r0vm, would manifest as a silent multi‑hour hang inside prover.prove() with zero log output. Verified via CI on this PR: which r0vm/home/runner/.cargo/bin/r0vm, r0vm --versionrisc0-r0vm 3.0.3.

Fix

  1. which r0vm && r0vm --version as a distinct step. Cheap (ms), and a broken install now fails the job in seconds with a clear error instead of wedging the prover step.
  2. timeout-minutes: 180 on run prover. Safe margin above the historical ~2h runtime, still caps runaway hangs well below the 6h default.
  3. echo \"$HOME/.risc0/bin\" >> \"$GITHUB_PATH\" right after install as defence‑in‑depth in case the layout changes back.

No prover or build changes — workflow-only.

Test plan

Following #759 the risc0 job no longer crashes in `xmss_aggregate`, so
control reaches `default_prover().prove(...)` for the first time in a
long while. The job then hangs indefinitely in `run prover` because
`risc0-zkvm = 3.0.3`'s `default_prover()` is an IPC client that needs
`r0vm` reachable on PATH, and the installer step only wrote to
~/.bashrc / ~/.profile, which GitHub Actions run: steps do not source.

Export ~/.risc0/bin to \$GITHUB_PATH right after install, add a
`which r0vm && r0vm --version` sanity check so a broken install fails
the job fast instead of silently hanging, and cap the prover step at
30 minutes so future PATH regressions don't eat the default 6h job
budget.
@ch4r10t33r ch4r10t33r added the stf label Apr 17, 2026
ch4r10t33r and others added 4 commits April 17, 2026 22:42
Historical green runs (e.g. run 21992231306, commit #574) show the
prover step genuinely takes ~2h 3m on GitHub's 2-core Ubuntu runner.
The 30 min cap introduced in the previous commit would fail every
real run. Raise to 180 min so legitimate proving completes with
headroom while still capping runaway hangs well under the 6h default
job budget.
@ch4r10t33r
ch4r10t33r requested a review from zclawz April 28, 2026 09:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant