Skip to content

Commit fbb8101

Browse files
committed
fix(tui): execute store wizard plans
1 parent 453c245 commit fbb8101

26 files changed

Lines changed: 1432 additions & 514 deletions

BEARING.md

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,10 @@ timeline
1414

1515
## Current State
1616

17-
The encryption surface has been simplified and the dedup-with-encryption gap is
18-
closed. The 20-card backlog from Phase 5 remains clear; recent work focused on
19-
collapsing scheme complexity and shipping convergent encryption.
17+
`v6.0.0` shipped on `2026-05-09`. The encryption surface has been simplified,
18+
the dedup-with-encryption gap is closed, and npm plus GitHub Releases are the
19+
active publication surfaces while JSR remains deferred behind the upstream
20+
toolchain blocker.
2021

2122
What exists now:
2223

@@ -91,10 +92,10 @@ These were the active tensions from the previous bearing. All resolved.
9192

9293
## Open Tensions
9394

94-
- **CasService size.** At ~2100 lines, `CasService` is still the largest single
95-
module. The published decomposition order (store coordination, then manifest
96-
publication, then recipient flows, then restore pipeline) has not yet been
97-
executed. The service works, but it concentrates too many responsibilities.
95+
- **TUI modernization.** The cockpit is useful and the Store Wizard now executes
96+
the encryption, compression, and chunking plan it presents. The remaining TUI
97+
work is broader operator ergonomics, discoverability, and long-lived workflow
98+
polish rather than a store-plan correctness blocker.
9899
- **No browser/edge runtime.** The architecture is now fully hexagonal and
99100
platform-agnostic at the port level, but no browser or edge adapter exists.
100101
`@git-stunts/plumbing` shells out to the `git` CLI, which is fundamentally
@@ -110,14 +111,11 @@ These were the active tensions from the previous bearing. All resolved.
110111

111112
## Next Horizon
112113

113-
With schemes simplified and convergent encryption shipped, these are candidate
114-
directions — not commitments.
114+
With v6.0.0 shipped, these are candidate directions — not commitments.
115115

116-
- **CasService decomposition.** Execute the published extraction order: pull
117-
store write coordination into `StoreCoordinator`, manifest/tree publication
118-
into `PublicationService`, recipient mutation into `RecipientService`, and
119-
restore pipeline into `RestoreService`. Each extraction should preserve the
120-
public facade contract.
116+
- **TUI modernization.** Keep dashboard and wizard actions sharing executable
117+
option-building truth while improving operator ergonomics around long-lived
118+
store, restore, vault, and diagnostics workflows.
121119
- **Browser/edge persistence adapter.** A `FetchPersistenceAdapter` or
122120
`IsomorphicGitAdapter` could enable browser-side restore (read path) without
123121
the `git` CLI. Write path is harder — it needs ref updates and tree creation.

CHANGELOG.md

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

88
## [Unreleased]
99

10+
## [6.0.1] — 2026-05-09
11+
12+
### Added
13+
14+
- **Per-operation chunking overrides**`ContentAddressableStore.store()` and
15+
`storeFile()` now accept a `chunking` option for a single operation, allowing
16+
CDC or fixed chunking without mutating the facade's default chunker.
17+
- **Active release-doc drift guard** — active release documents now have a unit
18+
guard against stale pre-v6.0.0 claims resurfacing after publication.
19+
1020
### Changed
1121

1222
- **Release workflow future-runtime hardening** — The GitHub Release job now
@@ -17,6 +27,22 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1727
navigation. Dense restore streaming detail moved to `GUIDE.md`, while the
1828
security hardening table in `ADVANCED_GUIDE.md` now carries the detailed
1929
limits previously summarized in the README.
30+
- **Post-v6 planning truth**`STATUS.md`, `ROADMAP.md`, `BEARING.md`, and the
31+
METHOD backlog now describe `v6.0.x` maintenance rather than the completed
32+
`v6.0.0` pre-tag state.
33+
- **6.0.1 release verification**`npm run release:verify -- --skip-jsr`
34+
passed 12/12 steps with 5,383 observed tests. JSR remains intentionally
35+
skipped for this patch line.
36+
37+
### Fixed
38+
39+
- **TUI Store Wizard execution** — the Operations workspace Store Wizard now
40+
threads passphrase encryption, forced convergent encryption, gzip
41+
compression, and fixed/CDC chunking into the actual `storeFile()` call before
42+
publishing the manifest tree to the vault.
43+
- **Store Wizard state flow** — passphrase and convergent selections collect a
44+
passphrase before the compression step, and the wizard step count remains
45+
contiguous when encryption is skipped.
2046

2147
## [6.0.0] — 2026-05-09
2248

GUIDE.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,21 @@ const manifest = await cas.storeFile({
174174

175175
The filename defaults to the basename of `filePath`. Override it with the optional `filename` parameter.
176176

177+
Use `chunking` on a single store call when one asset needs a different strategy
178+
from the facade default:
179+
180+
```js
181+
const manifest = await cas.storeFile({
182+
filePath: './large-archive.tar',
183+
slug: 'archives/large',
184+
chunking: { strategy: 'cdc' },
185+
});
186+
```
187+
188+
This override is scoped to that operation. The next `store()` or `storeFile()`
189+
call returns to the facade's configured chunker unless it also supplies
190+
`chunking`.
191+
177192
---
178193

179194
## Encryption
@@ -848,13 +863,17 @@ This table describes the high-level `ContentAddressableStore` facade. The facade
848863

849864
### Chunking Config Object
850865

866+
Constructor `chunking` sets the facade default. `store()` and `storeFile()` can
867+
also receive the same object as a per-operation override.
868+
851869
| Key | Type | Description |
852870
| ----------------- | ------------------ | -------------------------------------- |
853871
| `strategy` | `'fixed' \| 'cdc'` | Chunking strategy |
854872
| `chunkSize` | `number` | Fixed chunk size (fixed strategy only) |
855873
| `targetChunkSize` | `number` | CDC target chunk size |
856874
| `minChunkSize` | `number` | CDC minimum chunk size |
857875
| `maxChunkSize` | `number` | CDC maximum chunk size |
876+
| `normalized` | `boolean` | Use FastCDC-style dual-mask boundaries |
858877

859878
### `.casrc` Project Config
860879

ROADMAP.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,26 +12,26 @@ Fresh planning now follows the METHOD:
1212

1313
## Current Reality
1414

15-
- **Last tagged release:** `v5.3.2` (`2026-03-15`)
16-
- **Current release candidate:** `v6.0.0` on `release/v6.0.0`
15+
- **Last tagged release:** `v6.0.0` (`2026-05-09`)
16+
- **Current release line:** `v6.x` maintenance on `main`
1717
- **Supported runtimes:** Node.js 22.x, Bun, Deno
1818
- **Human surface reality:** the human CLI and TUI are substantial and already
1919
ahead of some older planning docs.
2020
- **Agent surface reality:** a first-class `git cas agent` contract now exists
2121
for shipped Relay flows, but breadth and portability are still incomplete.
2222
- **Planning reality:** fresh work is now chosen from METHOD backlog lanes, not
2323
milestone fiction.
24-
- **Release posture:** JSR publication is deferred from the v6.0.0 tag path
25-
until the upstream `jsr`/Deno dry-run blocker is fixed.
24+
- **Release posture:** npm and GitHub Releases are the active v6.0.x
25+
publication surfaces. JSR publication is deferred until the upstream
26+
`jsr`/Deno dry-run blocker is fixed.
2627

2728
## Current Queue Snapshot
2829

2930
See the live backlog for exact lane placement:
3031

31-
- [REL — Version Bump](./docs/method/backlog/v6.0.0/REL_version-bump.md)
3232
- [TUI — v6.x TUI Modernization](./docs/method/backlog/v6.x-tui/TUI_store-wizard.md)
33-
- [TUI — Store Wizard Execution Gap](./docs/method/backlog/bad-code/TUI_store-wizard-execution-gap.md)
34-
- [SECVault Passphrase Verifier Gap](./docs/method/backlog/bad-code/SEC_vault-passphrase-verifier-gap.md)
33+
- [Vault Tree Memory Loading](./docs/method/backlog/bad-code/vault-tree-memory-loading.md)
34+
- [TRGitPersistenceAdapter Full Materialization](./docs/method/backlog/bad-code/TR_persistence-adapter-materialization.md)
3535

3636
## How To Read This File
3737

STATUS.md

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

33
**Last tagged release:** `v6.0.0` (`2026-05-09`)
4-
**Current release state:** `v6.0.0` is published to npm and GitHub Releases; JSR publication is deferred for the v6.0.0 line.
4+
**Current release state:** `v6.0.1` patch candidate on `main`; `v6.0.0` is published to npm and GitHub Releases, and JSR publication is deferred for the v6.0.x line.
5+
**Latest verification:** `npm run release:verify -- --skip-jsr` passed 12/12 steps with 5,383 observed tests.
56
**Playback truth:** `main`
67
**Runtimes:** Node.js 22.x, Bun, Deno
78
**Current planning method:** [WORKFLOW.md](./WORKFLOW.md)
@@ -56,6 +57,13 @@
5657
orchestrates use cases while dedicated collaborators own persistence, tree-OID
5758
cache state, metadata/tree codecs, privacy indexing, key verification, and retry
5859
policy.
60+
- Store Wizard execution now uses the same `storeFile()` option payload it
61+
presents in the UI: passphrase/convergent encryption, gzip compression, and
62+
fixed/CDC chunking choices are threaded into the CAS facade before the
63+
manifest is published to the vault.
64+
- `ContentAddressableStore.store()` and `storeFile()` accept per-operation
65+
`chunking` overrides, so one store can use CDC or fixed chunking without
66+
mutating the facade's default chunker.
5967
- Manifest parsing now rejects unsupported encryption schemes,
6068
`encrypted: false`, malformed AES-GCM nonce/tag values, and framed manifests
6169
that omit `frameBytes`, across both JSON and CBOR manifest codecs.
@@ -72,7 +80,8 @@
7280

7381
## Active Queue Snapshot
7482

75-
- [TUI — Store Wizard Execution Gap](./docs/method/backlog/bad-code/TUI_store-wizard-execution-gap.md)
83+
- [Vault Tree Memory Loading](./docs/method/backlog/bad-code/vault-tree-memory-loading.md)
84+
- [TR — GitPersistenceAdapter Full Materialization](./docs/method/backlog/bad-code/TR_persistence-adapter-materialization.md)
7685

7786
## Read Next
7887

0 commit comments

Comments
 (0)