# git-cas v6.5.10 Release Notes

v6.5.10 completes bounded compound staging-workspace admission by adding asset
waves and exact selected terminal roots. Applications can stage replay or
provenance payloads, pages, support bundles, descriptors, and one terminal
bundle through a shared persistence scope, then publish one exact workspace
generation without retaining every construction intermediate as a direct root.

## Compound Assets And Exact Roots

`workspace.batch()` now exposes the existing bounded asset-batch contract on
its private scope:

```js
const admitted = await workspace.batch({
  maxOperations: 4,
  operation: async (scope) => {
    const assets = await scope.assets.putBatch({ assets: assetRequests });
    const pages = await scope.pages.putBatch({ pages: pageRequests });
    const leaves = await scope.bundles.putOrderedBatch({
      bundles: leafRequests(assets, pages),
    });
    return (
      await scope.bundles.putOrderedBatch({
        bundles: [rootRequest(leaves)],
      })
    )[0];
  },
  retain: (terminal) => [terminal],
});

admitted.value;
admitted.retention;
```

Asset, page, and bundle calls serialize by invocation order and share the
operation-owned persistence scope. Every call retains its ordinary count,
object, member, and byte limits. Asset writes preserve the same chunking,
compression, encryption, manifest, and handle semantics as the public
`assets.putBatch()` method.

The optional `retain(value)` callback executes synchronously after the bounded
operation succeeds. It must return a nonempty array of canonical handles staged
by that exact admission. Input count cannot exceed the staged-artifact ledger;
repeated handles deduplicate in stable order. Malformed, asynchronous, empty,
oversized, lookalike, and valid-but-unstaged selections fail before the
workspace ref moves. Omitting the selector preserves v6.5.9 retain-all
behavior.

Exact selection affects only newly staged direct roots. Every root retained
before the compound call remains in the next generation. A selected terminal
bundle continues to retain its referenced pages, assets, and nested bundles
transitively through ordinary Git tree edges.

## Failure And Reachability

An asset failure poisons queued dependent work, publishes no compound
generation, and exposes no admitted callback result. A selector refusal also
leaves the prior generation unchanged. Immutable objects written before a
refusal may remain unreachable until normal Git maintenance reclaims them; the
selector is not a cross-ref transaction.

Real-Git integration tests cover fresh SHA-1 and SHA-256 repositories. They
prove one checked workspace update, closed scoped sessions, selected-root
readback after immediate prune, preservation of prior roots, reclamation after
workspace release, and no-generation refusal behavior.

## Downstream Process Witness

A controlled git-warp prototype compared a 65-node, 65-patch materialization
plus a five-patch suffix using public v6.5.9 as the control and this exact API
as a local prototype. Each scenario used one warmup and three measured runs.

| Scenario    | Git commands | Median CPU ms | Median wall ms |
| ----------- | -----------: | ------------: | -------------: |
| Cold before |          139 |       545.476 |      2,822.893 |
| Cold after  |           50 |       322.103 |      1,328.603 |
| Incr before |          149 |       555.478 |      3,039.536 |
| Incr after  |           60 |       320.050 |      1,387.245 |
| Warm before |           25 |       166.882 |        548.191 |
| Warm after  |           25 |       176.325 |        622.956 |

Cold writes fell from 139 to 50 Git commands: 64.029% fewer commands, 40.950%
less Node CPU, and 52.935% less wall time. Incremental writes fell from 149 to
60 commands: 59.732% fewer commands, 42.383% less Node CPU, and 54.360% less
wall time. Semantic fingerprints, node/edge/property counts, cache posture, and
replay counts matched. The warm read path materializes no writes and retained
its exact 25-command topology; elapsed variation there is host noise, not a
claimed regression or gain.

These downstream measurements are deliberately provisional until git-warp
installs the public v6.5.10 registry artifact and repeats the same corpus. The
deterministic contract is the equal semantic result and reduced command
topology, not a universal timing promise.

## Verification

Implementation review #128 merged normally as
`57cd300294a94660d2afb644c653a3be78c15d53`; its exact reviewed head is
`6714750620aa2310ad0279f957414be65898a66a`. Exact implementation checkpoint
`e663754bf221784f0e5856a41fe071bebfa5befb` passed all 14 release-verifier
stages with 7,186 observed tests across Node, Bun, Deno, public types,
executable examples, real-Git integrations, build stamping, npm packing, and a
JSR publication dry-run. Exact versioned candidate
`2a5be40c718e8069fb466af1be265357d8cb7ce0` then passed the same 14-stage
method with 7,192 observed tests: 2,194 Node, 2,193 Bun, 2,184 Deno, and 207
integration tests in each runtime. No tag, npm artifact, or GitHub Release is
claimed by this candidate.

## Compatibility

This release is additive and requires no application or stored-data migration.
It makes no stored object, handle, descriptor, ref layout, or reader change.
Existing repositories and workspace refs open in place; existing callers may
keep retain-all compound behavior by omitting `retain`. Custom asset services
that do not implement the scoped persistence hook remain compatible for page-
and bundle-only compound calls and reject only if the new asset scope is used.
