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
25 changes: 15 additions & 10 deletions BEARING.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ timeline

## Current State

`v6.5.9` shipped on `2026-08-24`.
`v6.5.9` shipped on `2026-08-24`, and `v6.5.10` is under release review.
Application asset, bundle, page, cache,
expiry, witness, and repository-diagnostics APIs sit above mutable root sets
and the low-level CAS pipeline. Direct bundle-reference reads and bounded
Expand Down Expand Up @@ -100,6 +100,14 @@ What exists now:
generation retains their union. A 33-operation witness reduced 200 Git
children to 23 and 33 retained generations to one in both SHA-1 and SHA-256
repositories without changing any application handle.
- **Compound workspace assets and exact roots.** The v6.5.10 candidate adds
bounded asset waves to the same compound persistence scope and optionally
retains a canonical, nonempty, deduplicated selection of handles staged by
that exact admission. Prior workspace roots and v6.5.9 retain-all behavior
remain intact. A controlled downstream git-warp prototype reduced cold Git
commands from 139 to 50 and incremental commands from 149 to 60; those
consumer numbers remain provisional until repeated against the public
registry artifact.
- **Batched workspace page retention.** v6.5.4 adds
`workspace.pages.putBatch()` so one bounded ordered page group is written and
retained under one exact workspace generation instead of rewriting a growing
Expand Down Expand Up @@ -170,19 +178,16 @@ 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. The immediate
v6.5.10 goalpost completes compound admission with bounded asset waves and
exact newly staged terminal-root selection:
With v6.5.9 shipped and the v6.5.10 candidate under release review, active work
is tracked in GitHub Issues and Milestones. Repo docs hold design and evidence
records, not the active queue. The candidate design is:

- [#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).
Its completed release goalpost is
[#123](https://github.com/git-stunts/git-cas/issues/123) in the
[`v6.5.9` milestone](https://github.com/git-stunts/git-cas/milestone/19).
Its release evidence remains owned by
[#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 broader horizon remains:

Expand Down
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

## [6.5.10] — 2026-08-24

### Added

- **Compound asset admission and exact terminal roots** -
Expand Down
4 changes: 3 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ Unlike traditional LFS which moves files to external servers, `git-cas` treats t
Existing v5 users should read [UPGRADING.md](./UPGRADING.md) and run
`npm run upgrade` in dry-run mode before restoring old encrypted vault entries.
For the release overview, see the
[v6.5.9 Release Notes](./docs/releases/v6.5.9.md).
[v6.5.10 Release Notes](./docs/releases/v6.5.10.md).

### 1. CLI Usage

Expand Down Expand Up @@ -242,6 +242,8 @@ All three runtimes are tested in CI on every push. The hexagonal architecture is
write waves, one-generation workspace batches, and reusable ref sessions.
- **[v6.5.9 Release Notes](./docs/releases/v6.5.9.md)**: Compound dependent
write waves retained under one exact staging-workspace generation.
- **[v6.5.10 Release Notes](./docs/releases/v6.5.10.md)**: Compound asset,
page, and bundle admission with exact selected terminal roots.
- **[Upgrading](./UPGRADING.md)**: Migration guide for v5 → v6.
- **[Changelog](./CHANGELOG.md)**: Version history and migration notes.

Expand Down
56 changes: 24 additions & 32 deletions ROADMAP.md

Large diffs are not rendered by default.

20 changes: 16 additions & 4 deletions STATUS.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# STATUS

**Last tagged release:** `v6.5.9` (`2026-08-24`)
**Current release state:** `v6.5.9` is published to npm and GitHub Releases.
**Latest verification:** reviewed release merge `a16e31a9` passed 14/14 release-verifier stages with 7,147 observed tests; signed tag `v6.5.9` peels to that merge, and release workflow `32766297971` published the matching npm artifact plus final GitHub Release.
**Current release state:** `v6.5.10` release candidate; tag, npm publication, and GitHub Release remain pending the reviewed tag workflow.
**Latest verification:** exact versioned candidate `2a5be40c` passed 14/14 release-verifier stages with 7,192 observed tests; tag and publication verification remain pending.
**Playback truth:** `main`
**Runtimes:** Node.js 22.x, Bun, Deno
**Current planning method:** [WORKFLOW.md](./WORKFLOW.md)
Expand All @@ -18,6 +18,20 @@
- The machine-facing `git cas agent` surface exists and now supports
OS-keychain passphrase sources for vault-derived key flows, but parity and
portability are still partial.
- **v6.5.10 candidate posture** — implementation PR
[#128](https://github.com/git-stunts/git-cas/pull/128) merged normally as
`57cd3002`; its exact reviewed head is `67147506`, and exact implementation
checkpoint `e663754b` passed all 14 release-verifier stages with 7,186
observed tests. Exact versioned candidate `2a5be40c` passed the same 14-stage
method with 7,192 observed tests. npm, JSR, and runtime metadata identify
`6.5.10`, while the signed tag and registry artifact remain deliberately
absent pending release review [#129](https://github.com/git-stunts/git-cas/pull/129).
The additive contract admits bounded asset waves into the compound scope and
can retain exact selected terminal roots without changing stored formats,
handles, refs, or readers. The controlled git-warp prototype cut cold Git
commands from 139 to 50 and incremental commands from 149 to 60; those
downstream numbers remain provisional until repeated against the public
registry artifact. No application or stored-data migration is required.
- **v6.5.9 artifact posture** — implementation PR
[#124](https://github.com/git-stunts/git-cas/pull/124) and release PR
[#125](https://github.com/git-stunts/git-cas/pull/125) merged normally.
Expand Down Expand Up @@ -193,8 +207,6 @@
under
[`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
44 changes: 41 additions & 3 deletions UPGRADING.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,42 @@

v6.0.0 is a major release that simplifies the encryption model, hardens security defaults, and cleans up the architecture. This guide covers every breaking change and what you need to do.

## v6.5.9 To v6.5.10

v6.5.10 adds compound asset admission and exact terminal-root selection and
requires no application or stored-data migration. Existing object bytes,
handles, descriptors, workspace generations, ref layouts, readers, and
retain-all compound calls remain compatible. Existing repositories open in
place.

Compound callbacks may now stage bounded asset batches alongside pages and
ordered bundles. An optional synchronous selector can retain only terminal
handles staged by that exact callback:

```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],
});
```

The selector must return a nonempty array of canonical handles staged by the
same admission. It is bounded by that admission's staged-artifact count,
deduplicates repeated handles in stable order, and cannot remove roots retained
before the call. Omit `retain` to preserve v6.5.9 retain-all behavior.

## v6.5.8 To v6.5.9

v6.5.9 adds `workspace.batch()` and requires no application or stored-data
Expand All @@ -20,9 +56,11 @@ const admitted = await workspace.batch({
const leaves = await scope.bundles.putOrderedBatch({
bundles: buildLeafRequests(pages),
});
return (await scope.bundles.putOrderedBatch({
bundles: [buildRootRequest(leaves)],
}))[0];
return (
await scope.bundles.putOrderedBatch({
bundles: [buildRootRequest(leaves)],
})
)[0];
},
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ release_home: 'v6.5.10'
issue: 'https://github.com/git-stunts/git-cas/issues/127'
goalpost_issue: 'https://github.com/git-stunts/git-cas/issues/127'
tracker_source: 'github'
status: 'active'
status: 'landed'
base_commit: '6d5a43e2853f61b3c12d5000e81ef7832c00b8d2'
owners:
- '@git-stunts'
Expand Down Expand Up @@ -431,7 +431,7 @@ The work is done when:
SHA-1 and SHA-256 repositories.
- [x] Existing v6.5.9 calls and all persisted repositories remain compatible
without migration.
- [ ] Public docs, architecture, changelog, issue, PR, CI, and local validation
- [x] Public docs, architecture, changelog, issue, PR, CI, and local validation
are complete.
- [ ] v6.5.10 is publicly installable before downstream results are claimed as
release behavior.
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
# PERF-0061 v6.5.10 Release Candidate Witness

Date: 2026-08-24

Issue: #127

Implementation review: #128

Release review: #129

## Scope

This witness records the pre-publication candidate for compound asset admission
and exact selected terminal roots. It does not claim that a `v6.5.10` tag, npm
artifact, or GitHub Release exists. This is an explicitly unpublished
candidate.

The candidate:

- sets npm, JSR, and runtime package metadata to `6.5.10`;
- moves compound workspace assets and exact roots from `Unreleased` to
`6.5.10`;
- packages and links `docs/releases/v6.5.10.md`;
- records v6.5.9 publication evidence as immutable history;
- marks design 0061 landed after implementation review #128; and
- leaves v6.5.10 tag and registry claims deliberately absent.

## Implementation Provenance

Implementation review #128 merged normally as
`57cd300294a94660d2afb644c653a3be78c15d53`. Its second parent is exact
reviewed head `6714750620aa2310ad0279f957414be65898a66a`.

Exact implementation checkpoint
`e663754bf221784f0e5856a41fe071bebfa5befb` passed the complete release method
before the reviewed head added only the committed verification record:

| Gate | Result | Observed tests |
| -------------------------- | --------------------- | -------------: |
| Lint | PASS | - |
| Unit tests (Node) | PASS | 2,192 |
| Unit tests (Bun) | PASS | 2,191 |
| Unit tests (Deno) | PASS | 2,182 |
| Public type compatibility | PASS | - |
| Integration tests (Node) | PASS | 207 |
| Integration tests (Bun) | PASS | 207 |
| Integration tests (Deno) | PASS | 207 |
| Examples and build stamp | PASS | - |
| npm and JSR dry-runs | PASS | - |
| **Release method summary** | **PASS: 14/14 gates** | **7,186** |

The versioned release-candidate tree verified below was committed as
`2a5be40c718e8069fb466af1be265357d8cb7ce0`. The following
documentation-only commit binds that immutable candidate identity into the
witness; publication still requires verification of the eventual reviewed
merge.

The versioned candidate passed the same complete release method:

| Gate | Result | Observed tests |
| -------------------------- | --------------------- | -------------: |
| Lint | PASS | - |
| Unit tests (Node) | PASS | 2,194 |
| Unit tests (Bun) | PASS | 2,193 |
| Unit tests (Deno) | PASS | 2,184 |
| Public type compatibility | PASS | - |
| Integration tests (Node) | PASS | 207 |
| Integration tests (Bun) | PASS | 207 |
| Integration tests (Deno) | PASS | 207 |
| Examples and build stamp | PASS | - |
| npm and JSR dry-runs | PASS | - |
| **Release method summary** | **PASS: 14/14 gates** | **7,192** |

## Semantic and Process Witness

The direct git-cas SHA-1/SHA-256 integration proof preserves application
handles, transitive readback after immediate prune, one exact final workspace
generation, and later reclamation with only the selected terminal roots held
directly.

A controlled downstream git-warp prototype compared the same 65-node,
65-patch corpus plus a five-patch suffix across one warmup and three measured
runs per scenario:

| 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 |

Semantic fingerprints, cache posture, and replay counts match. The warm path
does not materialize writes and retains the exact 25-command topology. These
consumer measurements justify the candidate API but remain provisional until
rerun against the public v6.5.10 registry artifact.

## Compatibility and Publication Gate

The release is additive and migration-free. Existing stored objects, handles,
descriptors, ref layouts, readers, workspace generations, and retain-all calls
remain compatible without rewriting or cutover.

Publication remains blocked until release PR #129 passes hosted CI and review,
the exact reviewed merge passes verification, a signed annotated `v6.5.10` tag
peels to that merge, and the release workflow publishes npm plus the final
GitHub Release.
26 changes: 14 additions & 12 deletions docs/design/0061-compound-workspace-assets/witness/verification.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@

- implementation commit: `e663754bf221784f0e5856a41fe071bebfa5befb`
- implementation PR: [#128](https://github.com/git-stunts/git-cas/pull/128)
- exact reviewed head: `6714750620aa2310ad0279f957414be65898a66a`
- normal merge: `57cd300294a94660d2afb644c653a3be78c15d53`
- base commit: `6d5a43e2853f61b3c12d5000e81ef7832c00b8d2`
- installed Plumbing: `@git-stunts/plumbing@3.3.0`
- Node.js: `v26.0.0`
Expand All @@ -14,7 +16,8 @@

The implementation worktree was clean when the complete release verifier
started and after it completed. The verifier's build stamp named the same
implementation commit.
implementation commit. PR #128 then added only this verification record and
merged normally; the merge's second parent is the exact reviewed head above.

## Red to green

Expand Down Expand Up @@ -86,12 +89,12 @@ run used the exact API implemented here through a local prototype.

| 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 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 |

The cold path used 64.029% fewer Git commands, 40.950% less Node CPU, and
52.935% less wall time. The incremental path used 59.732% fewer Git commands,
Expand All @@ -116,8 +119,7 @@ authority cutover.
## Publication boundary

The implementation is not a published v6.5.10 release merely because this
witness and local verification are green. Publication still requires hosted
review and CI on the exact PR head, a normal reviewed merge, a separately
reviewed versioned release candidate, a signed annotated tag that peels to the
reviewed release merge, successful registry publication, and an external
consumer installation check.
witness, hosted implementation CI, and local verification are green.
Publication still requires a separately reviewed versioned release candidate,
a normal release merge, a signed annotated tag that peels to that merge,
successful registry publication, and an external consumer installation check.
2 changes: 1 addition & 1 deletion docs/design/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ process in [docs/method/process.md](../method/process.md).

## Active METHOD Cycles

- [0061-compound-workspace-assets - compound-workspace-assets](./0061-compound-workspace-assets/compound-workspace-assets.md)
- [0054-batched-page-retention - batched-page-retention](./0054-batched-page-retention/batched-page-retention.md)
- [0050-lazy-bundle-reference-reads - lazy-bundle-reference-reads](./0050-lazy-bundle-reference-reads/lazy-bundle-reference-reads.md)
- [0049-scoped-staging-workspaces — scoped-staging-workspaces](./0049-scoped-staging-workspaces/scoped-staging-workspaces.md)
Expand Down Expand Up @@ -45,6 +44,7 @@ process in [docs/method/process.md](../method/process.md).

## Landed METHOD Cycles

- [0061-compound-workspace-assets - compound-workspace-assets](./0061-compound-workspace-assets/compound-workspace-assets.md)
- [0060-compound-workspace-admission - compound-workspace-admission](./0060-compound-workspace-admission/compound-workspace-admission.md)
- [0059-bounded-write-waves - bounded-write-waves](./0059-bounded-write-waves/bounded-write-waves.md)
- [0058-bounded-stream-session-reads - bounded-stream-session-reads](./0058-bounded-stream-session-reads/bounded-stream-session-reads.md)
Expand Down
Loading
Loading