we_are_legion posted a short merge batch in the R&D channel on June 18, linking four vprogs pull requests: the broad settlement integration branch, the batch-aggregator split, an SMT tombstone fix, and the proving-pipeline settlement wiring. (source) (source) (source) (source) (source)
The largest frame is PR #36. It collects the settlement covenant, ZK proving pipeline, transaction, batch and aggregation provers, supporting SMT and core changes, and L1 bridge plumbing into one integration branch. The stated scope is large: 237 files changed, roughly 24,500 insertions, mostly around the ZK backend, ABI, provers, L1 bridge, simulator, and covenant settlement path. (PR #36)
The more readable story sits across PR #72 and PR #80. PR #72 splits the old monolithic batch verifier into two composable RISC Zero guests: a per-batch processor and a bundle-level aggregator. Each batch can be proven independently, then the aggregator composes those batch receipts into one settlement proof. The split introduces a batch_image_id, pins it on-chain, and preserves the trust boundary by making every image id used in verification appear in the committed journal path. (PR #72)
PR #80 then connects the pieces into a pipeline. The framework follows the chain, executes transactions, proves transaction to batch to bundle, and emits bundle outcomes to a separate settlement worker. The worker drains those outcomes, builds settlements, submits them to L1, and confirms the continuation UTXO. (PR #80)
That division matters. The proving path should not decide submission policy. PR #80 keeps the provers inside the pipeline while settlement happens through a separate worker, so proof generation and L1 submission are related but not fused into one opaque block of code. (PR #80)
The merge also adds a fork-aware proof-receipt store. Receipts are keyed by semantic proving coordinates and include block_hash, so a reorg cannot serve a stale receipt as if it still belonged to the active chain. Keys share a checkpoint_index prefix, allowing one prefix scan to prune every receipt for a checkpoint across image ids and block hashes. (PR #80)
The simulation side is not decoration. PR #80 adds a seeded L2 simulation using simpa and TestConsensus, with an L2 miner, network model, and driver for the execute, prove, settle loop. It also updates the tn10-flow reference binary with real-proof settlement mode, hardened failure paths, and mass-based L1 fee pricing. (PR #80)
There is also a state-correctness fix hiding in the same merge batch. PR #79 fixes an SMT deletion bug where deleting a leaf could leave its position untombstoned, letting later latest <= version reads fall back to stale pre-deletion state. Under the wrong tree shape, a deleted resource could silently reappear with its old value. The fix writes an Empty tombstone at the emptied position and adds regression tests for the internal-sibling case that previously slipped through. (source) (PR #79)
The boundaries are still explicit. PR #80 lists known follow-ups: batch-prover rollback remains a no-op stub, an already-submitted settlement is not recalled on reorg, and the node/vm plus node/cli path remains stubbed while the live stack is driven through zk/* and examples/tn10-flow. (PR #80)
That is the right shape for this article: not "vprogs is production-ready", not "L2s are solved", and not a victory lap. The update is narrower and more useful. The post-Toccata proving stack now has merged code connecting execution, per-batch proofs, aggregation, settlement handoff, receipt storage, reorg-aware simulation, and L1 settlement tests into one reviewable path. (source) (PR #80)
All sources link to public messages in the Kaspa Core R&D (public) Telegram channel.
