# git-cas v6.5.8 Release Notes

v6.5.8 removes process-per-artifact write amplification for bounded groups of
independent assets and ordered bundles. It adds input-ordered batch APIs and
one-generation workspace retention without changing existing object bytes,
handles, refs, single-write behavior, or stored-data formats.

## Bounded Application Write Waves

`assets.putBatch()` admits a caller-supplied array under explicit active-asset,
planned-object, and aggregate-byte limits. Each asset retains the same store,
chunking, encryption, compression, manifest, and handle semantics as
`assets.put()`. Independent chunk and manifest blobs are submitted in bounded
waves, followed by the manifest trees that depend on them. Results preserve
input order, including repeated content.

`bundles.putOrderedBatch()` validates and preplans a bounded array of the
existing deterministic ordered-bundle graphs. Descriptor blobs are written
together, and tree layers are written bottom-up. The batch is limited by bundle
count, aggregate members, planned object count, and admitted bytes. Serialized
descriptors, fanout topology, tree entries, and returned handles remain
identical to repeated `bundles.putOrdered()` calls.

Scoped staging workspaces mirror both APIs. A successful batch installs one
exact RootSet generation and every returned retention witness names that same
generation. The authoritative ref write remains checked and no-dereference;
concurrent head movement returns the existing conflict instead of being
retried or hidden.

## Session and Compatibility Behavior

On Plumbing 3.3.0, git-cas pipelines blob, tree, and metadata groups through
typed sessions and reuses one `update-ref --stdin` child across successful
checked mutations. A failed update-ref transaction is discarded and closed;
later semantic work may open a fresh session. Adapter closure drains every
owned child.

Existing single methods remain supported. Persistence adapters without the
new optional batch methods retain ordered per-item fallbacks. A blob above the
64 MiB fast-import ceiling deliberately uses the existing one-shot writer
while eligible members remain batched. No unbounded source is collected merely
because its operation participates in a batch.

## Process-Topology Witness

The committed five-sample witness uses the published
`@git-stunts/plumbing@3.3.0` artifact in temporary SHA-1 and SHA-256 bare
repositories. Before-and-after semantic digests match in every sample.

| Operation                    | Git children | Typed interactions | Median wall reduction |
| ---------------------------- | -----------: | -----------------: | --------------------: |
| 16 SHA-1 assets              |      49 -> 2 |           64 -> 19 |               87.137% |
| 16 SHA-256 assets            |      49 -> 2 |           64 -> 19 |               86.673% |
| 16 SHA-1 workspace bundles   |     147 -> 8 |          224 -> 13 |               91.047% |
| 16 SHA-256 workspace bundles |     147 -> 8 |          224 -> 13 |               90.930% |

Process and interaction counts plus semantic identity are the deterministic
acceptance evidence. Wall time and worker CPU are host observations, not
universal speed guarantees. The residual children preserve Git authority for
tree construction, commit identity, ref containment checks, and checked
publication.

## Failure and Reachability

Wrong batch result cardinality rejects the entire semantic batch. Source
failure records its input index and bounded staging evidence, closes admitted
sibling iterators at their next chunk boundary, and never starts later queued
sources. Immutable objects written before a failure may remain unreachable;
no partial result array is presented as success.

Real-Git tests stage asset and bundle batches, prune immediately, verify all
retained content, release the workspace, prune again, and observe released
bundle roots become collectible. SHA-1 and SHA-256 identity tests compare the
complete returned handle sequence against repeated singles.

## Verification

The release candidate passed the repository's complete 14-step verifier with
7,057 observed tests across Node, Bun, and Deno. The matrix includes public
type compatibility, executable examples, 203 real-Git integration tests on
each runtime, build stamping, npm packing, and JSR publication dry-runs.

## Compatibility

This release requires no application or stored-data migration. Applications
may keep every existing single-write call unchanged. Batch adoption is
explicit and additive; custom adapters and older Plumbing implementations keep
their established fallback paths. JSR metadata remains validation-only because
the release workflow publishes npm plus the GitHub Release.
