Skip to content

Commit c2d41f6

Browse files
authored
Merge pull request #92 from git-stunts/release/v6.5.2
release: git-cas v6.5.2
2 parents 4ce37ad + e7e4d8d commit c2d41f6

17 files changed

Lines changed: 287 additions & 35 deletions

BEARING.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -126,16 +126,16 @@ These were the active tensions from the previous bearing. All resolved.
126126

127127
## Next Horizon
128128

129-
With v6.5.1 shipped and the v6.5.2 performance candidate under review, active
130-
work is tracked in GitHub Issues and Milestones. Repo docs hold design and
131-
evidence records, not the active queue.
129+
With v6.5.1 shipped and the versioned v6.5.2 release candidate being prepared,
130+
active work is tracked in GitHub Issues and Milestones. Repo docs hold design
131+
and evidence records, not the active queue.
132132

133-
The current design under review is
133+
The latest landed design is
134134
[0052-persistent-git-object-sessions](./docs/design/0052-persistent-git-object-sessions/persistent-git-object-sessions.md).
135135
Its release evidence is attached to
136136
[#90](https://github.com/git-stunts/git-cas/issues/90) and the
137-
[`v6.5.2` milestone](https://github.com/git-stunts/git-cas/milestone/12). No
138-
later design is selected here; GitHub owns that decision.
137+
[`v6.5.2` milestone](https://github.com/git-stunts/git-cas/milestone/12). Tag
138+
and publication evidence remain pending; no later design is selected here.
139139

140140
The broader horizon remains:
141141

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
## [6.5.2] — 2026-07-19
11+
1012
### Added
1113

1214
- **Bounded page batches and explicit resource closure** -

README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ Unlike traditional LFS which moves files to external servers, `git-cas` treats t
4949
Existing v5 users should read [UPGRADING.md](./UPGRADING.md) and run
5050
`npm run upgrade` in dry-run mode before restoring old encrypted vault entries.
5151
For the release overview, see the
52-
[v6.5.1 Release Notes](./docs/releases/v6.5.1.md).
52+
[v6.5.2 Release Notes](./docs/releases/v6.5.2.md).
5353

5454
### 1. CLI Usage
5555

@@ -214,6 +214,8 @@ All three runtimes are tested in CI on every push. The hexagonal architecture is
214214
references, immutable metadata reuse, and corrected concurrency settlement.
215215
- **[v6.5.1 Release Notes](./docs/releases/v6.5.1.md)**: Bounded immutable page
216216
payload reuse with zero-command warm reads.
217+
- **[v6.5.2 Release Notes](./docs/releases/v6.5.2.md)**: Persistent bounded Git
218+
object sessions, scoped page batches, and deterministic resource closure.
217219
- **[Upgrading](./UPGRADING.md)**: Migration guide for v5 → v6.
218220
- **[Changelog](./CHANGELOG.md)**: Version history and migration notes.
219221

ROADMAP.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,9 @@ GitHub wins and this file should be corrected.
4444
| [`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) |
4545
| [`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 |
4646

47-
## Current Design
47+
## Latest Landed Design
4848

49-
The current active design record is:
49+
The latest landed design record is:
5050

5151
- [0052-persistent-git-object-sessions](./docs/design/0052-persistent-git-object-sessions/persistent-git-object-sessions.md)
5252

STATUS.md

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
# STATUS
22

33
**Last tagged release:** `v6.5.1` (`2026-07-18`)
4-
**Current release state:** `v6.5.1` is published to npm with provenance and to GitHub Releases.
5-
**Latest verification:** the reviewed release tree passed 14/14 release-verifier steps with 6,676 observed tests; release workflow `29666480492` then passed validation, tests, trusted npm publication, and final GitHub Release creation from merge `49b7d5cb`.
4+
**Current release state:** `v6.5.2` release candidate; tag, npm publication, and GitHub Release remain pending the reviewed tag workflow.
5+
**Latest verification:** the versioned `v6.5.2` candidate passed 14/14 release-verifier steps with 6,817 observed tests across Node, Bun, Deno, and all three real-Git integration suites; tag and publication verification remain pending.
66
**Playback truth:** `main`
77
**Runtimes:** Node.js 22.x, Bun, Deno
88
**Current planning method:** [WORKFLOW.md](./WORKFLOW.md)
@@ -20,14 +20,16 @@
2020
portability are still partial.
2121
- **v6.5.2 candidate posture** - persistent bounded Git object sessions,
2222
scoped page-write batches, and deterministic local resource closure are
23-
implemented under [#90](https://github.com/git-stunts/git-cas/issues/90).
24-
Unit, Docker real-Git integration, and Node/Bun/Deno platform gates pass; PR,
25-
review, merge, and publication evidence remain outstanding.
23+
merged through reviewed commit `4ce37adc` under
24+
[#90](https://github.com/git-stunts/git-cas/issues/90). npm, JSR, and runtime
25+
version metadata identify `6.5.2`; tag and registry artifacts remain
26+
deliberately absent until release-candidate review completes.
2627
- **v6.5.1 artifact posture** — signed tag `v6.5.1` resolves to reviewed merge
2728
`49b7d5cb`; npm reports `@git-stunts/git-cas@6.5.1` as `latest` with SLSA
28-
provenance, and the final GitHub Release is published. Bounded immutable page
29-
payload reuse is shipped. JSR dry-run validation is healthy, but JSR
30-
publication is not part of the release workflow.
29+
provenance, and release workflow `29666480492` published the final GitHub
30+
Release. Bounded immutable page payload reuse is shipped. JSR dry-run
31+
validation is healthy, but JSR publication is not part of the release
32+
workflow.
3133
- **v6.5.0 artifact posture** — signed tag `v6.5.0` resolves to reviewed merge
3234
`f464b929`; npm reports `@git-stunts/git-cas@6.5.0` as `latest` with SLSA
3335
provenance, and the final GitHub Release is published. Bounded direct bundle
@@ -130,7 +132,7 @@
130132
[#40 v6.6.0: Agent automation follow-through](https://github.com/git-stunts/git-cas/issues/40)
131133
under the
132134
[`v6.6.0` milestone](https://github.com/git-stunts/git-cas/milestone/9).
133-
- The latest active design record is
135+
- The latest landed design record is
134136
[0052-persistent-git-object-sessions](./docs/design/0052-persistent-git-object-sessions/persistent-git-object-sessions.md).
135137

136138
## Read Next

UPGRADING.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,29 @@
22

33
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.
44

5+
## v6.5.1 To v6.5.2
6+
7+
v6.5.2 is API-additive and does not require stored-data migration. Immutable
8+
metadata and tree reads automatically reuse bounded typed Git sessions when the
9+
injected plumbing supports them. Existing structural adapters remain compatible
10+
and continue through the command-per-operation fallback.
11+
12+
Use `pages.putBatch()` when an application already has an explicit bounded page
13+
group. The default envelope accepts at most 256 pages and 32 MiB, supports a
14+
lower `maxBytes` on each page, preserves input order, and performs no writes
15+
until the complete bounded batch is valid. Individual `pages.put()` calls remain
16+
one-shot so an externally pruned unreachable blob can be recreated correctly.
17+
18+
Call `await cas.close()` when the store is no longer needed, especially when an
19+
operation may still be active or a stream may remain unconsumed. Closing drains
20+
or terminates local Git processes and releases bounded cache residency only; it
21+
does not delete stored objects, move refs, or change retention or publication
22+
state.
23+
24+
See [v6.5.2 Release Notes](./docs/releases/v6.5.2.md) and
25+
[Application Storage](./docs/API.md#application-storage) for the complete batch,
26+
streaming, and lifecycle contracts.
27+
528
## v6.5.0 To v6.5.1
629

730
v6.5.1 is API-additive and does not require stored-data migration. Repeated

docs/design/0052-persistent-git-object-sessions/persistent-git-object-sessions.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ release_home: 'v6.5.2'
77
issue: 'https://github.com/git-stunts/git-cas/issues/90'
88
goalpost_issue: 'https://github.com/git-stunts/git-cas/issues/90'
99
tracker_source: 'github'
10-
status: 'active'
10+
status: 'landed'
1111
base_commit: '12fd67200641f385d2d756c302bb2e5701beefbc'
1212
owners:
1313
- '@git-stunts'
Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
# PERF-0052 v6.5.2 Release Candidate Witness
2+
3+
Date: 2026-07-19
4+
5+
Issue: #90
6+
7+
Implementation review: #91
8+
9+
Release review: #92
10+
11+
## Scope
12+
13+
This witness records the pre-publication release candidate for persistent
14+
bounded Git object sessions, bounded page batches, and deterministic local
15+
resource closure. It does not claim that a `v6.5.2` tag, npm artifact, or GitHub
16+
Release exists. This is an explicitly unpublished candidate.
17+
18+
The candidate:
19+
20+
- sets npm, JSR, and the runtime `PACKAGE_VERSION` export to `6.5.2`;
21+
- moves the persistent-session and page-batch changes from `Unreleased` to
22+
`6.5.2`;
23+
- packages and links `docs/releases/v6.5.2.md`;
24+
- adds v6.5.1-to-v6.5.2 adoption guidance to `UPGRADING.md`;
25+
- marks design 0052 landed and records its release-candidate posture;
26+
- preserves all v6.5.1 publication evidence as immutable history; and
27+
- leaves tag and registry publication claims deliberately absent.
28+
29+
## Implementation Provenance
30+
31+
| Capability | Review anchor | Commit |
32+
| -------------------------------------------- | ------------- | ------------------------------------------ |
33+
| Persistent typed Git object sessions | #91 | `27831926327afc7522b39ab435d29b46b7ac428e` |
34+
| Bounded page batching and facade closure | #91 | `27831926327afc7522b39ab435d29b46b7ac428e` |
35+
| Lifecycle, teardown, and boundedness repairs | #91 | `1819d8572707d8846ffa7ace9847f490cdb6438b` |
36+
| Final review repairs | #91 | `efce7879348072a25759996dd159e35b638c4035` |
37+
| Reviewed feature merge | #91 | `4ce37adc57d49d2633507c3fbdc46e98617b26d6` |
38+
39+
The public page capability exposes bounded ordered batches, and the root facade
40+
exposes explicit close and async disposal without making the optional
41+
persistence-port capabilities mandatory for legacy structural adapters.
42+
43+
[cite: `index.d.ts#1466-1474@4ce37adc57d49d2633507c3fbdc46e98617b26d6`]
44+
[cite: `index.d.ts#1723-1742@4ce37adc57d49d2633507c3fbdc46e98617b26d6`]
45+
46+
The Git adapter feature-detects typed sessions, bounds parsed-tree residency,
47+
keeps individual writes one-shot, and scopes bulk writes to one completed and
48+
closed `fast-import` process.
49+
50+
[cite: `src/infrastructure/adapters/GitPersistenceAdapter.js#41-180@4ce37adc57d49d2633507c3fbdc46e98617b26d6`]
51+
[cite: `src/infrastructure/adapters/GitPersistenceAdapter.js#499-570@4ce37adc57d49d2633507c3fbdc46e98617b26d6`]
52+
53+
The real-Git regression contract proves semantic identity, one-session reads,
54+
one-process bounded batch writes, assertion-safe cleanup, and correct rewrite
55+
after aggressive external pruning.
56+
57+
[cite: `test/integration/bundle-reference-performance.test.js#165-246@4ce37adc57d49d2633507c3fbdc46e98617b26d6`]
58+
59+
## Verification
60+
61+
The versioned candidate passed the complete `pnpm run release:verify` method:
62+
63+
| Gate | Result | Observed tests |
64+
| -------------------------- | ---------------- | -------------: |
65+
| Lint | PASS | - |
66+
| Unit tests (Node) | PASS | 2,080 |
67+
| Unit tests (Bun) | PASS | 2,079 |
68+
| Unit tests (Deno) | PASS | 2,070 |
69+
| Public type compatibility | PASS | - |
70+
| Integration tests (Node) | PASS | 196 |
71+
| Integration tests (Bun) | PASS | 196 |
72+
| Integration tests (Deno) | PASS | 196 |
73+
| Examples and build stamp | PASS | - |
74+
| npm and JSR dry-runs | PASS | - |
75+
| **Release method summary** | **PASS (14/14)** | **6,817** |
76+
77+
The implementation PR merged only after GitHub lint and all Node/Bun/Deno jobs
78+
passed, CodeRabbit approved, every review thread was resolved, and the complete
79+
diff received a clean self-review. Tag and publication evidence remain
80+
deliberately absent from this candidate witness.
81+
82+
## Publication Gate
83+
84+
Publication remains blocked until all of the following are true:
85+
86+
1. the versioned candidate passes every release-verifier step;
87+
2. the release PR passes GitHub CI, self-review, Code Lawyer review, and the
88+
agreed CodeRabbit posture;
89+
3. the release PR is merged without unresolved findings;
90+
4. a signed annotated `v6.5.2` tag points at the reviewed merge commit;
91+
5. the release workflow passes version validation and runtime tests;
92+
6. npm reports `@git-stunts/git-cas@6.5.2` with provenance; and
93+
7. GitHub reports the final non-draft `v6.5.2` Release.
94+
95+
Downstream git-warp adoption and its process-tree CPU, wall-clock,
96+
Git-command, and bounded-memory evidence remain separate post-publication
97+
obligations.

docs/design/0052-persistent-git-object-sessions/witness/verification.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@ Issue: [#90](https://github.com/git-stunts/git-cas/issues/90)
66

77
Implementation commit: `27831926327afc7522b39ab435d29b46b7ac428e`
88

9-
Final reviewed source commit: `1819d8572707d8846ffa7ace9847f490cdb6438b`
9+
Final reviewed source commit: `efce7879348072a25759996dd159e35b638c4035`
10+
11+
Reviewed feature merge: `4ce37adc57d49d2633507c3fbdc46e98617b26d6`
1012

1113
## Contract
1214

docs/design/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ process in [docs/method/process.md](../method/process.md).
1111

1212
## Active METHOD Cycles
1313

14-
- [0052-persistent-git-object-sessions - persistent-git-object-sessions](./0052-persistent-git-object-sessions/persistent-git-object-sessions.md)
1514
- [0050-lazy-bundle-reference-reads - lazy-bundle-reference-reads](./0050-lazy-bundle-reference-reads/lazy-bundle-reference-reads.md)
1615
- [0049-scoped-staging-workspaces — scoped-staging-workspaces](./0049-scoped-staging-workspaces/scoped-staging-workspaces.md)
1716
- [0048-scoped-cache-acquisitions — scoped-cache-acquisitions](./0048-scoped-cache-acquisitions/scoped-cache-acquisitions.md)
@@ -44,6 +43,7 @@ process in [docs/method/process.md](../method/process.md).
4443

4544
## Landed METHOD Cycles
4645

46+
- [0052-persistent-git-object-sessions - persistent-git-object-sessions](./0052-persistent-git-object-sessions/persistent-git-object-sessions.md)
4747
- [0051-bounded-page-payload-reuse - bounded-page-payload-reuse](./0051-bounded-page-payload-reuse/bounded-page-payload-reuse.md)
4848
- [0046-gc-retention-root-sets — gc-retention-root-sets](./0046-gc-retention-root-sets/gc-retention-root-sets.md)
4949
- [0047-application-storage-cache-boundary — application-storage-cache-boundary](./0047-application-storage-cache-boundary/application-storage-cache-boundary.md)

0 commit comments

Comments
 (0)