Extract Fuzzer Reproduction from GitHub Actions
Use this skill to extract a reproduction project from fuzzer failures in CI. This creates a minimal Noir project you can use locally to reproduce and debug the issue.
- Get the Job ID
From the GitHub Actions URL, extract the job ID. The URL format is:
https://github.com/noir-lang/noir/actions/runs/RUN_ID/job/JOB_ID
- Fetch the Logs
gh api repos/noir-lang/noir/actions/jobs/JOB_ID/logs 2>&1 | tee fuzzer_logs.txt
- Find the Reproduction Code
Search for the generated Noir source:
grep -nE "unconstrained fn main|fn main" fuzzer_logs.txt
The fuzzer output has this structure:
AST: global G_A: i8 = -127_i8; unconstrained fn main(a: pub i8) -> pub i8 { ... }
ABI Inputs: a = "-0x5c"
Seed: 0xc63ed07b00100000
- Check for Required Compiler Flags
Some failures only manifest with specific flags (e.g., -Zenums for match expressions, optimization flags, etc.). Note any flags mentioned in the logs as you'll need them to reproduce the issue.
- Create the Reproduction Project
nargo new repro_project cd repro_project
Copy the AST section to src/main.nr and create Prover.toml with the ABI inputs.
- Verify the Reproduction
Include any required flags from the logs
nargo execute
This should reproduce the failure you saw in CI. If it doesn't, double-check you're using the same compiler flags from the logs.