Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1720 commits
Select commit Hold shift + click to select a range
475cf04
tests: the code review's additions for the grouped chain (D-ONECHAIN …
MauroToscano Oct 11, 2026
bc0a161
tests: each binding of a grouped round 0, on its own (D-ONECHAIN B1+B2)
MauroToscano Oct 11, 2026
d478986
tests: a successor cap wider than its openings (D-ONECHAIN B2)
MauroToscano Oct 11, 2026
e189f2e
tests: the Indexed block tests run at the block's one base (D-ONECHAI…
MauroToscano Oct 11, 2026
bae031d
tests: the Indexed block round trip reads each group's chains off the…
MauroToscano Oct 11, 2026
05a988b
prover: phase B's interleave weighs each group by its own tables
MauroToscano Oct 10, 2026
e195347
prover: live regeneration is the block's default when no knob is set …
MauroToscano Oct 7, 2026
6c94960
prover: no disk is the block's default when no knob is set (N4b)
MauroToscano Oct 7, 2026
61faa6b
prover, stark: live regeneration starts both regenerators at the fini…
MauroToscano Oct 10, 2026
ae5362e
prover: an early start fills its windows only with the host's room un…
MauroToscano Oct 10, 2026
e33fed7
prover, stark: only the streamed chunks' regenerator starts at the fi…
MauroToscano Oct 10, 2026
130d57c
tests(prover): the regeneration hang guards scale with the plain prove
MauroToscano Oct 11, 2026
a8f2516
tables: the Poseidon1 roots of the bitwise and keccak_rc static table…
MauroToscano Oct 12, 2026
ea81504
test(static roots): recompute one bitwise root off its Poseidon1 key
MauroToscano Oct 12, 2026
d141756
test(static roots): a third hash configuration computes at Poseidon1'…
MauroToscano Oct 12, 2026
c912e72
prover: a no-disk block with room skips the allocator's two boundary …
MauroToscano Oct 12, 2026
9168bc7
test(hash pin gate): say which files never name the Poseidon1 module
MauroToscano Oct 12, 2026
d549032
prover: the purge rule's doc says what its gate measured
MauroToscano Oct 12, 2026
d954b28
prover: the streamed rebuild starts when its drop decisions are known
MauroToscano Oct 12, 2026
4e8b99f
prover: phase B takes four streamed groups before the rest's first
MauroToscano Oct 12, 2026
422add9
test(prover): a regenerator up before the drops waits for every fate
MauroToscano Oct 12, 2026
baf5d7c
prover: emit the recursion's leaf programs a few at a time
MauroToscano Oct 12, 2026
39716fe
trace builder: a block's cut tables can stop at the last real row (kn…
MauroToscano Oct 12, 2026
46c4c12
test(block): a block without its padding tables verifies; one table s…
MauroToscano Oct 12, 2026
0d9b249
prover: new comments give a measurement's conditions, not its run
MauroToscano Oct 12, 2026
52f9b6c
trace builder: a block's cut tables stop at the last real row by default
MauroToscano Oct 20, 2026
fb1059e
test(block): the cut-padding proving tests run on the box tier
MauroToscano Oct 20, 2026
f5138d7
whir: the lean rounds from one pass over the message (knob, off by de…
MauroToscano Oct 20, 2026
c2ca2d4
whir: the tile form writes the bound tables, with no position map
MauroToscano Oct 20, 2026
48070eb
whir: the lean rounds run in tile form by default
MauroToscano Oct 21, 2026
973d27f
prover: the tree's program budget can read the host less what a purge…
MauroToscano Oct 12, 2026
a24e080
prover: the tree's program budget reads the host less what a purge co…
MauroToscano Oct 21, 2026
0025cc3
prover: closed groups may wait for phase A while the host has room
MauroToscano Oct 12, 2026
b178bbb
test(block): closed groups waiting behind one another move no byte
MauroToscano Oct 12, 2026
e01da98
test(block): a queue that stops handing groups on fails its tests
MauroToscano Oct 12, 2026
b1ade3a
test(block): every threaded test of the queue runs under the bound
MauroToscano Oct 12, 2026
55631ab
prover: the group queue's room rule counts the waiting bytes once
MauroToscano Oct 20, 2026
4f09d3a
prover: the drops' arming rule counts the cells of groups waiting
MauroToscano Oct 20, 2026
85eb596
test(block): the packer weighs a waiting group by its main cells
MauroToscano Oct 20, 2026
0ccde0d
prover: the windowed builder seeds its memory from the image's pages …
MauroToscano Oct 22, 2026
04cfd73
math-cuda: lay a grouped chain's tables slot by slot and combine its …
MauroToscano Oct 22, 2026
4bde90f
multilinear: run a grouped chain's round 0 on the card
MauroToscano Oct 22, 2026
2c6734d
test: a grouped chain on the card proves the host's bytes
MauroToscano Oct 22, 2026
7c2fb12
prover, cli: let the caller choose the block's group opening
MauroToscano Oct 22, 2026
080b581
test(block): the grouped opening under the batched argue, and across …
MauroToscano Oct 22, 2026
4f39309
prover, cli: name the harness's group knob LAMBDA_VM_WHIR_GROUP
MauroToscano Oct 22, 2026
a29c449
multilinear: the host-reference test knob keeps host-built openings o…
MauroToscano Oct 22, 2026
b82513a
test(block): a crossed leaf whose hint builder stops counts as refusing
MauroToscano Oct 22, 2026
15b3e72
syscalls: a fast-memcpy feature, a memcpy that moves 32 bytes an iter…
MauroToscano Oct 22, 2026
b9aa666
ethrex-crypto: absorb the last Keccak block straight into the lanes
MauroToscano Oct 22, 2026
bc633d4
executor: sweep the guest memory routines in the VM
MauroToscano Oct 22, 2026
ada548d
ethrex guest: whole-program optimisation, the fast memcpy, unaligned …
MauroToscano Oct 22, 2026
c1fd924
docs: the benchmark block's cycle count with the new guest build
MauroToscano Oct 22, 2026
f109bcf
ci: the guest ELF cache key hashes the crypto crates the guests build…
MauroToscano Oct 22, 2026
0e9a5d4
test(tree): the real block's epoch counts at 23,935,913 cycles
MauroToscano Oct 22, 2026
0a5e536
test(epoch recount): say that every input is the old guest's
MauroToscano Oct 22, 2026
dc030c1
test(genesis stack): the block's census on the guest built today
MauroToscano Oct 22, 2026
623e56c
test(epoch shapes): the guest built today has its own epoch-0 test
MauroToscano Oct 22, 2026
5776992
test(transcript pin): the transcript and device pins skipped on every…
MauroToscano Oct 22, 2026
9b7b190
docs: the new guest fixture's name and the block's epoch count in two…
MauroToscano Oct 22, 2026
e62a57b
prover: the streamed finish may build each table as its byte gate adm…
MauroToscano Oct 22, 2026
62f0bbc
multilinear: count the successor encodes the card declines
MauroToscano Oct 22, 2026
fe986b7
zf_format: the WHIR base code's blowup as a format field, default 4
MauroToscano Oct 22, 2026
6c6d6d1
test: the WHIR blowup is a verifier constant at the chain, the block …
MauroToscano Oct 22, 2026
77d7a1d
test(cuda): the card's commit, encoded successor and chain at blowup …
MauroToscano Oct 22, 2026
ab879d0
test: one chain a run at blowup 2, on the host and in guest
MauroToscano Oct 22, 2026
5d36d85
test(cuda): the grouped card path at blowup 2 proves the host's bytes
MauroToscano Oct 22, 2026
c264f24
test(block): the WHIR blowup under one chain a run, at the block and …
MauroToscano Oct 22, 2026
50211e4
prover, cli: give the block commands the WHIR blowup
MauroToscano Oct 22, 2026
f7f266d
zf_format, cli: the block commands' banner states the blowup they run…
MauroToscano Oct 22, 2026
228ef75
prover, cli: the block verifier takes named choices, never a format
MauroToscano Oct 22, 2026
8ddc089
feat(math-cuda): evaluate a first-round query's coset from the polyno…
MauroToscano Oct 22, 2026
1679c5e
feat(whir): an opt-in coset leaf order for round-0 trees
MauroToscano Oct 22, 2026
e495c5a
feat(whir): the coset leaf order is Poseidon1's alone, refused by nam…
MauroToscano Oct 22, 2026
39d687e
feat(whir): coset-ordered round-0 trees on the card, opened from thei…
MauroToscano Oct 22, 2026
62a98f3
feat(prover): LAMBDA_VM_ZF_WHIR_LEAVES selects the coset round-0 leaf…
MauroToscano Oct 22, 2026
34dc6bc
test(block): the tree harness prints the coset round-0 openings' coun…
MauroToscano Oct 22, 2026
d5b9a98
feat(whir): a coset round-0 successor not encoded refuses the prove, …
MauroToscano Oct 22, 2026
c3aaf0e
test(whir): reach factors kept on the host, and show the uploaded one…
MauroToscano Oct 22, 2026
4c0ccd9
multilinear: a grouped run under the coset order never folds its card…
MauroToscano Oct 22, 2026
f741abf
prover: the grouped leg walks every round-0 tree in the coset order
MauroToscano Oct 22, 2026
12a93be
prover, cli: the round-0 leaf order is a named choice of the block ve…
MauroToscano Oct 22, 2026
963e255
test(block): a coset block under one chain a run is refused by a natu…
MauroToscano Oct 22, 2026
247c80f
zf_format: the module header names the leaf order knob
MauroToscano Oct 22, 2026
466f754
test: the composed WHIR format in guest, refused one setting away
MauroToscano Oct 22, 2026
b120bba
test(cuda): the coset order's card paths at blowup 2
MauroToscano Oct 22, 2026
2718867
test(block): a composed block is refused one setting away
MauroToscano Oct 22, 2026
4c88019
multilinear: count a grouped host fallback over stack-held codewords
MauroToscano Oct 23, 2026
7e6399f
multilinear: a grouped run under the coset order opens from its stacks
MauroToscano Oct 23, 2026
628c1a1
prover, cli: one chain per group and the coset leaf order are the blo…
MauroToscano Oct 23, 2026
a72c30a
multilinear: a coset round 0 whose factors the host built encodes its…
MauroToscano Oct 23, 2026
ccf72ef
test(whir): the host-encoded successor is the host's fold; the harnes…
MauroToscano Oct 23, 2026
efb50be
zf_format: rustfmt the leaf order test
MauroToscano Oct 23, 2026
85831c7
test(block): a coset block at the card's stack encodes nothing on the…
MauroToscano Oct 23, 2026
9789f51
argue: keep each GKR input layer without its padding (knob, off by de…
MauroToscano Oct 23, 2026
a5f495b
math-cuda: host test of the kept-layer GKR kernels (make test-gkr-hos…
MauroToscano Oct 23, 2026
b4ba2c6
argue: card tests and micro-benchmark for the kept input layer
MauroToscano Oct 23, 2026
4483cfc
argue: hold the whole layer's room when a checked layer finishes on i…
MauroToscano Oct 23, 2026
d23b461
argue: keep each GKR input layer without its padding by default
MauroToscano Oct 23, 2026
e3a7f06
test(block): bound host encodes by the chains below the card's stack
MauroToscano Oct 23, 2026
aef3339
test, docs: name the coset evaluation output for what it measures
MauroToscano Oct 23, 2026
46b5030
test(lfm): size the over-height census leaf from the plan, not a fixe…
MauroToscano Oct 23, 2026
2c23f6c
executor: the memory can be kept at a moment of the run (Memory::snap…
MauroToscano Oct 23, 2026
7c82dab
prover: the walk's timestamps alone, a window at a time (the lean pass)
MauroToscano Oct 23, 2026
cb10bae
test(prover): the lean pass split over two threads, a measurement's arm
MauroToscano Oct 23, 2026
80026b9
prover: a block's windows walked on several threads (LAMBDA_VM_BLOCK_…
MauroToscano Oct 23, 2026
0c74257
prover: the window walkers refuse a window never handed out, take at …
MauroToscano Oct 23, 2026
8876679
prover: the window walkers' pass hands out each window as it arrives;…
MauroToscano Oct 23, 2026
1954447
prover: the finish's state after a walk on several threads is filled …
MauroToscano Oct 23, 2026
c92fce6
prover: rustfmt the walkers knob test
MauroToscano Oct 23, 2026
2683dfb
prover: the lean pass and the window walkers compile with the paralle…
MauroToscano Oct 23, 2026
4e66501
Merge main into the WHIR block branch
MauroToscano Oct 24, 2026
e59c017
tests: the block's REGISTER sends its final PC token at its own clock…
MauroToscano Oct 24, 2026
5a18bed
prover: check the CPU tables' position in every build; a restated CPU…
MauroToscano Oct 24, 2026
7777fc7
block: CPU heights and KECCAK_RND padding counts right on the rest's …
MauroToscano Oct 24, 2026
23b5eb8
tests: the windowed KECCAK_RND builds' BITWISE without the split's le…
MauroToscano Oct 24, 2026
c9a08d1
tests: the wide singleton group probe states a table the CPU cap allo…
MauroToscano Oct 24, 2026
62bef19
tests: EQ's multiplicity perturbation stays a bit
MauroToscano Oct 24, 2026
7f78e51
lfm: count KECCAK_RND's padding byte checks in the recursion VM's BIT…
MauroToscano Oct 25, 2026
5ee4655
tests: the recursion VM's statement, register and W-leg pins after ma…
MauroToscano Oct 25, 2026
eb7e251
spec(blake3): the chip page passes the spec structure check
MauroToscano Oct 25, 2026
2f545c6
math-cuda: GKR round kernels that reduce their own sums into a slot (…
MauroToscano Oct 23, 2026
5801d48
math-cuda: the GKR layer's round sums through a slot
MauroToscano Oct 23, 2026
c1277bc
argue: read the GKR rounds' sums from a slot and queue a bin's trees …
MauroToscano Oct 23, 2026
c5b8733
argue: read the GKR rounds' sums from a slot by default
MauroToscano Oct 23, 2026
37714f7
multilinear: the input-layer knob's doc names its default
MauroToscano Oct 23, 2026
6a33f49
block: rebuild dropped tables on 6 generator threads by default
MauroToscano Oct 24, 2026
94312b0
block: the rest's regenerator can take its own generator count
MauroToscano Oct 24, 2026
e59ce12
block: rebuild the rest's tables on 4 threads and the streamed chunks…
MauroToscano Oct 24, 2026
02854bd
stark: build a trace shape's domain and twiddles ahead of its prove
MauroToscano Oct 24, 2026
47728e1
lfm: build the recursion proofs' domains before their card holds (kno…
MauroToscano Oct 24, 2026
d34513f
lfm: say how many bytes the domain warm-up built, and how many by the…
MauroToscano Oct 24, 2026
6dfa68f
prover: the streamed finish builds each table as its byte gate admits…
MauroToscano Oct 23, 2026
4d66d62
math-cuda: a per-thread grid cap for long kernels
MauroToscano Oct 24, 2026
436449a
math-cuda: the coset tile and rest folds stride over their work, capped
MauroToscano Oct 24, 2026
70dbc4e
math-cuda: coset openings can read the stack where it lies
MauroToscano Oct 24, 2026
7974f95
multilinear: LAMBDA_VM_WHIR_COSET_INPLACE reads the coset stack in place
MauroToscano Oct 24, 2026
439d5e7
tests: no test store ends in a column that ends mid-tile
MauroToscano Oct 24, 2026
391315c
tests: the production-like coset stack is filled and laid out as a bl…
MauroToscano Oct 24, 2026
a3497e4
multilinear: a coset opening reads its stack in place by default
MauroToscano Oct 24, 2026
18ed3b4
math-cuda: fill MEMW_R, CPU and KECCAK_RND tables on the card from th…
MauroToscano Oct 24, 2026
8e89eb4
prover: records, synthetic sets and host known-answer vectors for the…
MauroToscano Oct 24, 2026
8ed4311
prover: a box test of the card fills against today's widen, word for …
MauroToscano Oct 24, 2026
143f48d
prover: the card fill test runs KECCAK_RND first and checks a refused…
MauroToscano Oct 24, 2026
50d76d2
prover: the card fill test's refused pc falls back past the program w…
MauroToscano Oct 24, 2026
ebcca74
math-cuda: the CPU fill writes the table's own timestamps and 37 columns
MauroToscano Oct 24, 2026
124cab0
prover: the card fill test faults CPU column 0 alone and expects it f…
MauroToscano Oct 24, 2026
b77e14a
math-cuda: fill a KECCAK_RND table from the records a table held as i…
MauroToscano Oct 24, 2026
d2dcb27
multilinear: a table's columns held as the records its rows come from
MauroToscano Oct 24, 2026
8674e48
stark: a block's tables held as records go up as records
MauroToscano Oct 24, 2026
d5112cb
prover: KECCAK_RND's tables held as their keccak ops for the card to …
MauroToscano Oct 24, 2026
b47ba33
math-cuda: a test-only fault that fills a table from its records a ro…
MauroToscano Oct 24, 2026
5aeff2e
test(prover): KECCAK_RND filled from its records, on the card and in …
MauroToscano Oct 24, 2026
8491445
multilinear: a digest of a table's records
MauroToscano Oct 24, 2026
e476382
test(prover): a wrong records table reaches the verifier, which refus…
MauroToscano Oct 24, 2026
5c7bf52
prover: BLOCK CARD FILL counts the whole prove's fills, phase A's too
MauroToscano Oct 24, 2026
fe8e604
prover: the card fills KECCAK_RND by default in a build with the card…
MauroToscano Oct 24, 2026
52e1707
prover: with LAMBDA_VM_BLOCK_DROP=partial live regeneration drops a t…
MauroToscano Oct 24, 2026
73150b6
prover: live regeneration drops a table only while the policy wants i…
MauroToscano Oct 24, 2026
ca1b489
prover: the recursion's leaves can double above a leaf-count threshold
MauroToscano Oct 24, 2026
2d29bd7
prover: the leaf scale is the verifier's, both ways, on proved trees
MauroToscano Oct 24, 2026
70b1f99
prover: the recursion's leaves double from 10 leaves by default
MauroToscano Oct 24, 2026
d89f5f0
test(lfm): the node pipe's toy tree finishes level 0 out of order on …
MauroToscano Oct 24, 2026
18e7c3e
zf_format: the WHIR base code's default blowup is 2
MauroToscano Oct 24, 2026
df14619
lfm tests: pin the WHIR costs at the default's blowup 2, and the opt-…
MauroToscano Oct 25, 2026
ef62184
lfm tests: size the leaf-scale test at blowup 4; count the lean test'…
MauroToscano Oct 25, 2026
6b78bc9
lfm: build the recursion proofs' domains and twiddles before their ca…
MauroToscano Oct 25, 2026
4912cd8
prover: the walked windows' boundaries must add up to the bytes they …
MauroToscano Oct 25, 2026
5d939bc
prover: a block's windows are walked on four threads by default
MauroToscano Oct 25, 2026
aa5c1a4
math-cuda: stream classes and a reservation that never evicts
MauroToscano Oct 23, 2026
dfebbaf
stark: a thread's device cap, and the table drivers keep their stream…
MauroToscano Oct 23, 2026
d9d24dc
block: a measurement knob that puts named groups first in phase B, an…
MauroToscano Oct 23, 2026
d2ddfe2
multilinear: a thread's background streams, stream draws and the card…
MauroToscano Oct 24, 2026
49f7ee8
stark: phase B can open each group beside the next group's argument
MauroToscano Oct 24, 2026
c0bb18d
stark: tests for phase B's overlap on a small block
MauroToscano Oct 24, 2026
4d558c3
prover: LAMBDA_VM_PHASE_B_OVERLAP and phase B's overlap readout
MauroToscano Oct 24, 2026
f6e59bc
phase B's overlap: latch on refusals only, no -0.000
MauroToscano Oct 24, 2026
cfbce3a
test(prover): the overlap's faults meet its opening thread
MauroToscano Oct 24, 2026
6f9ca98
math-cuda: read-backs through pinned staging for background-class thr…
MauroToscano Oct 24, 2026
6468f4a
phase B's overlap: LAMBDA_VM_PHASE_B_OVERLAP=pinned
MauroToscano Oct 24, 2026
b5c719d
phase B: LAMBDA_VM_BLOCK_SCHEDSTAT stamps the driver thread's run-que…
MauroToscano Oct 24, 2026
8f679ae
phase B's overlap with pinned read-backs is the default on a card build
MauroToscano Oct 25, 2026
a6d16b8
tests: the epoch harvest, the census instruments and a transcript pin…
MauroToscano Oct 25, 2026
61499fb
lfm tests: build five small-block recursion tests' blocks at blowup 4
MauroToscano Oct 25, 2026
6d133c5
test(stark): a partial drop-back asked for exactly one table's bytes …
MauroToscano Oct 24, 2026
3f51e26
prover: with LAMBDA_VM_BLOCK_P4_ROWS=pool the finish counts the dedup…
MauroToscano Oct 25, 2026
cd0542f
prover: the pool's row count reserves each map for its distinct ops a…
MauroToscano Oct 25, 2026
ec7655f
prover: the finish counts the per-row lookups on the pool by default
MauroToscano Oct 25, 2026
57805fa
stark, prover: partial drops can keep a budget of committed cells at …
MauroToscano Oct 25, 2026
6d903ba
stark, prover: partial drops can keep a budget relative to the arming…
MauroToscano Oct 25, 2026
48e8d7a
prover: partial drops keep a budget 1.3 G cells below the arming poin…
MauroToscano Oct 25, 2026
8f550fb
prover: the streamed layout runs eight chunks ahead by default
MauroToscano Oct 25, 2026
576207f
prover: the sliding finish can cap the bytes it builds at once apart …
MauroToscano Oct 25, 2026
143b06c
prover: the rest layout line says waves only where the rest builds in…
MauroToscano Oct 25, 2026
67ab213
prover: the sliding finish holds up to 4 GiB of the rest with at most…
MauroToscano Oct 25, 2026
430b544
test(block): the block's trace alone, its groups drained instead of c…
MauroToscano Oct 23, 2026
431a79f
executor, prover: the executor's log and the MEMW_R register row get …
MauroToscano Oct 24, 2026
4077d5f
multilinear, math-cuda: CPU and MEMW_R tables held as records go up a…
MauroToscano Oct 24, 2026
7b92644
prover: full CPU and MEMW_R chunks handed out as the records their ro…
MauroToscano Oct 24, 2026
62a4c68
prover: LAMBDA_VM_BLOCK_CARD_FILL takes families; streamed chunks as …
MauroToscano Oct 24, 2026
bd0e454
prover: a CPU chunk held as its logs declares its preprocessed TIMESTAMP
MauroToscano Oct 25, 2026
635c4c4
stark: a regeneration slot for a table dropped as its records
MauroToscano Oct 24, 2026
7df0616
multilinear: a table held as its records gives them up to a spill and…
MauroToscano Oct 24, 2026
3832218
stark: a block's records tables park and drop like its packed ones
MauroToscano Oct 24, 2026
7231f11
prover: streamed chunks held as records drop and come back like any c…
MauroToscano Oct 24, 2026
876ae02
prover: streamed chunks are held as records only where live regenerat…
MauroToscano Oct 24, 2026
c81458c
math-cuda: fill MEMW_A and LOAD tables on the card from their rows
MauroToscano Oct 24, 2026
e2a224d
multilinear: MEMW_A and LOAD records
MauroToscano Oct 24, 2026
7adae6e
prover: full MEMW_A and LOAD chunks handed out as their rows
MauroToscano Oct 24, 2026
cd4d599
math-cuda: known answers for the MEMW_A and LOAD fills
MauroToscano Oct 24, 2026
e712e5b
math-cuda: fill STORE, SHIFT and MEMW tables on the card from their ops
MauroToscano Oct 24, 2026
4adb575
multilinear: STORE, SHIFT and MEMW records
MauroToscano Oct 24, 2026
3ae7aee
prover: full STORE, MEMW and SHIFT chunks handed out as their ops
MauroToscano Oct 24, 2026
b25443e
math-cuda: known answers for the STORE, SHIFT and MEMW fills
MauroToscano Oct 24, 2026
31b6c71
test(prover): make the card-fill fault tests bite on the merged CPU l…
MauroToscano Oct 25, 2026
df6bd2d
math-cuda: the fill checks read back through the pinned staging
MauroToscano Oct 25, 2026
1c8b41f
stark: a finished group lets go of its records in phase B
MauroToscano Oct 25, 2026
072fb55
prover: report the records phase B lets go, and check them in the dro…
MauroToscano Oct 25, 2026
acd8160
tests: the records drop test states its parked table's cells
MauroToscano Oct 25, 2026
38c5e30
multilinear: records can hand their pages back as they are let go
MauroToscano Oct 25, 2026
23b690d
prover: records chunks hand back the pages of the lists they alone hold
MauroToscano Oct 25, 2026
ba9449a
stark: phase B hands finished groups' records to a thread of their own
MauroToscano Oct 25, 2026
496ba68
prover: report the records pages handed back, and check them in the d…
MauroToscano Oct 25, 2026
0dff4b3
prover: the card fills CPU and MEMW_R chunks from their records by de…
MauroToscano Oct 26, 2026
a3322dc
tests: the regeneration tests keep CPU and MEMW_R on the host
MauroToscano Oct 26, 2026
01a917c
prover: the finish can count the per-row lookups by parts of each chunk
MauroToscano Oct 25, 2026
ed31517
prover: the card can be set up as the streamed prove starts
MauroToscano Oct 25, 2026
e870428
prover: phase 4 says what each BITWISE source cost
MauroToscano Oct 26, 2026
3740ca8
prover: the finish can count LT's and KECCAK's lookups straight into …
MauroToscano Oct 26, 2026
4ba08f7
prover: the finish counts LT's and KECCAK's lookups straight into its…
MauroToscano Oct 26, 2026
92c735f
prover: pin the finish's phase-4 defaults
MauroToscano Oct 26, 2026
b0f83db
tests: the unarmed live regeneration cases pin auto's target out of r…
MauroToscano Oct 26, 2026
c303681
tests: the spill budget and hand-off tests pin auto's target out of r…
MauroToscano Oct 26, 2026
de10ce3
guest: build ethrex from a fork that keeps jump destinations as a bitmap
MauroToscano Oct 26, 2026
8c36bea
docs: the benchmark block's cycle count with the guest's forked ethrex
MauroToscano Oct 26, 2026
124080d
guest: take ethrex main's unchecked memory hot path in the forked ethrex
MauroToscano Oct 26, 2026
f0366d9
prover: a lean leaf checks a chain's tail rounds at every leaf once
MauroToscano Oct 24, 2026
e386785
prover: a lean tail tree needs 24 queries a leaf
MauroToscano Oct 24, 2026
f1190ab
prover: a lean leaf takes round 0's values four to a hinted word
MauroToscano Oct 24, 2026
014c483
prover: a hint whose arena word the executor picks on a bit
MauroToscano Oct 24, 2026
7d4e903
prover: a lean leaf walks each path level in three selects
MauroToscano Oct 24, 2026
d89432b
prover: the leaves' query check is the verifier's named choice
MauroToscano Oct 24, 2026
5eb5f2f
tests: the lean leaf's tests pass slices by reference, and walk leave…
MauroToscano Oct 24, 2026
721bc0a
tests: a lean chain refuses tail blocks that only fold consistently
MauroToscano Oct 24, 2026
1661b4c
tests: beside a lean leaf's tail rounds the sampled checks still run
MauroToscano Oct 25, 2026
00cdaa5
tests: a lean chain's tail fold compare refuses a tail value on its own
MauroToscano Oct 25, 2026
3ca749b
tests: the lean query's box-tier block tests at the landing's rates
MauroToscano Oct 25, 2026
471d00c
tests: pin the median mix's leaf programs under each query check
MauroToscano Oct 25, 2026
5430703
prover: the leaves check lean by default
MauroToscano Oct 25, 2026
e48de38
tests: pin the median mix's leaf programs over a checked-in ELF
MauroToscano Oct 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
  •  
  •  
  •  
7 changes: 4 additions & 3 deletions .github/workflows/benchmark-pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -64,14 +64,15 @@ env:
# from one real one. Only the headline screen was dropped.
#
# Cycle counts below are for the ELF THIS JOB BUILDS (see "Build ethrex guest ELF"),
# as of main @ 9ccdaf2 with clang 21. They move with guest optimisation (#861 gave the
# guest thin LTO) and ~2% with the clang major on PATH, so a count quoted against a
# as of the guest built with fat LTO and its own memcpy. They move with guest
# optimisation (#861 gave the guest thin LTO, fat LTO and the runtime memcpy took
# another 20 %) and ~2% with the clang major on PATH, so a count quoted against a
# different ELF reads as a regression — always pin the ELF when repeating one.
ELF: executor/program_artifacts/rust/ethrex.elf
# The workload: a real Ethereum block. WHICH block lives in
# the Makefile and nowhere else — nothing in this file names one, so a repoint
# moves this job without editing it. At the current default and pinned ethrex rev that
# is 30,498,818 cycles, 10,659 keccak calls and 116 ecsm calls — several times the work
# is 23,935,913 cycles, 10,659 keccak calls and 116 ecsm calls — several times the work
# of the synthetic block, at a very different keccak:ecrecover mix. That is the whole
# point: a prover change can move the synthetic number and the real one in opposite
# directions. All three figures move with the ethrex rev, so re-measure on a bump
Expand Down
66 changes: 60 additions & 6 deletions .github/workflows/pr_main.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -96,14 +96,20 @@ jobs:
run: |
make compile-programs-asm

# The key hashes every source a Rust guest build reads: the guest crates, the guest
# runtime (syscalls), the crypto crates guests depend on by path (ethrex-crypto for the
# ethrex guest; crypto and math for keccak_transcript_pattern), the target spec and the
# Makefile's recipe. An exact hit skips the compile step below, so a change confined to
# one of them that the key missed would run every test on a stale ELF. The same key
# appears in each job that restores these ELFs.
- name: Cache compiled Rust ELF artifacts and build cache
id: cache-rust-elfs
uses: actions/cache@v4
with:
path: |
executor/program_artifacts/rust
executor/shared_target
key: rust-elf-artifacts-${{ hashFiles('executor/programs/rust/**', 'executor/programs/riscv64im-lambda-vm-elf.json', 'syscalls/**', 'Makefile') }}
key: rust-elf-artifacts-${{ hashFiles('executor/programs/rust/**', 'executor/programs/riscv64im-lambda-vm-elf.json', 'syscalls/**', 'crypto/ethrex-crypto/src/**', 'crypto/ethrex-crypto/Cargo.toml', 'crypto/crypto/src/**', 'crypto/crypto/Cargo.toml', 'crypto/math/src/**', 'crypto/math/Cargo.toml', 'Makefile') }}
restore-keys: |
rust-elf-artifacts-

Expand Down Expand Up @@ -198,10 +204,53 @@ jobs:

# "Test" is a required check — keep this name to avoid branch protection changes.
# This gate job passes only when CLI, executor, disk-spill, and prover tests succeed.
host-kat:
# The device kernels' known-answer gates. `make test-*-host-kat` compiles the
# REAL `.cu` sources as host C++ through
# `crypto/math-cuda/tests/host_kat/cuda_host_shim.h` and runs them against
# external vectors (the official BLAKE3 vectors, miden-crypto's RPO vectors)
# and the committed oracle tables — g++ only, no CUDA, no cargo, seconds. It
# is the only per-PR check on the kernel arithmetic: the GPU parity suites
# (gpu-tests.yml) run on merge_group alone, and until this job existed the
# host-KAT targets lived in no workflow at all. Arithmetic only — nvcc
# acceptance and everything about execution stay with the GPU tests.
name: Host KAT (kernel pins)
runs-on: ubuntu-latest
if: github.event_name != 'push' || github.actor != 'github-merge-queue[bot]'
steps:
- name: Checkout sources
uses: actions/checkout@v4

- name: BLAKE3 host-KAT (7-round and 6-round arms)
run: make test-blake3-host-kat

- name: RPX host-KAT (permutation, leaf sponge, parent, leaf and tree kernels)
run: make test-rpx-host-kat

- name: Column-major LDE engine host-KAT (NTT passes, coset LDE)
run: make test-ntt-cm-host-kat

- name: WHIR host-KAT (fused round fold, lean first rounds)
run: make test-whir-host-kat

- name: GKR host-KAT (layer rounds over an input layer kept without its padding)
run: make test-gkr-host-kat

- name: Round-slot host-KAT (a round's sums reduced by its last block)
run: make test-round-slot-host-kat

# Second source for the TABLES the BLAKE3 host-KAT trusts: upstream
# BLAKE3's portable C with its round loop parameterised, against the
# committed 6-round vectors and the Python oracle. A ~1 s C compile plus a
# few seconds of Python (cc + python3, both on the runner); it too had no
# workflow before this job.
- name: BLAKE3 second-source check of the 6-round tables
run: make test-blake3-second-source

test:
name: Test
if: always()
needs: [test-executor, test-cli, test-prover, test-disk-spill, test-stark-cuda-lib]
needs: [test-executor, test-cli, test-prover, test-disk-spill, test-stark-cuda-lib, host-kat]
runs-on: ubuntu-latest
steps:
- name: Check results
Expand All @@ -211,12 +260,14 @@ jobs:
prover="${{ needs.test-prover.result }}"
disk_spill="${{ needs.test-disk-spill.result }}"
stark_cuda_lib="${{ needs.test-stark-cuda-lib.result }}"
host_kat="${{ needs.host-kat.result }}"

echo "test-executor: $executor"
echo "test-cli: $cli"
echo "test-prover: $prover"
echo "test-disk-spill: $disk_spill"
echo "test-stark-cuda-lib: $stark_cuda_lib"
echo "host-kat: $host_kat"

# Allow "success" or "skipped" (skipped on merge queue pushes)
if [[ "$executor" != "success" && "$executor" != "skipped" ]]; then
Expand All @@ -234,6 +285,9 @@ jobs:
if [[ "$stark_cuda_lib" != "success" && "$stark_cuda_lib" != "skipped" ]]; then
exit 1
fi
if [[ "$host_kat" != "success" && "$host_kat" != "skipped" ]]; then
exit 1
fi

test-disk-spill:
name: Disk-spill tests
Expand Down Expand Up @@ -275,7 +329,7 @@ jobs:
path: |
executor/program_artifacts/rust
executor/shared_target
key: rust-elf-artifacts-${{ hashFiles('executor/programs/rust/**', 'executor/programs/riscv64im-lambda-vm-elf.json', 'syscalls/**', 'Makefile') }}
key: rust-elf-artifacts-${{ hashFiles('executor/programs/rust/**', 'executor/programs/riscv64im-lambda-vm-elf.json', 'syscalls/**', 'crypto/ethrex-crypto/src/**', 'crypto/ethrex-crypto/Cargo.toml', 'crypto/crypto/src/**', 'crypto/crypto/Cargo.toml', 'crypto/math/src/**', 'crypto/math/Cargo.toml', 'Makefile') }}
restore-keys: |
rust-elf-artifacts-

Expand Down Expand Up @@ -391,7 +445,7 @@ jobs:
path: |
executor/program_artifacts/rust
executor/shared_target
key: rust-elf-artifacts-${{ hashFiles('executor/programs/rust/**', 'executor/programs/riscv64im-lambda-vm-elf.json', 'syscalls/**', 'Makefile') }}
key: rust-elf-artifacts-${{ hashFiles('executor/programs/rust/**', 'executor/programs/riscv64im-lambda-vm-elf.json', 'syscalls/**', 'crypto/ethrex-crypto/src/**', 'crypto/ethrex-crypto/Cargo.toml', 'crypto/crypto/src/**', 'crypto/crypto/Cargo.toml', 'crypto/math/src/**', 'crypto/math/Cargo.toml', 'Makefile') }}
restore-keys: |
rust-elf-artifacts-

Expand Down Expand Up @@ -480,7 +534,7 @@ jobs:
path: |
executor/program_artifacts/rust
executor/shared_target
key: rust-elf-artifacts-${{ hashFiles('executor/programs/rust/**', 'executor/programs/riscv64im-lambda-vm-elf.json', 'syscalls/**', 'Makefile') }}
key: rust-elf-artifacts-${{ hashFiles('executor/programs/rust/**', 'executor/programs/riscv64im-lambda-vm-elf.json', 'syscalls/**', 'crypto/ethrex-crypto/src/**', 'crypto/ethrex-crypto/Cargo.toml', 'crypto/crypto/src/**', 'crypto/crypto/Cargo.toml', 'crypto/math/src/**', 'crypto/math/Cargo.toml', 'Makefile') }}
restore-keys: |
rust-elf-artifacts-

Expand Down Expand Up @@ -564,7 +618,7 @@ jobs:
path: |
executor/program_artifacts/rust
executor/shared_target
key: rust-elf-artifacts-${{ hashFiles('executor/programs/rust/**', 'executor/programs/riscv64im-lambda-vm-elf.json', 'syscalls/**', 'Makefile') }}
key: rust-elf-artifacts-${{ hashFiles('executor/programs/rust/**', 'executor/programs/riscv64im-lambda-vm-elf.json', 'syscalls/**', 'crypto/ethrex-crypto/src/**', 'crypto/ethrex-crypto/Cargo.toml', 'crypto/crypto/src/**', 'crypto/crypto/Cargo.toml', 'crypto/math/src/**', 'crypto/math/Cargo.toml', 'Makefile') }}
restore-keys: |
rust-elf-artifacts-

Expand Down
77 changes: 73 additions & 4 deletions Cargo.lock

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

1 change: 1 addition & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ members = [
"crypto/ecsm",
"crypto/math",
"crypto/math-cuda",
"crypto/multilinear",
"bin/cli",
]
# Riscv-only bare-metal crate, path-dependent from crypto/crypto (target-gated),
Expand Down
Loading
Loading