Fuzz Evidence

Phase 2 needs fuzz proof before exit because the UAPI boundary handles paths, manifests, and capability patterns.

The fuzz evidence recorder runs the Phase 2 fuzz smoke command and writes one markdown report with the commit, host, target list, duration, tool versions, result, and log tail.

scripts/record-phase2-fuzz-evidence.sh --strict

Default output:

target/phase2-fuzz-evidence/fuzz-evidence.md

For a quick local check, use a short run:

scripts/record-phase2-fuzz-evidence.sh --strict --max-total-time 5

For final Phase 2 review, run the same recorder on the final candidate with a larger time value on the self-hosted runner:

scripts/record-phase2-fuzz-evidence.sh --strict --max-total-time 14400

That example means four hours per fuzz target.

What It Records

The report includes:

  • git commit
  • host operating system and architecture
  • fuzz targets
  • seconds per target
  • dry-run flag
  • cargo-fuzz, rustup, and nightly rustc details
  • command exit code
  • fuzz log tail

Include It In The Exit Bundle

scripts/record-phase2-exit-bundle.sh --strict --include-fuzz

The final review bundle includes fuzz evidence too:

scripts/record-phase2-exit-bundle.sh --final-review

Set KRATE_FUZZ_MAX_TOTAL_TIME first if the final review should use a longer soak window.

Current Reading

A short fuzz smoke is useful during normal development. A longer self-hosted soak remains one of the final Phase 2 proof items.