Skip to content

Commit bb8d36c

Browse files
committed
chore: bump version 0.8.3-shared-primitive-lift → 0.8.4-primitive-consumer-coverage
Patch bump (semver-compatible — refactor + tests + CI + docs only, no behaviour or ABI changes) tagging the primitive-consumer coverage milestone landed across sessions 60-78. Three cross-cutting work streams in this milestone: 1. Shared primitives 7-10 added to mosaic-zk-primitives: - fr_horner_eval (s63) — polynomial Horner evaluation - verify_n_pair_pairing (s66) — N-pair generic pairing - powers_of (s72) — geometric sequence - fr_inner_product (s77) — dot product Plus their per-primitive proptest suites (5-6 properties each pinning the soundness invariant against a naive implementation). 2. Consumer migrations across 7 sites in mosaic-{hyperplonk, halo2, nova} replace inline weighted-sum / Horner / pairing / ν-powers patterns with shared-helper calls. After the migrations every BN254 polynomial-eval site, every BN254 pairing site, every BN254 ν-powers site, and every BN254 weighted-sum site in the workspace goes through one of the 10 audit-grade shared primitives. 3. Audit infrastructure: - Session 61: CI workflows wire every sessions-47-59 bench + fuzz harness into GitHub Actions (PR + nightly matrices). - Session 70: docs/audit-coverage-runbook.md — entry point for external review firms with reproduce + extend recipes. - Session 71: AUDIT.md release entries for v0.8.2 + v0.8.3. - Session 75: 8th chunked-handlers integration test `commit_and_verify_dispatches_to_verifier` proves the post-finalize verifier hand-off works end-to-end. CHANGELOG promoted [Unreleased] → [0.8.4-primitive-consumer-coverage] release entry, with the per-session breakdowns + the 10-primitive inventory + the 7-migration audit table preserved for external auditors. README badge bumped. Workspace lib + integration test totals at v0.8.4: mosaic-core 16 mosaic-zk-primitives 84 (+15 since v0.8.2: horner+5, n-pair+4, powers+5, inner_product+5) mosaic-groth16 26 mosaic-plonk 32 mosaic-hyperplonk 82 mosaic-halo2 75 mosaic-nova 59 mosaic-stark 117 mosaic-serde 23 mosaic-chunked 20 mosaic-sdk 13 mosaic-program 7 (+8 chunked_handlers integration tests) ───────────────────── ─── total 554 (+10 lib, +1 integration since v0.8.2)
1 parent c30e985 commit bb8d36c

4 files changed

Lines changed: 94 additions & 30 deletions

File tree

CHANGELOG.md

Lines changed: 65 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,68 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
### Planned beyond v0.8.4-primitive-consumer-coverage
11+
12+
- Fixture-driven differential testing for the four Phase-3 bodies
13+
(Espresso HyperPlonk, PSE Halo2, sonobe Nova, Plonky3 STARK).
14+
**Last named pre-audit gap on the Phase-3 verifier track.**
15+
- HyperPlonk full Zeromorph / PST / Gemini reduction (canonical
16+
layout breaking change).
17+
- mosaic-nova::kzg::verify_spartan_batched_opening migration to
18+
fr_inner_product (deferred from session 77; the explicit 5-term
19+
unrolled chain is more legible inline at N=5 than the helper
20+
call's collect-into-Vec dance).
21+
- External security audit commission.
22+
23+
## [0.8.4-primitive-consumer-coverage] — 2026-04-28
24+
25+
**Primitive consolidation reaches the production verifier surface.**
26+
Sessions 60-78 add 4 more shared primitives (7-10), migrate every
27+
remaining inline weighted-sum / Horner / pairing site in the
28+
workspace to the shared helpers, ship a runbook for external
29+
auditors, wire the v0.8.2 bench + fuzz harnesses into CI matrices,
30+
and add the 8th chunked-handlers integration test that proves the
31+
verifier dispatch path is reached end-to-end from the chunked
32+
upload protocol.
33+
34+
| Surface | v0.8.3 | v0.8.4 |
35+
|---|---|---|
36+
| Shared primitives | 8 | **10** |
37+
| Consumer migrations using shared helpers | 0 explicit | 7 sites |
38+
| chunked-handlers integration tests | 7 | 8 |
39+
| Audit runbook || `docs/audit-coverage-runbook.md` |
40+
| CI matrix coverage | partial | full (PR + nightly) |
41+
42+
The 4 new shared primitives:
43+
- `fr_horner_eval` (s63) — polynomial Horner evaluation
44+
- `verify_n_pair_pairing` (s66) — N-pair generic pairing
45+
- `powers_of` (s72) — geometric sequence
46+
- `fr_inner_product` (s77) — dot product
47+
48+
Combined with the 6 from sessions 21-35
49+
(fr_from_be_bytes_reduced, fr_be_from_u64,
50+
derive_fr_challenge, verify_two_pair_pairing,
51+
commitment_minus_scalar_g1, compute_kzg_opening_lhs), the
52+
mosaic-zk-primitives crate now ships **10 audit-grade helpers**.
53+
54+
The 7 consumer migrations (sessions 64, 65, 68, 72, 74×2, 77, 78×2):
55+
- mosaic-hyperplonk::sumcheck::eval_at → fr_horner_eval (s64)
56+
- mosaic-halo2::vanishing::compute_t_from_chunks → fr_horner_eval (s65)
57+
- mosaic-hyperplonk::kzg pairing → verify_two_pair_pairing (s68)
58+
- mosaic-hyperplonk::kzg ν-powers → powers_of (s72)
59+
- mosaic-halo2::kzg ν-powers → powers_of (s74)
60+
- mosaic-nova::kzg ν-powers → powers_of (s74)
61+
- mosaic-hyperplonk::kzg y-batched → fr_inner_product (s77)
62+
- mosaic-halo2::kzg y-batched (×2 sites) → fr_inner_product (s78)
63+
64+
After the migrations every BN254 polynomial-eval site, every BN254
65+
pairing site, every BN254 ν-powers site, and every BN254 weighted-
66+
sum site in the workspace goes through one of the 10 audit-grade
67+
shared primitives.
68+
69+
No on-chain ABI or behaviour changes — refactor + tests + CI
70+
infrastructure + docs only.
71+
1072
### Added — sessions 70-72 (post-v0.8.3)
1173

1274
#### Session 70 — audit-coverage runbook
@@ -96,7 +158,9 @@ happy-path test (genuine Groth16 proof + VK uploaded via chunked
96158
flow); that's deferred to the fixture-driven differential testing
97159
item.
98160

99-
### Planned beyond v0.8.3-shared-primitive-lift
161+
### (Planning block superseded by v0.8.4 release entry above.)
162+
163+
#### v0.8.3 planning block (kept for historical reference)
100164

101165
- Fixture-driven differential testing for the four Phase-3 bodies
102166
(Espresso HyperPlonk, PSE Halo2, sonobe Nova, Plonky3 STARK).

Cargo.lock

Lines changed: 15 additions & 15 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ default-members = [
2626
]
2727

2828
[workspace.package]
29-
version = "0.8.3-shared-primitive-lift"
29+
version = "0.8.4-primitive-consumer-coverage"
3030
edition = "2021"
3131
rust-version = "1.85.0"
3232
license = "Apache-2.0 OR MIT"
@@ -40,18 +40,18 @@ categories = ["cryptography", "no-std"]
4040

4141
[workspace.dependencies]
4242
# Workspace member crates
43-
mosaic-core = { version = "0.8.3-shared-primitive-lift", path = "crates/mosaic-core", default-features = false }
44-
mosaic-zk-primitives = { version = "0.8.3-shared-primitive-lift", path = "crates/mosaic-zk-primitives", default-features = false }
45-
mosaic-groth16 = { version = "0.8.3-shared-primitive-lift", path = "crates/mosaic-groth16", default-features = false }
46-
mosaic-plonk = { version = "0.8.3-shared-primitive-lift", path = "crates/mosaic-plonk", default-features = false }
47-
mosaic-hyperplonk = { version = "0.8.3-shared-primitive-lift", path = "crates/mosaic-hyperplonk", default-features = false }
48-
mosaic-halo2 = { version = "0.8.3-shared-primitive-lift", path = "crates/mosaic-halo2", default-features = false }
49-
mosaic-stark = { version = "0.8.3-shared-primitive-lift", path = "crates/mosaic-stark", default-features = false }
50-
mosaic-nova = { version = "0.8.3-shared-primitive-lift", path = "crates/mosaic-nova", default-features = false }
51-
mosaic-serde = { version = "0.8.3-shared-primitive-lift", path = "crates/mosaic-serde", default-features = false }
52-
mosaic-chunked = { version = "0.8.3-shared-primitive-lift", path = "crates/mosaic-chunked", default-features = false }
53-
mosaic-program = { version = "0.8.3-shared-primitive-lift", path = "crates/mosaic-program" }
54-
mosaic-sdk = { version = "0.8.3-shared-primitive-lift", path = "crates/mosaic-sdk" }
43+
mosaic-core = { version = "0.8.4-primitive-consumer-coverage", path = "crates/mosaic-core", default-features = false }
44+
mosaic-zk-primitives = { version = "0.8.4-primitive-consumer-coverage", path = "crates/mosaic-zk-primitives", default-features = false }
45+
mosaic-groth16 = { version = "0.8.4-primitive-consumer-coverage", path = "crates/mosaic-groth16", default-features = false }
46+
mosaic-plonk = { version = "0.8.4-primitive-consumer-coverage", path = "crates/mosaic-plonk", default-features = false }
47+
mosaic-hyperplonk = { version = "0.8.4-primitive-consumer-coverage", path = "crates/mosaic-hyperplonk", default-features = false }
48+
mosaic-halo2 = { version = "0.8.4-primitive-consumer-coverage", path = "crates/mosaic-halo2", default-features = false }
49+
mosaic-stark = { version = "0.8.4-primitive-consumer-coverage", path = "crates/mosaic-stark", default-features = false }
50+
mosaic-nova = { version = "0.8.4-primitive-consumer-coverage", path = "crates/mosaic-nova", default-features = false }
51+
mosaic-serde = { version = "0.8.4-primitive-consumer-coverage", path = "crates/mosaic-serde", default-features = false }
52+
mosaic-chunked = { version = "0.8.4-primitive-consumer-coverage", path = "crates/mosaic-chunked", default-features = false }
53+
mosaic-program = { version = "0.8.4-primitive-consumer-coverage", path = "crates/mosaic-program" }
54+
mosaic-sdk = { version = "0.8.4-primitive-consumer-coverage", path = "crates/mosaic-sdk" }
5555

5656
# Solana — pinned to 2.x; Solana 3.0 CLI is backward-compatible with 2.x program SDK.
5757
# We deliberately avoid the unstable 3.x API surface during phase 1 to keep MSRV stable.

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
[![CI](https://img.shields.io/github/actions/workflow/status/wienerlabs/mosaic/ci.yml?branch=main)](.github/workflows/ci.yml)
77
[![License: Apache-2.0 OR MIT](https://img.shields.io/badge/license-Apache--2.0%20OR%20MIT-blue.svg)](LICENSE-APACHE)
88
[![MSRV: 1.85.0](https://img.shields.io/badge/MSRV-1.85.0-orange.svg)](rust-toolchain.toml)
9-
[![Release: v0.8.3-shared-primitive-lift](https://img.shields.io/badge/release-v0.8.3--shared--primitive--lift-green.svg)](https://github.com/wienerlabs/mosaic/releases/tag/v0.8.3-shared-primitive-lift)
9+
[![Release: v0.8.4-primitive-consumer-coverage](https://img.shields.io/badge/release-v0.8.4--primitive--consumer--coverage-green.svg)](https://github.com/wienerlabs/mosaic/releases/tag/v0.8.4-primitive-consumer-coverage)
1010
[![Audit: ready for review](https://img.shields.io/badge/audit-ready%20for%20review-yellow.svg)](AUDIT.md)
1111

1212
The Solana ecosystem has exactly one production-grade ZK verifier today

0 commit comments

Comments
 (0)