Changelog
0.5.0 — 2026-09-16
Coordinated release: Joy 0.5.0, with Trident 0.3.0/compiler API 3, Zheng 0.4.0 and Trisha 0.3.0. Validation receipts accompany the release archives.
- Bind canonical nox program, complete public input/output and selected-path
cost to the verifier-derived Zheng execution relation.
JOYEXEC2discloses its complete witness and checks every constraint; it claims no zero knowledge or succinct verification. - Use Trisha's pinned Triton 7 randomized STARK for private execution:
joy-nox-ccs-triton7-zk-v3/JOYZK003. Regenerate older private proofs; acceptance cannot downgrade to a legacy statement or a different checker. - Authenticate every public-state lookup and all root coordinates in
JOYST001. Private queries hide coordinates inside the same proved relation over all ten bounded public state tables. The database remains public. - Preserve source/project/target/profile identity through
build, versioned JSON results and atomic artifact output. Respect target overrides, imported helpers, selected-path budgets and inactive branch semantics. - Enforce the compiled entry signature inside the proved computation, including flat aggregate layout, exact public arity and Bool/U32 ranges. Prove the actual selected terminal branch and bounded loop return through both proof formats.
- Keep legacy trace statements behind explicit inspection opt-in. Those statements do not prove execution or public output. Refuse unsupported dynamic continuations/shapes, recursive legacy openings and live deployment.
- Distribute the coordinated locked source closure with installed CPU smoke coverage. State commitment v2 and opening v3 require regenerated BBG certificates and proofs. See validation.
0.3.0 — 2026-09-09
- zheng 0.3.1: one universal step CCS for every Layer-1 row, bindings in a single second accumulator — any program is ≤ 2 accumulator groups, and every proof byte on the wire is verifier-read. Artifacts: (a+b)·a 1.3 KB, two divine() secrets 1.4 KB, one hash 2.4 KB, a depth-32 Merkle path 2.6 KB (0.2.2: 2.67 MB). Proof bytes alone: 1.1 / 1.2 / 2.2 / 2.2 KB.
- the assembly travels deflated (
meta.assembly_deflate, ~6x smaller);ArtifactMeta::assembly_text()serves either form; 0.2.x plain-text artifacts still load, 0.2.x proofs do not verify (format change). group_count(); tamper tests onuniversal/binding.
0.2.2 — 2026-09-08
- artifacts are compact binary (
<name>.zheng, postcard) instead of JSON: add.tri 19.6 KB → 5.4 KB, two secrets 74 KB → 20 KB, a hash 189 KB → 52 KB. 0.2.1 JSON artifacts still load. - the prover's folded witness is no longer on the wire (zheng 0.2.1
serde(skip)): it was the prover's private folded state — for divine() programs, the secrets' image — and the verifier never read it. - what remains is ~1.7 KiB per accumulator group, one group per CCS structure (3 / 12 / 23 above); collapsing groups toward a 2–5 KB program-level proof is zheng#8.
0.2.0 — 2026-09-08
- hash blocks prove: HashAux (sponge rate = cached structural digest of the hashed input) built inside the traced worker; hash.tri fixture (trident hash builtin) proves in ~660 ms debug, ~189 KB artifact, verifies in ~140 ms; tampered artifacts reject.
- look proving against a real BbgState via
Warrior::prove_zheng_with_state: looks answer from the state and record Brakedown openings, the statement carriesstate.root()as the public root. Cross-repo e2e lives here (joy sits above zheng and bbg): hand-built .nox look program (trident cannot express a state read yet — follow-up noted), prove -> verify PASS; stale root refuses at prove; re-rooted and group-tampered artifacts reject. - CLI
--stateon prove: honest error — bbg has no whole-state file format yet; the library path is wired. joy prove— execute via nox with the tracer, fold the trace with zheng (SuperSpartan + Brakedown + HyperNova accumulators), write a<name>.zhengartifact: statement + proof + metadata. Statement binds the program (hemera of the assembly), the first/last trace rows (input/output hashes), the budget (focus bound); bbg_root is the zero sentinel (stateless programs).joy verify --proof— zheng verification, no re-execution. Rejects proofs for a different bundle, tampered proofs, malformed artifacts, foreign formats. Output names the mode: "PASS (zheng proof)" vs "PASS (re-execution)".- add.tri fixture chain measured (debug build): prove ~285 ms for 10 reductions, artifact ~44 KB, verify ~90 ms.
reads_statefollows trident's additive ProgramBundle field (compat fix; joy does not yet cons the live root per the flag).
0.1.0 — 2026-09-07
M3 of the soft3 release: joy is born.
joy run— execute ProgramBundles (or .tri sources, or raw .nox formulas) on the nox VM viareduce()with a trace; public inputs bind as the subject, secret inputs feed call patterns.joy verify --claim— verification by re-execution.joy prove— honest dash: exits 1 until the zheng prover (M4).- Warrior implements trident's Runner/Prover/Verifier/Deployer traits; the non-Runner paths answer honestly with their milestone.