Plan: https://github.com/git-stunts/git-warp/blob/plan/streaming-recursive-materialization/docs/plans/streaming-indexed-recursive-warp.md
Design PR: #813
Problem
Node and edge content APIs can collect complete assets into Uint8Array, while large binary values can also enter through inline PropValue. The git-cas asset boundary is streaming, but eager callers discard that safety and can exhaust memory for videos or other large attachments.
Outcome
- Public and internal attachment APIs return handles, metadata, or streams.
- Remove eager complete-content methods from the v20 surface.
- Require an explicit maximum for any convenience collector outside the core API.
- Reject large inline binary values and direct callers to asset handles.
- Audit every production
collectAsyncIterable() at asset, attachment, storage, proof, and migration boundaries.
- Preserve backpressure, cancellation, declared size validation, and streaming encryption frames.
Acceptance
Plan: https://github.com/git-stunts/git-warp/blob/plan/streaming-recursive-materialization/docs/plans/streaming-indexed-recursive-warp.md
Design PR: #813
Problem
Node and edge content APIs can collect complete assets into
Uint8Array, while large binary values can also enter through inlinePropValue. The git-cas asset boundary is streaming, but eager callers discard that safety and can exhaust memory for videos or other large attachments.Outcome
collectAsyncIterable()at asset, attachment, storage, proof, and migration boundaries.Acceptance