---
title: "Unsound recursion and aggregation boundaries"
description: "Each layer is individually correct but their composition is not: a value committed in the inner proof is left unconstrained on an early-halt path, or the…"
type: "failure-mode"
url: "https://zkpick.com/audit/failure-modes/unsound-recursion-and-aggregation-boundaries/"
section: "03 Auditing a ZK protocol"
authors:
  - "MarketComp"
publisher: "MarketComp"
version: "1.3"
updated: "2026-09-12"
license: "CC-BY-4.0"
json: "https://zkpick.com/data/audit/failure-modes/unsound-recursion-and-aggregation-boundaries.json"
---

*By MarketComp. Updated 2026-09-12. Version 1.3. CC BY 4.0.*

# Unsound recursion and aggregation boundaries

Each layer is individually correct but their composition is not: a value committed in the inner proof is left unconstrained on an early-halt path, or the outer layer fails to check that the inner execution actually terminated. Publicly disclosed zkVM forgeries have come from exactly this pattern — two individually minor gaps at a recursion boundary combining into universal proof forgery.

**Mitigation:** Treat every recursion and aggregation boundary as its own review target with its own written contract: what the inner proof guarantees, what the outer layer must independently re-check, and what happens on abnormal termination. Do not assume a boundary is covered because both sides were reviewed.
