Skip to content

Make attachment APIs stream-only and bound all byte collection #818

Description

@flyingrobots

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:apiPrimary work area: api.priority:nextNext in line after active work.status:availableOpen and available for prioritization; not blocked or actively in progress.type:bugDefect or incorrect behavior.

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions