You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Closes the combined-slot fuzz harness gap from session 56 — adds
4 more combined harnesses (one per Phase-2/Phase-3 system),
refactors the slot-splitting helper into the lib so all 5
combined fuzzers share it, and updates the audit-pack docs to
mirror sessions 58 + 59.
mosaic-fuzz/src/lib.rs
- New `pub fn split_three_slots(data: &[u8])` — extracted from
the session-56 Halo2 combined fuzzer; returns the same
`(vk, proof, public_inputs)` triple from a length-prefixed
layout (`[vk_len: u16 LE] [vk_bytes] [proof_len: u16 LE]
[proof_bytes] [public_inputs ...]`). Returns `None` if any
length prefix runs off the buffer.
mosaic-fuzz/fuzz_targets/fuzz_halo2_combined.rs
- Rewritten to import `split_three_slots` from the lib instead
of defining a private copy, eliminating the duplicate parser.
4 new combined fuzz_target files in `fuzz_targets/`:
- fuzz_plonk_combined — narrowest cross-slot surface (744 B / 768
B fixed envelopes); value is in catching parser confusions
between them.
- fuzz_hyperplonk_combined — pins the
`vk.num_variables == proof.sumcheck_rounds` cross-check.
- fuzz_nova_combined — pins both `vk.variant == proof.variant`
(FoldingVariant 3-way tag) AND
`vk.n_public == proof.n_public == public_inputs.len() / 32`.
- fuzz_stark_combined — richest cross-check fingerprint:
field_id, trace_log_height, trace_width, log_blowup must all
agree across slots; a coordinated lie on any would route to a
wrong-shape Merkle path or FRI fold chain.
mosaic-fuzz/Cargo.toml
- 4 new `[[bin]]` entries plus the 5 from session 58.
README.md (Status table)
- Fuzz row updated to "23 targets across all 6 production
verifiers" with the new 4×4 + 3 inventory breakdown.
CHANGELOG.md
- New [Unreleased] subsection "Added — sessions 58-59" with
per-session breakdowns and the full 23-target inventory table.
- "Planned beyond session 59" block trimmed — both fuzz follow-ups
(per-system PI fuzzers + remaining combined fuzzers) are now
done. The remaining named pre-audit gaps are Phase-3 differential
testing, chunked::dispatch integration, HyperPlonk Zeromorph
reduction, and external audit commission.
After sessions 47-59 the audit-coverage milestone has these dimensions:
- Property tests: 137 across 12 crates (sessions 36-52)
- BPF CU bench: 7 systems (sessions 47, 49)
- Host criterion bench: 5 systems (session 51)
- Fuzz harnesses: 23 targets across 6 systems (sessions 54-59)
Local sanity: `cargo check -p mosaic-fuzz --lib` clean.
0 commit comments