Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
338 commits
Select commit Hold shift + click to select a range
cde2e6a
feat(lfm): assemble the epoch verifier's Fiat-Shamir spine
MauroToscano Aug 3, 2026
7cf0c84
feat(lfm): hang the LogUp closure off the assembled spine
MauroToscano Aug 3, 2026
00d545e
docs(lfm): correct the wave-4 test count (195, not 196)
MauroToscano Aug 3, 2026
3810a17
Merge branch 'spike/blake3-recovered' into feat/blake3-accelerator
MauroToscano Aug 5, 2026
3503850
feat(prover,executor): BLAKE3 6-round compression accelerator
MauroToscano Aug 5, 2026
fb1afe8
bench(blake3): drop the out->m copy chain from the bench guest
MauroToscano Aug 5, 2026
0f668f3
docs(blake3): poseidon2 cost study — 651 cell-equiv/merge derived, ca…
MauroToscano Aug 5, 2026
e7b55fd
feat(blake3): pin MU boolean locally — IS_BIT at idx 813
MauroToscano Aug 5, 2026
2e0f0b4
spec(blake3): chip page, machine-checked I/O surface, A6R assumption
MauroToscano Aug 6, 2026
a7a8bdd
spec(blake3): record the external expert review of the 6-round margin
MauroToscano Aug 6, 2026
783c5a9
spec(blake3): sub-6 rounds is expert-gated, not forbidden
MauroToscano Aug 6, 2026
89aeeb8
docs(blake3): record the --full z3 gate as attempted-inconclusive
MauroToscano Aug 6, 2026
c161ae9
docs(lfm): wave-4 consolidation — research doc restored; wave-5 spawn…
MauroToscano Aug 7, 2026
cf800d9
docs(lfm): wave-5 respawn — keep the stashed seam API
MauroToscano Aug 4, 2026
ce1538b
feat(lfm): hang the verification legs off the assembled epoch spine
MauroToscano Aug 4, 2026
b9e8a88
test(lfm): count the composition and FRI terminal checks; falsify the…
MauroToscano Aug 4, 2026
13a7858
docs(lfm): wave-5 stopping point and the wave-6 order of work
MauroToscano Aug 4, 2026
724fa3a
docs(lfm): team-lead ruling on entry 7 (DECODE/PAGE stay arena cells,…
MauroToscano Aug 7, 2026
5a9226a
feat(lfm): source every preprocessed root, derive REGISTER, join DECO…
MauroToscano Aug 4, 2026
044382d
test(lfm): witness the OOD absorb order and the frame-step view
MauroToscano Aug 4, 2026
9ce241d
feat(lfm): width-check the register boundary; close out the assembly …
MauroToscano Aug 4, 2026
3918548
docs(lfm): amend the entry-7 ruling — PAGE condition reversed, migrat…
MauroToscano Aug 7, 2026
f49157c
test(lfm): the wrap harness and a per-chip cell census
MauroToscano Aug 4, 2026
9e0fcc7
test(lfm): the wrap run — prove the assembled epoch verifier, and pri…
MauroToscano Aug 4, 2026
fa1da70
test(lfm): reconcile the wrap against wave 6, and price the recursion
MauroToscano Aug 4, 2026
077e34d
docs(lfm): three box checks, all UTC, all busy — box left alone
MauroToscano Aug 7, 2026
afad011
docs(lfm): scope the hash matrix — two sockets, the aux collapse, the…
MauroToscano Aug 4, 2026
8ea2ec3
feat(lfm): measure the hash matrix's permutation axis without buildin…
MauroToscano Aug 4, 2026
b510191
docs(lfm): a Poseidon-original skeleton already exists in-tree, with …
MauroToscano Aug 4, 2026
9e4b79c
docs(lfm): revise the matrix on corpus data — every candidate fits th…
MauroToscano Aug 4, 2026
b050ccc
feat(lfm): Poseidon-original over Goldilocks, pinned to an external v…
MauroToscano Aug 4, 2026
9fad776
docs(lfm): specify the Poseidon chip executably, and stop short of bu…
MauroToscano Aug 4, 2026
35d407d
docs(lfm): close wave 8 — slice 1a done, slice 1b handed to wave 9
MauroToscano Aug 4, 2026
0f30868
feat(lfm): host Poseidon behind LFM_HASH via a construction-time hash…
MauroToscano Aug 6, 2026
8b85c41
test(lfm): prove the Poseidon chip, and measure the column it was bui…
MauroToscano Aug 6, 2026
fa065d6
docs(lfm): record the measured Poseidon column, and correct the RSS u…
MauroToscano Aug 6, 2026
4d0a031
docs(lfm): close wave 9 — slice 1b accepted, worktree handed back
MauroToscano Aug 6, 2026
a349a1e
feat(lfm): host PR #903's BLAKE3 chip and measure the blake column
MauroToscano Aug 6, 2026
5ebf062
docs(lfm): the blake column, the residue split, and the delegation price
MauroToscano Aug 6, 2026
d6514c1
docs(lfm): reconcile the residue split against the delegation evaluation
MauroToscano Aug 6, 2026
34709ce
docs(lfm): close wave 10 — hash matrix complete, worktree handed back
MauroToscano Aug 6, 2026
8aed545
docs(lfm): residue base discipline — the inter-base gap is BITWISE+KE…
MauroToscano Aug 7, 2026
3638b82
fix(lfm): bound multiplicity columns at admission (negative-mult Comp…
MauroToscano Aug 10, 2026
7b3da5b
docs(lfm): name the framework verifier premises the machine inherits
MauroToscano Aug 10, 2026
ef13e74
fix(lfm): make the step_size ceiling test pass under --release
MauroToscano Aug 10, 2026
2d23678
feat(lfm): bind the hasher into the program digest and registry
MauroToscano Aug 10, 2026
6502509
test(blake3): restore the round-parameterized reference and add a sec…
MauroToscano Aug 10, 2026
b693eec
feat(lfm): BLAKE3 as a first-class LFM_HASH hasher (compress socket, …
MauroToscano Aug 11, 2026
cece4a0
docs(lfm): record the O5 decision — future leaf hashing uses the LFML…
MauroToscano Aug 11, 2026
2957c3f
docs(lfm): O5 rests on fixed depth alone, not absence of leaf hashing
MauroToscano Aug 11, 2026
30f132d
docs(blake3): reverse the recorded round-count default — 7 primary, 6…
MauroToscano Aug 11, 2026
9bcc9ee
feat(lfm): compress-chain Fiat-Shamir transcript for every hasher (no…
MauroToscano Aug 11, 2026
1c2e98d
feat(lfm): LFML felt-input leaf mode — FriToyV0 proves under BLAKE3, …
MauroToscano Aug 11, 2026
e16110d
docs(lfm): commit the BLAKE3 real-hash verification apparatus
MauroToscano Aug 11, 2026
ed1b778
docs(lfm): fix LEAF.md §5 board row — FriToyV0 is 93/513,081, not 91/…
MauroToscano Aug 11, 2026
253504d
feat(lfm): merge origin/main — device-IR artifact reconciliation + ke…
MauroToscano Aug 12, 2026
fe7314b
docs(lfm): preserve the main-merge debate records + GPU-recursion exp…
MauroToscano Aug 12, 2026
77cc7df
docs: session handoff 2026-08-12 (merge complete, GPU-recursion next)
MauroToscano Aug 12, 2026
c495e9f
test(lfm): GPU-dispatch census harness for the wrap (EXPLORATION Stag…
MauroToscano Aug 12, 2026
2a8552f
docs(lfm): GPU box measurements — lever 1 confirmed at -57% (EXPLORAT…
MauroToscano Aug 12, 2026
eefd308
refactor(stark,lfm): guard the three silent hasher-mislabel paths (D0…
MauroToscano Aug 12, 2026
879bdc0
refactor(stark): parameterize the commitment hash via StarkHash (D0 s…
MauroToscano Aug 12, 2026
372f342
test(lfm): cross-version proof oracle for the D0 migration
MauroToscano Aug 12, 2026
c80138d
refactor(lfm): take any transcript in the statement bind and Phase A …
MauroToscano Aug 12, 2026
97124d1
perf(lfm): flat-append column groups and drop the address maps (P-c)
MauroToscano Aug 12, 2026
80a49b2
test(stark,lfm): catch duplicate constraint-index emission in release…
MauroToscano Aug 12, 2026
bad2d97
refactor(stark,crypto): delete the unused single-element Merkle aliases
MauroToscano Aug 12, 2026
39038da
feat(math-cuda): device BLAKE3 compression, round-parameterized, with…
MauroToscano Aug 13, 2026
761bc67
feat(math-cuda): BLAKE3 field-element serialization and 64-byte block…
MauroToscano Aug 13, 2026
10cb9f6
feat(math-cuda): BLAKE3 Merkle parent/level compressors and the on-de…
MauroToscano Aug 13, 2026
4463e31
test(math-cuda): host-compiled known-answer gate for the BLAKE3 devic…
MauroToscano Aug 13, 2026
c5ffadf
feat(lfm): make disk spill reachable from the wrap prove path
MauroToscano Aug 13, 2026
fbd5b63
feat(stark): ResidencyMode — drop the main LDE after Round 1, recompu…
MauroToscano Aug 13, 2026
712d89e
test(stark): RecomputeLde is byte-identical to Retain
MauroToscano Aug 13, 2026
fc9e19c
feat(prover): opt the LFM wrap into RecomputeLde via LAMBDA_VM_RESIDENCY
MauroToscano Aug 13, 2026
fb3917e
feat(prover): parameterize the epoch builder, and wrap a real block e…
MauroToscano Aug 13, 2026
681b749
test(prover): let the real-block wrap name its inner query count
MauroToscano Aug 13, 2026
378b008
docs(campaign): commit the block-compression corpus to the branch
MauroToscano Aug 13, 2026
6a9b083
chore: drop a stray pycache artifact from the docs commit
MauroToscano Aug 13, 2026
ed5d962
feat(lfm): absorb four felts per leaf compression (RATE 4, 12 lanes)
MauroToscano Aug 13, 2026
e9c150e
chore(lfm): re-bless the registry for the RATE-4 leaf
MauroToscano Aug 13, 2026
9bfac09
test(lfm): re-pin every KAT at the widened framing
MauroToscano Aug 13, 2026
38cbec7
fix(lfm): derive the socket-vs-standalone figures instead of copying …
MauroToscano Aug 13, 2026
38c89d8
docs(rate4): resume note for the RATE-4 leaf branch
MauroToscano Aug 13, 2026
1926842
test(lfm): control the H6 lane gate, and stop calling the tag m[8]
MauroToscano Aug 13, 2026
3a0b848
docs(rate4): final state — 310/19, lint clean, projection with its ca…
MauroToscano Aug 13, 2026
c5a5d5b
feat(crypto): sink the BLAKE3 compression core into `crypto`, and spe…
MauroToscano Aug 14, 2026
a5e562a
feat(stark): add `Blake3StarkHash` and `CommitmentHash::Blake3`
MauroToscano Aug 14, 2026
91769e1
refactor(math-cuda): check the kernels against the shared primitive, …
MauroToscano Aug 14, 2026
6d42d7c
docs(pa): the 6-round chain vectors are cross-checked, not just self-…
MauroToscano Aug 14, 2026
e92e6e8
docs(pa): the two-element leaf is 16 bytes, not 64
MauroToscano Aug 14, 2026
67e86de
docs(stark): the two-element leaf invariant is about 16 bytes, and th…
MauroToscano Aug 14, 2026
13aac0f
feat(fri): mixed-height MMCS + batched FRI primitives, on StarkHash
MauroToscano Aug 14, 2026
472e7ef
test(fri): soundness negatives for the batched commitment primitives
MauroToscano Aug 14, 2026
ff44ce4
docs(mmcs): resume note for the batched-primitives branch
MauroToscano Aug 14, 2026
5be316f
Merge branch 'mmcs-primitives' into blake3-real-hash
MauroToscano Aug 14, 2026
f061ab6
feat(fri): commit FRI layer trees with the configuration's hash
MauroToscano Aug 15, 2026
cfb5e90
test(fri): prove and verify a full STARK under Blake3StarkHash
MauroToscano Aug 15, 2026
fb38efe
style(fri): drop a redundant clone in the layer-tree rebuild
MauroToscano Aug 15, 2026
7df4321
test(fri): check layer 0's codeword parity instead of arguing it
MauroToscano Aug 15, 2026
a4bc88d
feat(math-cuda): BLAKE3 leaf kernels and their wrapper twins
MauroToscano Aug 15, 2026
bba6b94
test(math-cuda): parity + known-answer coverage for the BLAKE3 leaf k…
MauroToscano Aug 15, 2026
9f392fc
docs(pa): PA-PLAN §4.1, §4.4 and §4.6 at present state
MauroToscano Aug 15, 2026
b6be50d
fix(blake3): revive the second-source check, and record what the vect…
MauroToscano Aug 15, 2026
d2219b9
feat(transcript): sponge on the configuration's hash, with a fixed dr…
MauroToscano Aug 15, 2026
93fbca8
feat(grinding): grind over the configuration's transcript hash
MauroToscano Aug 15, 2026
428b65c
test(transcript): pin the BLAKE3 sponge, the draw schedule, and the f…
MauroToscano Aug 15, 2026
f0275bb
feat(fri): batched round-4 wiring — one FRI instance per epoch (M-3)
MauroToscano Aug 15, 2026
c85dce6
docs(pa): rider 1's real cost, rider 2 re-derived, and §3's grinding …
MauroToscano Aug 15, 2026
4a3351b
docs(blake3): state the 6-round provenance as it is
MauroToscano Aug 15, 2026
8e4cb0c
fix(grinding): gate the BLAKE3 test alias behind non-cuda
MauroToscano Aug 15, 2026
5845c43
feat(fri): stream the mixed-height MMCS matrix by matrix (M-4, part 1)
MauroToscano Aug 15, 2026
865eb26
Merge branch 'feat/blake3-accelerator' into pa-stage4-guest
MauroToscano Aug 15, 2026
0704623
feat(cuda): device build of the mixed-height MMCS
MauroToscano Aug 15, 2026
1de07fd
test(blake3): gate the executor's compression against the shared prim…
MauroToscano Aug 15, 2026
8ce05eb
docs(mmcs): answer M-13b — no round-1-3 challenge is shape-exploitable
MauroToscano Aug 15, 2026
8d70dbd
chore(merge): rustfmt the merged import list, refresh two guest lockf…
MauroToscano Aug 15, 2026
24fd7be
fix(fri): derive the batched injection height without trusting the la…
MauroToscano Aug 15, 2026
9ab9fee
docs(mmcs): the eps_C delta from batching — bounded, and never favour…
MauroToscano Aug 15, 2026
e8a2bf0
docs(mmcs): eps_C addendum on the real census — batching costs 6.9 bits
MauroToscano Aug 15, 2026
ef822de
feat(fri): split the batched FRI into two instance classes (eps_C rul…
MauroToscano Aug 15, 2026
5ea19b1
docs(mmcs): record why the LOCAL_TO_GLOBAL cap is not a small commit
MauroToscano Aug 15, 2026
6d418bd
feat(crypto): reach the BLAKE3 accelerator from the chain, as Platfor…
MauroToscano Aug 15, 2026
c150dbc
fix(lfm): re-measure the continuation fixture's epoch size
MauroToscano Aug 15, 2026
a0b358a
merge: P-a Stage 3 (transcript + grinding generics) into the batched …
MauroToscano Aug 15, 2026
bb30f1c
Merge branch 'pa-blake3-cuda' into blake3-real-hash
MauroToscano Aug 15, 2026
a7489ba
feat(batched): multi_prove_batched — four MMCS roots and one FRI per …
MauroToscano Aug 15, 2026
20ec9e8
feat(batched): replay the epoch transcript, and close the deferred ep…
MauroToscano Aug 15, 2026
f12319b
fix(batched): read each round in its own index space, and cover the p…
MauroToscano Aug 15, 2026
3950a4e
feat(lfm): promote LFM_BLAKE3 to a machine chip group
MauroToscano Aug 15, 2026
54bb792
feat(batched): multi_verify_batched — the complete batched verificati…
MauroToscano Aug 15, 2026
6f87b56
feat(lfm,crypto): emit Blake3Chain in the machine, behind a program-l…
MauroToscano Aug 15, 2026
f8d734a
fix(lfm): price the hash matrix at the permutation count the run meas…
MauroToscano Aug 15, 2026
964455a
docs(lfm): correct the socket's domain-tag comment at the point of de…
MauroToscano Aug 15, 2026
358ed50
test(lfm): pin the registry blessing as round-count-invariant
MauroToscano Aug 15, 2026
5d2104c
test(lfm): give the BLAKE3 transcript replay a host oracle, and close…
MauroToscano Aug 15, 2026
5591aa8
test(lfm): pin the flip inventory and prove the two unexercised surfaces
MauroToscano Aug 15, 2026
f8333e2
docs(lfm): correct two stale comments in the index arithmetic and the…
MauroToscano Aug 15, 2026
9ded637
docs: correct the previous commit's note about PA-PLAN's tracking
MauroToscano Aug 16, 2026
bf49393
Merge remote-tracking branch 'origin/blake3-real-hash' into mmcs-inte…
MauroToscano Aug 16, 2026
9260246
feat(batched): pin the preprocessed round against the program's commi…
MauroToscano Aug 16, 2026
d07099d
feat(lfm): registry support for the batched preprocessed round (M-6, …
MauroToscano Aug 16, 2026
5ac4a4f
feat(lfm): batched prove/verify entry points and the preprocessed pin…
MauroToscano Aug 16, 2026
89ce30b
fix(lfm): make the prep round's membership one derivation, not two
MauroToscano Aug 16, 2026
bb0cf31
style(lfm): rustfmt the absorbed test
MauroToscano Aug 16, 2026
46798a5
test(batched): pin that the preprocessed round can never be taller th…
MauroToscano Aug 16, 2026
6445d5f
feat(stark,lfm): commit with BLAKE3-6r by default
MauroToscano Aug 16, 2026
3f4b582
chore(tables): re-bless the static preprocessed commitments under BLAKE3
MauroToscano Aug 16, 2026
28f8229
chore(lfm): re-bless LFM_REGISTRY under the BLAKE3 commitment aliases
MauroToscano Aug 16, 2026
0d3b5e4
fix(stark,math-cuda): name keccak where keccak is meant, not the alias
MauroToscano Aug 16, 2026
d9998c9
build: make the lint matrix's BLAKE3 pass the SEVEN-round one
MauroToscano Aug 16, 2026
6505868
fix(prover): make the production transcript follow the configuration
MauroToscano Aug 16, 2026
5fe1335
fix(prover): move the transcript replay oracles onto the production t…
MauroToscano Aug 16, 2026
eebc370
fix(lfm): give the FRI leaf leg the production wrap hash
MauroToscano Aug 16, 2026
d498d67
test(stark): pin the leaf layout under both configurations, not one b…
MauroToscano Aug 16, 2026
2234cde
fix(lfm): give every wrap verifier leg the production hash, via one n…
MauroToscano Aug 18, 2026
b25a29e
fix(lfm): re-derive the transcript oracles on the configuration trans…
MauroToscano Aug 18, 2026
44ddb23
fix(lfm): count the configured hash, and re-bless the one pin that tr…
MauroToscano Aug 18, 2026
9e5084f
fix(lfm): make the query-permutation closed form take the hash, not a…
MauroToscano Aug 18, 2026
fd96cc7
perf(crypto): specialize the BLAKE3 Merkle parent to one compression …
MauroToscano Aug 18, 2026
bf2d9e1
style: drop an unused import and an orphaned closure
MauroToscano Aug 18, 2026
5e66703
feat(syscalls,executor): a BLAKE3 chained-absorb ecall, gated against…
MauroToscano Aug 18, 2026
76eb8e6
feat(crypto): gate the guest absorb arm behind its own blake3-absorb …
MauroToscano Aug 18, 2026
c8a9189
style: cargo fmt the absorb additions
MauroToscano Aug 18, 2026
494a628
build: lint the guest absorb arm in the existing 6-round pass
MauroToscano Aug 18, 2026
1624d26
test(blake3): pin the absorb ABI's shape across the two crates that s…
MauroToscano Aug 18, 2026
7328d5b
fix(executor): make the absorb overlap check overflow-safe
MauroToscano Aug 18, 2026
57c2fe0
test(blake3): gate the multi-ecall absorb path
MauroToscano Aug 18, 2026
07f4fc5
docs(build): correct what the blake3-absorb lint pass actually covers
MauroToscano Aug 18, 2026
2432f95
perf(crypto): keep the 64-byte parent path off the bulk-absorb call
MauroToscano Aug 18, 2026
c021a7b
fix(blake3): lower the absorb cap to 64 KiB, and four corrections fro…
MauroToscano Aug 18, 2026
048a831
merge: pa-stage6-flip (BLAKE3 default + parent specialization) into b…
MauroToscano Aug 18, 2026
e9fba5a
perf(crypto): coalesce leaf field elements so the absorb ecall can en…
MauroToscano Aug 18, 2026
4b60dfc
bench(blake3): put the in-guest absorb cycle harness in the tree
MauroToscano Aug 18, 2026
2bf45fd
merge origin/main (cf3b1e99) into blake3-real-hash
MauroToscano Aug 18, 2026
75a501e
fix(prover): resolve the merge's device-only main-LDE recovery agains…
MauroToscano Aug 18, 2026
272f115
merge blake3-real-hash into pa-stage6-flip
MauroToscano Aug 18, 2026
f3c3695
fix(tests): name the stark transcript so prove and replay share a hash
MauroToscano Aug 18, 2026
9cf6c35
feat(blake3): chained-absorb mode — one ecall, one group of chip rows
MauroToscano Aug 18, 2026
047ea69
style(blake3): satisfy the workspace clippy passes in the absorb suite
MauroToscano Aug 18, 2026
5539c37
feat(recursion): route the verifier guests through the absorb ecall
MauroToscano Aug 18, 2026
c512053
merge blake3-real-hash into mmcs-integration
MauroToscano Aug 18, 2026
31ecfe4
gate(blake3): z3/SMT verification of the chained-absorb mode constraints
MauroToscano Aug 19, 2026
321468f
fix(blake3): close the executor/chip gap on the absorb ABI's addresses
MauroToscano Aug 19, 2026
9f6238f
docs(spec): carry the absorb mode's post-review totals into blake3.toml
MauroToscano Aug 19, 2026
8deba26
feat(lfm): put row-cliff headroom on the census panel
MauroToscano Aug 19, 2026
34087bf
feat(prover)!: make the BLAKE3 table conditional on the workload usin…
MauroToscano Aug 19, 2026
20fcc2d
chore(lfm): re-bless the pins the conditional BLAKE3 table moved
MauroToscano Aug 19, 2026
a26ed66
feat(lfm): retire the unused hash family's chip group, both directions
MauroToscano Aug 19, 2026
2482190
chore(lfm): one combined re-bless for the chip set
MauroToscano Aug 19, 2026
e56883a
fix(lfm): make the R1f fixture cache self-healing across proof formats
MauroToscano Aug 19, 2026
1e68e48
test(prover): strip the BLAKE3 omission forgery toward Ecall (F1, F7,…
MauroToscano Aug 19, 2026
53f179a
fix(prover): bump the continuation tag and correct the stale R1 pins …
MauroToscano Aug 19, 2026
4da5e83
fix(lfm): make the R1f fixture cache self-healing across proof format…
MauroToscano Aug 19, 2026
1d7d164
chore(lfm): re-bless the one program the continuation tag moved
MauroToscano Aug 19, 2026
3d67c8d
style(prover): attach the strip switch's doc to the static it documents
MauroToscano Aug 19, 2026
4d10240
merge: wrap-slim (R3 headroom instrument + R1 conditional BLAKE3 tabl…
MauroToscano Aug 19, 2026
c84ce35
merge: blake3-absorb-mode (absorb ecall + chip mode, FV 60/60, F1-F5 …
MauroToscano Aug 19, 2026
8ccd1f2
chore(lfm): the one combined registry regeneration for the consolidat…
MauroToscano Aug 19, 2026
e7a73b1
fix(tests): finish the transcript flip in the PoC harnesses + re-pin …
MauroToscano Aug 19, 2026
c6f0ace
merge: mmcs-integration (batched MMCS/FRI M-1..M-7) into the consolid…
MauroToscano Aug 19, 2026
9ea419d
fix(lfm): commit the batched prep round under the production hash + t…
MauroToscano Aug 19, 2026
f8fa1b4
test(stark): exercise the batched stack under the production hash
MauroToscano Aug 19, 2026
3d1bdfe
fix(lfm): make the chunk-count assert and the census sub-proof pin ma…
MauroToscano Aug 19, 2026
b100c76
docs(lfm): correct slot_of_table's coverage claim
MauroToscano Aug 19, 2026
4ba8f7a
fix(prover): close three review findings on the consolidation
MauroToscano Aug 19, 2026
c0b173f
fix(lfm): make the chunk-count assert and the census sub-proof pin ma…
MauroToscano Aug 19, 2026
0604bcd
fix(prover): close three review findings on the consolidation
MauroToscano Aug 19, 2026
c07562d
merge: blake3-full review-fix pass (cherry-picked commits converge)
MauroToscano Aug 19, 2026
10ae16a
fix(lfm): make the wrap census's closed-form check follow the product…
MauroToscano Aug 19, 2026
3a23c20
merge: hash-aware wrap census closed form
MauroToscano Aug 19, 2026
efdb7ea
fix(tables): give the cuda arm its own static preprocessed pins
MauroToscano Aug 19, 2026
5cd4649
merge: cuda-arm static pins
MauroToscano Aug 19, 2026
942d0d0
feat(prover): LAMBDA_VM_MAX_ROWS_LOG2 — uniform table-cap override fo…
MauroToscano Aug 20, 2026
74d9442
merge: max-rows override knob
MauroToscano Aug 20, 2026
357226e
test(lfm): the base-layer A/B — the real block's epoch 0, per-table v…
MauroToscano Aug 20, 2026
76fba72
feat(stark,lfm): per-table preprocessed binding in the batched proof …
MauroToscano Aug 20, 2026
6be52ff
style(stark): fmt + clippy over the batched per-table prep binding
MauroToscano Aug 20, 2026
f04fc7c
test(lfm): RealBatchedEpoch — the census epoch proved batched and hos…
MauroToscano Aug 20, 2026
39539c0
test(lfm): batched arena serializers + shape-derived word oracles (T1…
MauroToscano Aug 20, 2026
1eb2ad0
feat(lfm): the batched epoch spine — histogram, one-transcript replay…
MauroToscano Aug 20, 2026
3846dca
feat(lfm): the mixed-MMCS walk — injected height groups, one shared p…
MauroToscano Aug 20, 2026
9a72137
fix(stark,lfm): bind the standalone terminal polynomials into the tra…
MauroToscano Aug 20, 2026
a6a8366
feat(lfm): batched DEEP crossing, injected FRI fold, standalone termi…
MauroToscano Aug 20, 2026
3fe768f
feat(lfm): constraint + quotient legs on the batched spine — the asse…
MauroToscano Aug 20, 2026
773e2b9
test(lfm): batched structural guards + the injected-matrix tamper arm…
MauroToscano Aug 20, 2026
74ffb8e
test(lfm): the batched query census — emitted hashing equals the shap…
MauroToscano Aug 20, 2026
17dc2e0
feat(lfm): the batched wrap instrument — the assembled batched verifi…
MauroToscano Aug 21, 2026
b1e50e2
perf(stark): phase and expansion wall clocks in BatchedProveStats
MauroToscano Aug 21, 2026
cb77aa8
perf(stark): move the LDE buffers into the phase view instead of clon…
MauroToscano Aug 21, 2026
45eccc9
perf(stark,math): parallelize the two serial per-table passes in the …
MauroToscano Aug 21, 2026
06f433d
perf(lfm): the BE halves become BITDEC bus sends — the 64-BALU-per-fe…
MauroToscano Aug 21, 2026
f093da9
perf(stark): phase 4 materializes the size-n coset evaluation, not th…
MauroToscano Aug 21, 2026
9df7fa8
Merge remote-tracking branch 'origin/main' into blake3-full-mmcs
MauroToscano Aug 24, 2026
97f35cf
feat(prover): reconstruct any continuation epoch's wrap input from th…
MauroToscano Aug 24, 2026
3ca4df1
fix(stark): keep the batched aux round on host-written columns under …
MauroToscano Aug 24, 2026
da4ae41
feat(stark): carve one table's main matrix into a standalone tree in …
MauroToscano Aug 25, 2026
9b9a9a6
feat(prover): the batched continuation arm — epochs prove as one mixe…
MauroToscano Aug 25, 2026
5457129
feat(lfm): the carved batched epoch's emitted verifier — proof-carrie…
MauroToscano Aug 25, 2026
8ad0582
feat(lfm): batched epochs wrap from the bundle alone, publishing the …
MauroToscano Aug 25, 2026
b263454
feat(lfm): the batched wrap ships — rkyv wire for BatchedLfmProof + t…
MauroToscano Aug 25, 2026
bd4605a
feat(lfm): the aggregation layer's verify legs and assembly — N batch…
MauroToscano Aug 25, 2026
53b7640
fix(lfm): lint-clean the aggregation module — test-gate the census pr…
MauroToscano Aug 25, 2026
1dec9b3
feat(lfm): the six-leg aggregation program — the global proof wrapped…
MauroToscano Aug 25, 2026
30665a5
feat(lfm): the block driver caches its proofs and takes an aggregatio…
MauroToscano Aug 25, 2026
b9668a3
fix(lfm): collapse the cache-persist condition — restores lint after …
MauroToscano Aug 25, 2026
8b210e7
feat(lfm): the aggregation prove takes its own terminal blowup (P3_AG…
MauroToscano Aug 26, 2026
f74bf19
feat(lfm): the block driver persists THE BLOCK PROOF and times the co…
MauroToscano Aug 26, 2026
b95ddba
feat(lfm): LFM_BLAKE3 splits into configurable chunk tables
MauroToscano Aug 26, 2026
26afa44
feat(lfm): the block driver takes the LFM_BLAKE3 chunk cap (LFM_BLAKE…
MauroToscano Aug 26, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
48 changes: 46 additions & 2 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

140 changes: 137 additions & 3 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ compile-programs compile-recursion-elfs clean-asm clean-rust clean-bench clean-s
clean-recursion-elfs clean test test-asm \
test-rust test-ethrex test-ethrex-offline test-executor test-syscalls test-flamegraph flamegraph-prover test-profile-recursion test-profile-recursion-single test-profile-recursion-multi \
test-profile-recursion-block recursion-profile-block-input \
test-fast test-prover test-prover-all test-prover-debug test-disk-spill test-math-cuda test-cuda-integration test-cuda-fallback \
test-fast test-prover test-prover-all test-prover-debug test-disk-spill test-math-cuda test-blake3-host-kat test-blake3-second-source test-cuda-integration test-cuda-fallback \
test-prover-cuda test-prover-comprehensive-cuda \
bench-math-cuda bench-prover bench-prover-cuda build check clippy fmt lint regen-ethrex-fixtures \
update-ethrex-fixture-checksums check-ethrex-fixture-checksums ethrex-real-block-fixture \
Expand Down Expand Up @@ -234,17 +234,24 @@ $(RECURSION_ARTIFACTS_DIR)/%.elf: FORCE | prepare-sysroot $(RECURSION_ARTIFACTS_
# dir "recursion") or copy-paste (presets list is the single source of truth).
# $(1) is the preset; the recipe uses $$ so `$$(call build_guest_elf,...)`
# expands at recipe-run time (where $@ is defined).
#
# `absorb` rides along with every preset: it routes the verifier legs' coalesced
# leaf hashing through the chained-absorb ecall, which the prover's BLAKE3 table
# answers with its absorb mode. It is a feature rather than a default of the
# guest crate so the no-absorb leg stays buildable for A/B cycle measurement —
# drop it from RECURSION_GUEST_FEATURES to rebuild that leg.
RECURSION_GUEST_FEATURES := absorb
define recursion_verifier_rule
$(RECURSION_ARTIFACTS_DIR)/recursion-$(1).elf: FORCE | prepare-sysroot $(RECURSION_ARTIFACTS_DIR)
$$(call build_guest_elf,$$(RECURSION_GUESTS_DIR)/recursion,recursion-$(1)-bench,--features $(1))
$$(call build_guest_elf,$$(RECURSION_GUESTS_DIR)/recursion,recursion-$(1)-bench,--features "$(1) $$(RECURSION_GUEST_FEATURES)")
endef
$(foreach preset,$(RECURSION_VERIFIER_PRESETS),$(eval $(call recursion_verifier_rule,$(preset))))

# Continuation variants: same crate, `continuation` feature on top of the preset
# feature -> recursion-cont-<preset>-bench -> recursion-cont-<preset>.elf.
define recursion_cont_verifier_rule
$(RECURSION_ARTIFACTS_DIR)/recursion-cont-$(1).elf: FORCE | prepare-sysroot $(RECURSION_ARTIFACTS_DIR)
$$(call build_guest_elf,$$(RECURSION_GUESTS_DIR)/recursion,recursion-cont-$(1)-bench,--features "continuation $(1)")
$$(call build_guest_elf,$$(RECURSION_GUESTS_DIR)/recursion,recursion-cont-$(1)-bench,--features "continuation $(1) $$(RECURSION_GUEST_FEATURES)")
endef
$(foreach preset,$(RECURSION_CONT_PRESETS),$(eval $(call recursion_cont_verifier_rule,$(preset))))

Expand Down Expand Up @@ -578,6 +585,79 @@ GPU_TEST_TIMEOUT := timeout -k 30 2700
test-math-cuda:
$(GPU_TEST_TIMEOUT) cargo test -p math-cuda --release

# Known-answer tests for the BLAKE3 device kernels, run on the HOST. No GPU, no
# nvcc, no cargo — a couple of seconds.
#
# This exists because `test-math-cuda` above, which is the authority on these
# kernels, runs only where a GPU does, and the per-PR CI runners have none (GPU
# jobs are merge_group-only). Without this the kernels have no per-PR gate: an
# edit to blake3.cu that broke the hash would reach the merge queue before
# anything caught it. `crypto/math-cuda/tests/host_kat/` compiles the real kernel
# source as host C++ through a shim and runs the official BLAKE3 vectors, the
# canonical 6-round table, the official multi-block vectors against the
# `Blake3Chain` construction, and every leaf kernel's byte stream through it.
#
# BOTH ROUND COUNTS are built and run. The 6-round arm is the one the campaign
# ships and the one no other CI job compiles (risk R10), and the round count is a
# compile-time knob, so a single-arm run would leave the shipping configuration
# ungated. The two arms differ only in `-DBLAKE3_ROUNDS`, exactly as build.rs
# drives the cubin from the `blake3-6round` feature.
#
# It checks arithmetic ONLY. Whether nvcc accepts the file, and everything about
# execution rather than arithmetic — grid indexing, the Merkle tail's barriers,
# device alignment, register pressure — stays with `test-math-cuda`. Necessary,
# never sufficient.
HOST_KAT_DIR := crypto/math-cuda/tests/host_kat
HOST_KAT_CXXFLAGS := -std=c++17 -O2 -Wall -Wno-unknown-pragmas \
-I$(HOST_KAT_DIR) -Icrypto/math-cuda/kernels
test-blake3-host-kat:
@mkdir -p target/host_kat
$(CXX) $(HOST_KAT_CXXFLAGS) \
-o target/host_kat/blake3_host_kat $(HOST_KAT_DIR)/blake3_host_kat.cpp
./target/host_kat/blake3_host_kat
@echo
@echo "=== rebuilding for the 6-round arm (BLAKE3_ROUNDS=6) ==="
$(CXX) $(HOST_KAT_CXXFLAGS) -DBLAKE3_ROUNDS=6 \
-o target/host_kat/blake3_host_kat_6r $(HOST_KAT_DIR)/blake3_host_kat.cpp
./target/host_kat/blake3_host_kat_6r

# SECOND-SOURCE validation of the 6-round vectors the KAT above trusts.
#
# `test-blake3-host-kat` checks the KERNEL against the committed tables. This
# checks the TABLES, against upstream BLAKE3's own portable C with its round loop
# parameterised (`thoughts/blake3/reference-impl/`, a 2 KB reviewable diff in
# PARAMETERISATION.diff). That reference is a different language and author and —
# the part that matters — a different message-schedule CONSTRUCTION: it indexes a
# precomputed MSG_SCHEDULE table where our Rust and CUDA compose one permutation
# between rounds. A bug in the iterative composition is exactly what a single
# source cannot catch, and check [C] compares the two constructions directly.
#
# It exists because 6-round BLAKE3 is computed by nothing else in the world
# (assumption A6R), so the 6-round column of every table here rests on oracle
# agreement rather than on a published vector.
#
# ⚠ Checks [D] and [E] were SILENTLY DEAD from P-a Stage 1 — which moved
# CANONICAL_VECTORS out of `prover/src/lfm/blake3.rs` into `crypto` — until
# 2026-08-15, because nothing ever ran this: it had no target. That is why it has
# one now. A ~1 second C compile plus a few seconds of Python; no cargo, no GPU.
test-blake3-second-source:
thoughts/blake3/reference-impl/build.sh
python3 thoughts/blake3/reference-impl/check.py

# z3/SMT gate for the BLAKE3 chained-absorb mode's row-local constraints: the
# compression equivalence under the absorb framing, the flags schedule, the mode
# gating, the countdown/END logic, and the byte-width assumptions.
#
# Read `formal_verification/blake3_absorb/README.md` before extending it. The 6
# rounds are verified ONE AT A TIME because the composed query does not close —
# commit 89aeeb8c measured 145 minutes of `unknown` — and the negative controls
# are what make a green board mean anything.
#
# z3's Python bindings are the only dependency. No cargo, no GPU, ~25 seconds.
test-blake3-absorb-fv:
python3 formal_verification/blake3_absorb/test_ref.py
python3 formal_verification/blake3_absorb/z3_absorb_verify.py

# End-to-end cuda dispatch coverage (requires NVIDIA GPU + nvcc).
# Asserts the R1-R4 GPU dispatch counters fired on a real prove.
# --test-threads=1: these tests reset and assert on process-global GPU call
Expand Down Expand Up @@ -640,6 +720,33 @@ clippy:
cargo clippy --workspace --all-targets -- -D warnings -A clippy::op_ref
cargo clippy --workspace --all-targets --no-default-features --features lambda-vm-prover/debug-checks -- -D warnings -A clippy::op_ref
cargo clippy --workspace --all-targets --features lambda-vm-prover/disk-spill -- -D warnings -A clippy::op_ref
# BLAKE3 at SEVEN rounds — the standard, externally anchored arm.
#
# This pass used to be the six-round one. Six is the default now (P-a Stage 6
# put the commitment aliases on BLAKE3, and every blessed constant is six), so
# the pass that needs writing down is the other one: without this, nothing in
# the matrix compiles `hash::blake3` at seven and the arm the KATs anchor
# against could rot unnoticed.
#
# Scoped to `crypto`, and it has to be. A workspace-level
# `--no-default-features` does NOT turn six off: `lambda-vm-prover` depends on
# `crypto` with default features, and feature unification takes the union, so
# the flag applies to the packages and the dependency edge puts it back. Only
# building `crypto` alone leaves the edge out of the graph.
#
# The lockstep between `crypto`'s knob and `math-cuda`'s (host primitive vs
# compiled cubin) still holds and is now expressed as both defaulting to six,
# which `math_cuda::blake3::device_rounds` makes assertable rather than
# discoverable as a wrong root.
cargo clippy -p crypto --all-targets --no-default-features --features std,asm -- -D warnings -A clippy::op_ref
# The chained-absorb guest arm's feature graph. Nothing else resolves it: it is
# not a default and no dependency names it, so a typo in the forwarding chain
# would go unnoticed. ⚠ This does NOT compile the guest absorb arm — that arm
# is `cfg(all(target_arch = "riscv64", feature = "blake3-absorb"))` and this is
# a host pass, so what compiles is its `cfg(not(...))` stub. The riscv64 arm
# has no CI coverage at all (RESUME-PA-STAGE4 §4.2); closing that needs a
# guest-target build, not a clippy feature.
cargo clippy --workspace --all-targets --features lambda-vm-prover/blake3-absorb -- -D warnings -A clippy::op_ref

fmt:
cargo fmt --all
Expand All @@ -650,6 +757,33 @@ lint:
cargo clippy --workspace --all-targets -- -D warnings -A clippy::op_ref
cargo clippy --workspace --all-targets --no-default-features --features lambda-vm-prover/debug-checks -- -D warnings -A clippy::op_ref
cargo clippy --workspace --all-targets --features lambda-vm-prover/disk-spill -- -D warnings -A clippy::op_ref
# BLAKE3 at SEVEN rounds — the standard, externally anchored arm.
#
# This pass used to be the six-round one. Six is the default now (P-a Stage 6
# put the commitment aliases on BLAKE3, and every blessed constant is six), so
# the pass that needs writing down is the other one: without this, nothing in
# the matrix compiles `hash::blake3` at seven and the arm the KATs anchor
# against could rot unnoticed.
#
# Scoped to `crypto`, and it has to be. A workspace-level
# `--no-default-features` does NOT turn six off: `lambda-vm-prover` depends on
# `crypto` with default features, and feature unification takes the union, so
# the flag applies to the packages and the dependency edge puts it back. Only
# building `crypto` alone leaves the edge out of the graph.
#
# The lockstep between `crypto`'s knob and `math-cuda`'s (host primitive vs
# compiled cubin) still holds and is now expressed as both defaulting to six,
# which `math_cuda::blake3::device_rounds` makes assertable rather than
# discoverable as a wrong root.
cargo clippy -p crypto --all-targets --no-default-features --features std,asm -- -D warnings -A clippy::op_ref
# The chained-absorb guest arm's feature graph. Nothing else resolves it: it is
# not a default and no dependency names it, so a typo in the forwarding chain
# would go unnoticed. ⚠ This does NOT compile the guest absorb arm — that arm
# is `cfg(all(target_arch = "riscv64", feature = "blake3-absorb"))` and this is
# a host pass, so what compiles is its `cfg(not(...))` stub. The riscv64 arm
# has no CI coverage at all (RESUME-PA-STAGE4 §4.2); closing that needs a
# guest-target build, not a clippy feature.
cargo clippy --workspace --all-targets --features lambda-vm-prover/blake3-absorb -- -D warnings -A clippy::op_ref
# The cuda feature gates whole modules + cuda-only integration tests. build.rs emits empty
# cubin stubs when nvcc is absent, so this checks on a GPU-less host (CI lint runner, dev laptop)
# too — no GPU required. Catches cuda-gated breakage that the non-cuda passes above miss.
Expand Down
Loading