Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
66 commits
Select commit Hold shift + click to select a range
7d3ad39
docs(specs): specify one NARG transcript for Jolt and Akita
markosg04 Oct 1, 2026
ecac95d
feat(field)!: own checked decoding in a CanonicalDecode codec trait
markosg04 Oct 1, 2026
d94a549
feat(transcript): add the NARG prover/verifier channel
markosg04 Oct 1, 2026
df2b393
refactor(crypto)!: encode group elements as canonical transcript atoms
markosg04 Oct 1, 2026
26e352b
feat(transcript): derive small-challenge vectors and challenge powers
markosg04 Oct 1, 2026
43aa1b4
feat(transcript): re-export the spongefish sponges it implements
markosg04 Oct 1, 2026
b8e1ac0
refactor(openings)!: run PCS openings on the NARG transcript
markosg04 Oct 1, 2026
3f9d45f
refactor(dory)!: run Dory openings inside the NARG transcript
markosg04 Oct 1, 2026
3ffb55a
refactor(sumcheck)!: send and read sumcheck rounds through the NARG t…
markosg04 Oct 1, 2026
a1a5893
refactor(blindfold)!: write BlindFold proofs into the NARG transcript
markosg04 Oct 1, 2026
9b9fd9e
test(sumcheck): port the sumcheck suite to the NARG transcript
markosg04 Oct 1, 2026
0136ab6
test(blindfold): port the BlindFold suite to the NARG transcript
markosg04 Oct 1, 2026
bab5c10
refactor(verifier)!: verify Jolt proofs as NARG argument strings
markosg04 Oct 1, 2026
b9a8aec
refactor(prover)!: write Jolt proofs as NARG argument strings
markosg04 Oct 1, 2026
de6051c
test(prover): verify the driver, engine, and ZK suites from the argum…
markosg04 Oct 1, 2026
1e80b72
refactor(sdk)!: select the proof sponge instead of a transcript
markosg04 Oct 1, 2026
2c959da
test(kernels): verify the naive kernel twin from the argument string
markosg04 Oct 1, 2026
b23f0f3
docs(spec): record the as-built NARG transcript design
markosg04 Oct 1, 2026
585e5d6
test(prover): verify field-inline stage tests with the production ver…
markosg04 Oct 1, 2026
b1fb4b9
test(transcript): pin per-sponge known answers and port the bench and…
markosg04 Oct 1, 2026
09f76b1
refactor(akita)!: open Akita inside the Jolt transcript
markosg04 Oct 1, 2026
7ddfb66
refactor(verifier)!: tag protocol regions with transcript sites
markosg04 Oct 1, 2026
c9c1d19
test(fuzz): fuzz sumcheck and Dory verifiers over argument strings
markosg04 Oct 1, 2026
9a78cb3
test(prover): prove and verify end to end on a swapped sponge
markosg04 Oct 1, 2026
a20a3a9
test(verifier): census transcript messages, absorbs, challenges, and …
markosg04 Oct 1, 2026
f4c7833
test(verifier): port the verifier unit tests to the NARG transcript
markosg04 Oct 1, 2026
2f24ffa
test(verifier): port fixtures, completeness, and verifier fuzzers to …
markosg04 Oct 1, 2026
a35dad2
test(verifier): replay frozen challenges through an audit sponge
markosg04 Oct 1, 2026
91c57ab
test(verifier): sweep every argument-string message against its rejec…
markosg04 Oct 1, 2026
a87a2d3
refactor(transcript)!: delete the legacy symmetric transcript facade
markosg04 Oct 1, 2026
7af887e
feat(verifier): decode a proof's header without verifying it
markosg04 Oct 1, 2026
bff39da
refactor(verifier)!: drop the per-stage wire claim aggregates
markosg04 Oct 1, 2026
663291f
build(deps): refresh the standalone fuzz and consumer lockfiles
markosg04 Oct 1, 2026
99c3d11
docs(spec): specify typed, declared proof messages
markosg04 Oct 5, 2026
841e7a3
feat(claims): map claims structs cell by cell
markosg04 Oct 5, 2026
6886b82
refactor(verifier)!: derive claim wire shapes from the output points
markosg04 Oct 5, 2026
3421852
docs(spec): run jolt-transcript on spongefish's NARG state
markosg04 Oct 5, 2026
d3264f8
feat(field)!: make transcript atoms spongefish codecs
markosg04 Oct 5, 2026
c93d6f0
refactor(transcript)!: run on spongefish's prover and verifier state
markosg04 Oct 5, 2026
27267cd
build(deps): pin akita to the transcript-unification branch
markosg04 Oct 5, 2026
08606da
Merge origin/main into refactor/transcript-unification
markosg04 Oct 7, 2026
a7bd787
fix(transcript)!: squeeze only the uniform low half of each Poseidon …
markosg04 Oct 7, 2026
bc1da02
fix(transcript): bind returned bytes to the sponge and harden nonce r…
markosg04 Oct 7, 2026
d9d3030
fix(verifier)!: send the proof header's widths as one message
markosg04 Oct 7, 2026
5aed5f6
fix(crypto): accept only the canonical encoding of the identity
markosg04 Oct 7, 2026
2fc2b2d
refactor(blindfold): own every BlindFold message group in wire.rs
markosg04 Oct 7, 2026
537cd15
test(verifier): leave seeded forks untaped in the Fiat-Shamir audit s…
markosg04 Oct 7, 2026
af1534e
refactor(sdk)!: choose the proof sponge once, in jolt-verifier
markosg04 Oct 7, 2026
25482b6
ci: check every standalone workspace for spongefish's yolocrypto
markosg04 Oct 7, 2026
9d2eb0f
docs: make specs and comments state what the transcript code does
markosg04 Oct 7, 2026
e8c2f20
build(deps): pin akita to the transcript-unification branch
markosg04 Oct 7, 2026
1ade6a6
style(transcript): format the small-challenge log calls
markosg04 Oct 7, 2026
4ff055f
build(deps): pin akita to its updated head
markosg04 Oct 7, 2026
8e63f66
fix(dory): report a proof that ends inside the parse-ahead as truncated
markosg04 Oct 7, 2026
70c1d37
fix: build the verifier fuzzer and WASM verifier, and drop unused dep…
markosg04 Oct 7, 2026
71dba66
style: import the types this branch names by path
markosg04 Oct 7, 2026
31103b0
test(fuzz): regenerate the verifier fuzz fixtures
markosg04 Oct 7, 2026
f35d21e
fix(transcript): bind exact-challenge squeeze width on width-forgetti…
markosg04 Oct 13, 2026
483438d
feat(transcript): record accepted fork draws in the event log
markosg04 Oct 13, 2026
836bb2c
perf(transcript): squeeze word-sized remainders in one call
markosg04 Oct 13, 2026
1ca583d
test(verifier): treat fork-draw events as rangeless in the coverage c…
markosg04 Oct 13, 2026
f15e9b1
Merge origin/main into refactor/transcript-unification
markosg04 Oct 19, 2026
c50a28d
build(deps): pin akita to the transcript-unification head
markosg04 Oct 19, 2026
cce07dc
test(tracer): import CanonicalDecode for the field-inline codec round…
markosg04 Oct 19, 2026
ef1c105
Merge origin/main into refactor/transcript-unification
markosg04 Oct 19, 2026
aa5a8d6
Merge origin/main into refactor/transcript-unification
markosg04 Oct 19, 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
  •  
  •  
  •  
9 changes: 4 additions & 5 deletions .github/workflows/fs-soundness.yml
Original file line number Diff line number Diff line change
Expand Up @@ -58,13 +58,12 @@ jobs:
cargo nextest run
-p jolt-verifier
--test fs_obligations
--features fs-audit
--cargo-quiet
- name: Probe Akita ZK support
shell: bash
run: |
set -euo pipefail
if cargo check -p jolt-verifier --lib --features akita,fs-audit,zk 2>akita-zk.log; then
if cargo check -p jolt-verifier --lib --features akita,zk 2>akita-zk.log; then
echo "Akita+ZK now builds; add it to the Fiat-Shamir fixture matrix."
exit 1
fi
Expand All @@ -78,11 +77,11 @@ jobs:
matrix:
include:
- instance: dory-clear
features: fs-audit,prover-fixtures
features: logging,prover-fixtures
- instance: dory-zk
features: fs-audit,prover-fixtures,zk
features: logging,prover-fixtures,zk
- instance: akita-clear
features: akita,fs-audit,prover-fixtures
features: akita,logging,prover-fixtures
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- uses: actions-rust-lang/setup-rust-toolchain@ecabd13d1c56bd1345c230e542e9144811ad706f # v2
Expand Down
48 changes: 26 additions & 22 deletions .github/workflows/rust.yml
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,8 @@ jobs:
run: scripts/check-shared-field-identity.sh
- name: Keep Metal out of the verifier
run: scripts/check-metal-isolation.sh
- name: Keep spongefish's sponge state private (no yolocrypto)
run: scripts/check-no-yolocrypto.sh
- name: Check no backend
run: cargo check -p jolt-field --no-default-features
- name: Check BN254 backend
Expand Down Expand Up @@ -104,18 +106,19 @@ jobs:
# jolt-verifier's prover-fixtures feature gates live prover artifact
# generation for verifier tests. It is not enabled by the workspace-wide
# invocations above, so build it explicitly in both modes.
- name: cargo clippy -p jolt-verifier --features prover-fixtures
run: cargo clippy -p jolt-verifier --all-targets --features prover-fixtures
- name: cargo clippy -p jolt-verifier --features prover-fixtures,zk
run: cargo clippy -p jolt-verifier --all-targets --features prover-fixtures,zk
- name: cargo clippy -p jolt-verifier --features prover-fixtures,logging
run: cargo clippy -p jolt-verifier --all-targets --features prover-fixtures,logging
- name: cargo clippy -p jolt-verifier --features prover-fixtures,zk,logging
run: cargo clippy -p jolt-verifier --all-targets --features prover-fixtures,zk,logging
# The akita feature selects the lattice (Akita) PIOP; it is not enabled
# by the workspace-wide invocations above.
- name: cargo clippy -p jolt-verifier --features akita
run: cargo clippy -p jolt-verifier --all-targets --features akita
# The akita fixture-driven tamper suite compiles under akita,prover-fixtures
# (the real Akita prover generates its fixtures). Lint it explicitly.
- name: cargo clippy -p jolt-verifier --features akita,prover-fixtures
run: cargo clippy -p jolt-verifier --all-targets --features akita,prover-fixtures
# (the real Akita prover generates its fixtures) with `logging`, whose
# transcript event log locates each rejection. Lint it explicitly.
- name: cargo clippy -p jolt-verifier --features akita,prover-fixtures,logging
run: cargo clippy -p jolt-verifier --all-targets --features akita,prover-fixtures,logging
# The modular prover's Akita path: lint alone and with
# prover-fixtures so the acceptance suites keep compiling.
- name: cargo clippy -p jolt-prover --features akita
Expand Down Expand Up @@ -180,14 +183,14 @@ jobs:
run: cargo clippy -p jolt-prover --all-targets --features prover-fixtures,field-inline
- name: cargo clippy -p jolt-prover --features prover-fixtures,field-inline,zk
run: cargo clippy -p jolt-prover --all-targets --features prover-fixtures,field-inline,zk
- name: cargo clippy -p jolt-verifier --features prover-fixtures,field-inline
run: cargo clippy -p jolt-verifier --all-targets --features prover-fixtures,field-inline
- name: cargo clippy -p jolt-verifier --features prover-fixtures,field-inline,logging
run: cargo clippy -p jolt-verifier --all-targets --features prover-fixtures,field-inline,logging
# The Akita field-inline combination: the full-width increment group rides the
# dense-group heterogeneous batch beside advice.
- name: cargo clippy -p jolt-verifier --features field-inline,akita
run: cargo clippy -p jolt-verifier --all-targets --features field-inline,akita
- name: cargo clippy -p jolt-verifier --features prover-fixtures,field-inline,akita
run: cargo clippy -p jolt-verifier --all-targets --features prover-fixtures,field-inline,akita
- name: cargo clippy -p jolt-verifier --features prover-fixtures,field-inline,akita,logging
run: cargo clippy -p jolt-verifier --all-targets --features prover-fixtures,field-inline,akita,logging
- name: cargo clippy -p jolt-prover --features prover-fixtures,field-inline,akita
run: cargo clippy -p jolt-prover --all-targets --features prover-fixtures,field-inline,akita
- name: cargo clippy -p jolt-sdk --features host,field-inline
Expand Down Expand Up @@ -383,7 +386,7 @@ jobs:
# step existed they were clippy-only, so the golden BlindFold shape pins
# in completeness/zk.rs could go stale without any lane noticing.
- name: Run jolt-verifier fixtures with zk feature
run: cargo nextest run --cargo-profile ci -p jolt-verifier --features prover-fixtures,zk --test-threads 1 --cargo-quiet
run: cargo nextest run --cargo-profile ci -p jolt-verifier --features prover-fixtures,zk,logging --test-threads 1 --cargo-quiet
# The jolt-kernels unit suite in its zk flavor.
- name: Run jolt-kernels tests with zk feature
run: cargo nextest run --cargo-profile ci -p jolt-kernels --features zk
Expand Down Expand Up @@ -536,7 +539,7 @@ jobs:
run: >-
cargo nextest run --cargo-profile ci -p jolt-akita --features field-inline
- name: Run jolt-verifier with prover-fixtures,field-inline,akita
run: cargo nextest run --cargo-profile ci -p jolt-verifier --features prover-fixtures,field-inline,akita --test-threads 1
run: cargo nextest run --cargo-profile ci -p jolt-verifier --features prover-fixtures,field-inline,akita,logging --test-threads 1

test-verifier-field-inline-fixtures:
runs-on: ubuntu-latest
Expand Down Expand Up @@ -571,11 +574,11 @@ jobs:
with:
tool: nextest
# The fixture-driven field-inline suites: valid-fixture acceptance
# (completeness/field_inline.rs) and the typed field-inline clear-claim tamper
# sweep (tampering/field_inline.rs), backed by fixtures the modular
# prover generates at test time.
# (completeness/field_inline.rs) and the argument-string tamper sweep
# (soundness/dory.rs, `logging` for its event log), backed by fixtures
# the modular prover generates at test time.
- name: Run jolt-verifier field-inline fixture and tamper suites
run: cargo nextest run --cargo-profile ci -p jolt-verifier --features prover-fixtures,field-inline --test-threads 1
run: cargo nextest run --cargo-profile ci -p jolt-verifier --features prover-fixtures,field-inline,logging --test-threads 1

test-verifier-akita-fixtures:
runs-on: ubuntu-latest
Expand Down Expand Up @@ -610,11 +613,12 @@ jobs:
with:
tool: nextest
# The fixture-driven akita suites: valid-fixture acceptance
# (completeness/akita.rs) and the typed clear-claim, commitment-byte,
# proof-shape, and presence tamper sweeps (tampering/akita.rs), backed
# by fixtures the real Akita prover generates at test time.
# (completeness/akita.rs) and the argument-string message, structural,
# and statement tamper sweeps (soundness/akita.rs, `logging` for their
# event log), backed by fixtures the real Akita prover generates at
# test time.
- name: Run jolt-verifier akita fixture and tamper suites
run: cargo nextest run --cargo-profile ci -p jolt-verifier --features akita,prover-fixtures --test-threads 1
run: cargo nextest run --cargo-profile ci -p jolt-verifier --features akita,prover-fixtures,logging --test-threads 1

typos:
runs-on: ubuntu-latest
Expand Down Expand Up @@ -850,7 +854,7 @@ jobs:
with:
tool: nextest
- name: Run verifier fixtures
run: cargo nextest run --cargo-profile ci -p jolt-verifier --features prover-fixtures --test-threads 1 --cargo-quiet
run: cargo nextest run --cargo-profile ci -p jolt-verifier --features prover-fixtures,logging --test-threads 1 --cargo-quiet

test-inlines:
name: Test inlines
Expand Down
6 changes: 4 additions & 2 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -122,12 +122,14 @@ The SDK's `host` feature enables native build/prove APIs. On `jolt-prover`, `aki
### Key Type Parameters

The staged prover and verifier are generic over the PCS, vector commitment,
and transcript. Dory uses `Fr`; the `akita` build uses `AkitaField`.
and the transcript's sponge. Dory uses `Fr`; the `akita` build uses
`AkitaField`. Proofs are argument strings written through
`jolt_transcript::ProverTranscript<H>` and read through `VerifierTranscript<'_, H>`.

```
PCS: CommitmentScheme
VC: VectorCommitment<Field = PCS::Field>
T: Transcript<Challenge = PCS::Field>
H: Sponge
```

### Prover Pipeline
Expand Down
Loading
Loading