Skip to content
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]

## [18.0.0] — 2026-05-25

### Added

- V18 release-candidate evidence now records guarded CLI finalization,
Expand Down
345 changes: 345 additions & 0 deletions TECHNICAL_TEARDOWN.md

Large diffs are not rendered by default.

68 changes: 55 additions & 13 deletions docs/BEARING.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,18 +39,19 @@ of handwritten adapter folklore.

Current branch state at this boundary:

- Current branch: `v18-continuum-slices-66-75`
- Current branch: `v18-release-prep-slices-97-102`
- Base branch: `main`
- Current `origin/main`: `d379eb81`
- Latest merged PR: #105, v18 release runway planning
- Current `origin/main`: `023c7d75`
- Latest merged PR: #106, v18 release-candidate evidence and review cleanup
- Latest released package line: `17.0.1`
- Release-prep package metadata: `18.0.0`, not tagged or published yet
- Latest completed implementation cycle:
`0244-v18-backlog-reconciliation`
- Current work: backlog reconciliation after the v18 release-candidate
evidence packet, with the next goalpost narrowed to public release-prep
gates and residual-risk decisions.
- Cleanup checkpoint: this branch is ahead of `origin/main` with the v18
release-candidate evidence and backlog-reconciliation work.
`0250-v18-final-release-prep-replan`
- Current work: release-prep PR review for `v18.0.0`; local release preflight
is green for `18.0.0` metadata, and the remaining public-release gates are
PR review, GitHub CI, merge to `main`, tag, and publish.
- Cleanup checkpoint: PR #106 is merged to `main`; this branch starts from that
merge and must not widen the v18 promise while preparing the public tag.

The current v18 graph-model posture is:

Expand Down Expand Up @@ -154,13 +155,15 @@ The current v18 graph-model posture is:
command-owned readings, emits the command report, and permits live-ref
finalization only through a reviewed JSON request that matches observed
runtime evidence.
- V18 release-candidate blockers are now explicit: full release-prep gates,
GitHub CI, package/versioning work, and residual raw content/property risk.
- V18 release-candidate blockers are now explicit: GitHub CI, PR review,
post-merge tag/publish work, and the accepted residual raw content/property
risk.

That is useful progress, not a finish line. The repo now has migration safety,
wet-run proof, guarded finalization, generated Continuum contract tie-back,
and a release-candidate packet. Public v18 still needs full release-prep
gates, CI, package/tag work, and explicit residual-risk review.
release-candidate docs, `18.0.0` package metadata, and a green local release
preflight. Public v18 still needs PR review, GitHub CI, merge to `main`, tag,
and publish.

## What Just Shipped

Expand Down Expand Up @@ -215,6 +218,18 @@ PR #102 landed v18 slices 36 through 40:
- ordered migration history input;
- migration manifest serialization.

PR #106 landed v18 slices 66 through 96:

- production-runtime scratch replay and public-read wet-run proof;
- guarded CLI finalization behind reviewed JSON confirmation;
- generated Continuum runtime-boundary contract conformance and `warp-ttd`
smoke evidence;
- raw content/property retired-boundary ratchet;
- release-candidate evidence packet;
- backlog reconciliation after the release-candidate evidence;
- review follow-up that tightened runtime replay validation, finalization JSON
evidence binding, fixture coverage, and migration script structure.

Slice 36 is complete on this branch. The migration manifest root now exists
as a frozen domain noun, with runtime-backed basis, mapping, warning, and
fatal-error entries. It does not serialize, read Git, or write graph history.
Expand Down Expand Up @@ -406,6 +421,21 @@ goalpost is a release-prep branch that runs the full gate set, freezes package
and release notes, and decides whether remaining raw content/property storage
retirement blocks the public tag or ships as explicit residual risk.

### Release-Prep Checklist

- [x] 97. Establish the v18 release-prep baseline:
[0245](design/0245-v18-release-prep-baseline/v18-release-prep-baseline.md).
- [x] 98. Run the release-prep gate baseline and record the evidence:
[0246](design/0246-v18-release-gate-baseline/v18-release-gate-baseline.md).
- [x] 99. Decide residual raw content/property storage risk:
[0247](design/0247-v18-residual-raw-storage-risk-decision/v18-residual-raw-storage-risk-decision.md).
- [x] 100. Freeze public operator release notes and non-goals:
[0248](design/0248-v18-public-operator-release-notes/v18-public-operator-release-notes.md).
- [x] 101. Align package, JSR, lockfile, and changelog metadata for `v18.0.0`:
[0249](design/0249-v18-version-tag-readiness/v18-version-tag-readiness.md).
- [x] 102. Replan from final release-prep evidence before PR review:
[0250](design/0250-v18-final-release-prep-replan/v18-final-release-prep-replan.md).

### Next Thirty-Slice Checklist

- [x] 66. Design production-runtime scratch replay conformance:
Expand Down Expand Up @@ -757,3 +787,15 @@ and concrete checks live in `docs/invariants/`.
- [x] 95. Cut v18 release-candidate docs, changelog, and go/no-go evidence.
- [x] 96. Reconcile the v18 backlog after release-candidate evidence:
[0244](design/0244-v18-backlog-reconciliation/v18-backlog-reconciliation.md).
- [x] 97. Establish the v18 release-prep baseline:
[0245](design/0245-v18-release-prep-baseline/v18-release-prep-baseline.md).
- [x] 98. Run the release-prep gate baseline and record the evidence:
[0246](design/0246-v18-release-gate-baseline/v18-release-gate-baseline.md).
- [x] 99. Decide residual raw content/property storage risk:
[0247](design/0247-v18-residual-raw-storage-risk-decision/v18-residual-raw-storage-risk-decision.md).
- [x] 100. Freeze public operator release notes and non-goals:
[0248](design/0248-v18-public-operator-release-notes/v18-public-operator-release-notes.md).
- [x] 101. Align package, JSR, lockfile, and changelog metadata for `v18.0.0`:
[0249](design/0249-v18-version-tag-readiness/v18-version-tag-readiness.md).
- [x] 102. Replan from final release-prep evidence before PR review:
[0250](design/0250-v18-final-release-prep-replan/v18-final-release-prep-replan.md).
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
---
cycle: 0245
task_id: V18_release_prep_baseline
status: Complete
sponsors:
human: James
agent: Codex
started_at: 2026-05-25
completed_at: 2026-05-25
release_home: v18.0.0
bearing_task: 97
---

# V18 Release-Prep Baseline

## Hill

Reset the public-release branch from the merged v18 release-candidate evidence
and make the next release-prep work explicit.

## Context

PR #106 merged the v18 release-candidate evidence packet through slice 96. The
next work is not another feature tranche. It is release hygiene: prove the
gate set, decide residual raw content/property risk, freeze operator release
notes, align package metadata, and replan from evidence before tagging.

## Design

This slice updates `docs/BEARING.md` so it names the current branch and merged
PR accurately. It also adds a short release-prep checklist for slices 97
through 102.

The checklist deliberately keeps residual raw content/property storage as a
decision point. The executable closeout audit still names many compatibility
boundaries, so this branch must either retire more storage with evidence or
ship the remaining boundary as an explicit release risk.

## Acceptance Criteria

- `BEARING` no longer says the current branch is the merged slice-66-through-75
feature branch.
- `BEARING` names PR #106 as the latest merged PR.
- Slices 97 through 102 have named release-prep scope.
- The release-prep direction does not widen v18 into v19 or v20 claims.

## Test Plan

- Run Markdown lint for edited docs.
- Run `git diff --check`.
- Inspect the diff before committing.
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
---
cycle: 0246
task_id: V18_release_gate_baseline
status: Complete
sponsors:
human: James
agent: Codex
started_at: 2026-05-25
completed_at: 2026-05-25
release_home: v18.0.0
bearing_task: 98
---

# V18 Release Gate Baseline

## Hill

Run the release-prep gate set before changing package metadata so the branch
starts from known-good evidence.

## Evidence

The following gates passed on branch `v18-release-prep-slices-97-102`:

| Gate | Result |
|------|--------|
| `npm run lint` | Pass |
| tracked Markdown lint via `git ls-files '*.md' \| xargs npx markdownlint` | Pass |
| `npm run typecheck:src` | Pass |
| `npm run typecheck:test` | Pass |
| `npm run test:local` | Pass, 521 files and 7126 tests |
| `npm run release:preflight` | Pass for current `17.0.1` metadata |

`release:preflight` produced the expected branch warning because release-prep
work runs before merge to `main`. It also reported one moderate npm audit item
and no high or critical runtime vulnerabilities.

## Local Workspace Note

`npm run lint:md` failed locally only because the untracked side-project file
`TECHNICAL_TEARDOWN.md` contains unlabeled fenced code blocks. That file is not
tracked and is not part of the release branch. Tracked Markdown passed.

## Interpretation

The branch has a clean pre-version baseline. The public v18 release still
requires a second preflight after `package.json`, `jsr.json`,
`package-lock.json`, and `CHANGELOG.md` move to `18.0.0`.

## Test Plan

- Preserve this evidence in `BEARING`.
- Re-run release preflight after slice 101 version metadata changes.
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
---
cycle: 0247
task_id: V18_residual_raw_storage_risk_decision
status: Complete
sponsors:
human: James
agent: Codex
started_at: 2026-05-25
completed_at: 2026-05-25
release_home: v18.0.0
bearing_task: 99
---

# V18 Residual Raw Storage Risk Decision

## Hill

Decide whether the remaining raw content/property compatibility boundaries
block the public v18 tag.

## Evidence

The executable closeout audit still names 25 `src/domain` files that mention
raw compatibility content or property storage:

- legacy `_content*` compatibility key ownership;
- runtime mutation and compatibility operation execution;
- reducer, replay, serialization, snapshot, scope, and index boundaries;
- operation helper classes that still carry the legacy property-map shape.

The audit also has a retired-boundary ratchet: `CoordinateFactExport.ts` must
not regain raw content/property spelling.

## Decision

The remaining raw content/property boundaries do **not** block `v18.0.0`.

They ship as explicit residual compatibility risk because:

- v18's public promise is graph-model convergence plus migration evidence, not
total storage-plane retirement;
- the canonical v17 fixture proves zero public-read mismatches through the
migration wet-run path;
- production-runtime scratch replay and guarded finalization now exist for the
canonical path;
- a broad last-minute storage retirement would be riskier than shipping the
named compatibility boundary with an executable ratchet.

## Release Condition

The v18 public notes must say:

- legacy `_content*` and raw property-map compatibility storage still exists;
- the remaining compatibility files are audited by
`test/unit/scripts/v18-content-property-closeout-audit.test.ts`;
- any future boundary retirement must reduce the audited file set or add a new
explicit release note;
- end-to-end graph streaming reads and writes are not part of v18.

## Non-Goals

- Do not retire the remaining storage plane in this slice.
- Do not claim v18 has native Continuum witnesshood.
- Do not claim v18 has end-to-end graph streaming.

## Acceptance Criteria

- `RELEASE_v18-public-release-blockers.md` records the residual risk decision.
- `PROTO_content-attachment-plane-cutover.md` records that remaining storage
dependency is accepted for v18 and remains future work.
- `BEARING` marks slice 99 complete.

## Test Plan

- Run Markdown lint for edited docs.
- Run `git diff --check`.
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
---
cycle: 0248
task_id: V18_public_operator_release_notes
status: Complete
sponsors:
human: James
agent: Codex
started_at: 2026-05-25
completed_at: 2026-05-25
release_home: v18.0.0
bearing_task: 100
---

# V18 Public Operator Release Notes

## Hill

Freeze public operator notes for `v18.0.0` so the release says exactly what is
proved and exactly what is not.

## Design

The release notes live at `docs/releases/v18.0.0/README.md`. They translate the
release-candidate evidence into operator-facing instructions:

- what v18 adds;
- how to run dry-run, scratch, equivalence, and guarded finalization paths;
- how archive refs preserve rollback evidence;
- which risks are accepted;
- which claims are explicitly out of scope.

## Acceptance Criteria

- Public notes describe dry-run, scratch writing, equivalence gating,
production-runtime replay, guarded finalization, archive refs, and rollback
posture.
- Public notes state that remaining raw content/property compatibility storage
is accepted residual risk.
- Public notes state that end-to-end graph streaming reads and writes are a
v20 goal, not a v18 claim.
- Public notes keep Continuum language sibling-participant accurate.

## Test Plan

- Run Markdown lint for the release notes and this design doc.
- Run `git diff --check`.
Loading
Loading