# git-cas v6.5.4 Release Notes

v6.5.4 adds ordered page-batch retention to scoped staging workspaces. It lets
applications write a bounded page group and retain the complete group under one
exact workspace generation instead of rewriting a growing root set for every
page.

## Batched Workspace Pages

`workspace.pages.putBatch()` accepts the existing page-batch count and byte
limits, delegates page creation to the bounded page service, and installs the
resulting handles in one compare-and-swap workspace update. Returned pages stay
in input order and each carries an exact retained witness for the shared
generation.

Repeated content still produces one result per input position while the
workspace target set deduplicates the content handle. An oversized batch fails
before workspace-ref mutation, and a failed generation installation returns no
retained batch.

## Measured Effect

A disposable bare repository staged 8,188 deterministic tiny pages in 32
batches of at most 256 pages. It completed in 15.546 seconds, installed 8,188
page objects under the expected generation chain, and left no garbage reported
by Git.

The motivating pre-change git-warp rehearsal had retained only 5,213 of the
same 8,188-page cardinality after 75 minutes while producing about 1.16 GiB of
loose scratch objects. These measurements establish the removed quadratic
root-set rewrite at that workload; they are local evidence, not a
cross-platform timing guarantee. The benchmark used synthetic tiny pages,
contained no Think data, and added no large fixture to this repository.

## Verification

The versioned candidate passed 2,086 Node unit tests, 2,085 Bun unit tests,
2,076 Deno unit tests, and 199 real-Git integration tests on each runtime. The
full release verifier passed all 14 steps with 6,844 observed tests, including
public type compatibility, examples, build stamping, and npm and JSR dry-runs.

## Compatibility

This release is API-additive and requires no application or stored-data
migration. Existing `workspace.pages.put()` calls, handles, object identities,
workspace refs, witnesses, retention semantics, limits, release behavior, and
pruning behavior are unchanged. Callers opt into batching explicitly.
