Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 7 additions & 5 deletions ARCHITECTURE.md
Original file line number Diff line number Diff line change
Expand Up @@ -185,11 +185,13 @@ The facade is orchestration glue. It is not the storage engine itself.
- **`StagingWorkspaceRegistry` and `StagingWorkspace`** — own renewable
temporary RootSet generations for multi-step application construction.
`WorkspaceCompoundAdmission` and `WorkspaceCompoundScope` serialize an
explicitly bounded sequence of provisional page and bundle batches through
one operation-owned persistence view, then install the union of prior and new
targets in one exact generation. Existing workspace methods retain each
result independently and remain the boundary when a handle leaves private
construction code before later writes begin.
explicitly bounded sequence of provisional asset, page, and bundle batches
through one operation-owned persistence view. Compound calls retain all new
targets by default or canonically validate an exact nonempty selection of
handles staged by that call, then install those selected roots together with
every prior workspace target in one exact generation. Existing workspace
methods retain each result independently and remain the boundary when a
handle leaves private construction code before later writes begin.

- **`RetentionService` and `PublicationService`** — validate complete handle
graphs, then either retain them in a RootSet with generation-scoped evidence
Expand Down
7 changes: 6 additions & 1 deletion BEARING.md
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,12 @@ These were the active tensions from the previous bearing. All resolved.
## Next Horizon

With v6.5.9 shipped, active work is tracked in GitHub Issues and Milestones.
Repo docs hold design and evidence records, not the active queue.
Repo docs hold design and evidence records, not the active queue. The immediate
v6.5.10 goalpost completes compound admission with bounded asset waves and
exact newly staged terminal-root selection:

- [#127](https://github.com/git-stunts/git-cas/issues/127)
- [0061-compound-workspace-assets](./docs/design/0061-compound-workspace-assets/compound-workspace-assets.md)

The completed release design is
[0060-compound-workspace-admission](./docs/design/0060-compound-workspace-admission/compound-workspace-admission.md).
Expand Down
22 changes: 22 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,28 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

### Added

- **Compound asset admission and exact terminal roots** -
`workspace.batch()` now exposes bounded `scope.assets.putBatch()` alongside
page and ordered-bundle waves. An optional synchronous `retain(value)`
selector can retain a nonempty, canonical, deduplicated subset of handles
staged by that exact call while preserving every prior workspace root.
Malformed, asynchronous, empty, oversized, lookalike, and
valid-but-unstaged selections fail before ref movement. Omitting the selector
preserves v6.5.9 retain-all behavior.

### Performance

- **One admission for payload-to-terminal graphs** - replay and provenance
assets can share the compound persistence scope and final workspace
installation with their support bundles, descriptor, and terminal bundle.
In the downstream controlled 65-node/65-patch git-warp prototype, cold Git
commands fell from 139 to 50 and median wall time from 2.823 s to 1.329 s;
incremental commands fell from 149 to 60 and median wall time from 3.040 s to
1.387 s. Semantic fingerprints, cache posture, replay counts, storage
formats, handles, and the 25-command warm read path remained unchanged.

## [6.5.9] — 2026-08-24

### Added
Expand Down
19 changes: 12 additions & 7 deletions GUIDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -207,25 +207,30 @@ intermediate handles inside one compound staging-workspace operation:

```js
const admitted = await workspace.batch({
maxOperations: 3,
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(pages),
bundles: leafRequests(assets, pages),
});
return (await scope.bundles.putOrderedBatch({
bundles: [rootRequest(leaves)],
}))[0];
},
retain: (terminal) => [terminal],
});
```

`admitted.value` becomes caller-visible only with `admitted.retention`, after
one exact workspace generation anchors every staged handle. The default
operation ceiling is 64 and the hard ceiling is 1,024; each scope call also
preserves its ordinary page or bundle batch bounds. Use the existing
independently retained workspace methods when intermediate handles must leave
the private callback.
one exact workspace generation anchors the selected terminal plus every root
retained before the compound call. Omit `retain` to preserve the retain-all
behavior. A selector must synchronously return at least one canonical handle
staged by that exact callback; it cannot import another operation's handle or
remove a prior workspace root. The default operation ceiling is 64 and the hard
ceiling is 1,024; each scope call also preserves its ordinary asset, page, or
bundle batch bounds. Use the existing independently retained workspace methods
when intermediate handles must leave the private callback.

Repeated `pages.get()` calls reuse immutable payload reads within the store's
bounded page cache. The defaults retain at most 128 payloads and 8 MiB; use
Expand Down
8 changes: 5 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,9 @@ Unlike traditional LFS which moves files to external servers, `git-cas` treats t
blob reads at or below a fixed 10 MiB ceiling use one bounded session read;
larger payloads retain the genuine one-shot streaming path. Explicitly
bounded page, asset, and ordered-bundle batches pipeline independent Git
writes. `workspace.batch()` can compose dependent page and bundle waves in
one private persistence scope and retain their union under one exact final
writes. `workspace.batch()` can compose dependent asset, page, and bundle
waves in one private persistence scope and either retain their union or an
explicitly selected set of newly staged terminal roots under one exact final
generation without changing content identity.
- **Key Lifecycle**: Envelope encryption separates DEKs from KEKs. Rotate passphrases across an entire vault without re-encrypting data blobs. Privacy mode HMAC-hashes slug names to prevent metadata discovery.
- **Runtime-Adaptive**: A single core supports Node.js 22+, Bun, and Deno through a strict hexagonal port architecture with runtime-specific crypto adapters.
Expand Down Expand Up @@ -158,7 +159,8 @@ Core capabilities:
compare-and-swap refs, and immutable lifecycle evidence.
- **Scoped staging workspaces**: `workspaces.open()` mirrors application writes
behind one renewable temporary RootSet, supports one-generation bounded
asset/page/bundle batches plus compound dependent page/bundle admission,
asset/page/bundle batches plus compound dependent asset/page/bundle admission
with exact newly staged terminal-root selection,
returns only after each public result is anchored, promotes destination-first,
and exposes bounded age, expiry, logical-content, and direct-root diagnostics
with opaque cleanup pagination.
Expand Down
9 changes: 9 additions & 0 deletions ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ GitHub wins and this file should be corrected.
| [`v6.5.7`](https://github.com/git-stunts/git-cas/milestone/17) | Bounded session-backed small payload stream reads | [#115](https://github.com/git-stunts/git-cas/issues/115) |
| [`v6.5.8`](https://github.com/git-stunts/git-cas/milestone/18) | Bounded application write and retention waves | [#119](https://github.com/git-stunts/git-cas/issues/119) |
| [`v6.5.9`](https://github.com/git-stunts/git-cas/milestone/19) | Compound staging-workspace admission | [#123](https://github.com/git-stunts/git-cas/issues/123) |
| [`v6.5.10`](https://github.com/git-stunts/git-cas/milestone/20) | Compound workspace assets and exact roots | [#127](https://github.com/git-stunts/git-cas/issues/127) |
| [`v6.6.0`](https://github.com/git-stunts/git-cas/milestone/9) | Operator TUI and agent automation follow-through | [#39](https://github.com/git-stunts/git-cas/issues/39), [#40](https://github.com/git-stunts/git-cas/issues/40) |
| [`v6.7.0`](https://github.com/git-stunts/git-cas/milestone/10) | Browser and edge read-path exploration | [#41](https://github.com/git-stunts/git-cas/issues/41) |
| [`v7.0.0`](https://github.com/git-stunts/git-cas/milestone/6) | Protocol break only if audit requires it | [#42](https://github.com/git-stunts/git-cas/issues/42), only when justified |
Expand All @@ -61,6 +62,14 @@ Its GitHub goalpost issue,
[#123](https://github.com/git-stunts/git-cas/issues/123), owns the release
evidence. The design doc is the durable contract; GitHub records completion.

The active design record is:

- [0061-compound-workspace-assets](./docs/design/0061-compound-workspace-assets/compound-workspace-assets.md)

Its GitHub goalpost issue is
[#127](https://github.com/git-stunts/git-cas/issues/127) under the
[`v6.5.10` milestone](https://github.com/git-stunts/git-cas/milestone/20).

The `v6.2.0` slice record is:

- [#54 Opaque asset handles and retention witnesses](https://github.com/git-stunts/git-cas/issues/54)
Expand Down
6 changes: 6 additions & 0 deletions STATUS.md
Original file line number Diff line number Diff line change
Expand Up @@ -182,6 +182,10 @@
[#123 v6.5.9: Compound staging-workspace admission](https://github.com/git-stunts/git-cas/issues/123)
under the
[`v6.5.9` milestone](https://github.com/git-stunts/git-cas/milestone/19).
- Active release goalpost:
[#127 v6.5.10: Compound workspace assets and exact roots](https://github.com/git-stunts/git-cas/issues/127)
under the
[`v6.5.10` milestone](https://github.com/git-stunts/git-cas/milestone/20).
- Current queued release goalposts are
[#39 v6.6.0: Operator TUI](https://github.com/git-stunts/git-cas/issues/39)
and
Expand All @@ -190,6 +194,8 @@
[`v6.6.0`](https://github.com/git-stunts/git-cas/milestone/9).
- The latest landed design record is
[0060-compound-workspace-admission](./docs/design/0060-compound-workspace-admission/compound-workspace-admission.md).
- The active design record is
[0061-compound-workspace-assets](./docs/design/0061-compound-workspace-assets/compound-workspace-assets.md).

## Read Next

Expand Down
Loading
Loading