Skip to content

Release retrospective: v19.0.0 #805

Description

@flyingrobots

Release retrospective: v19.0.0

Released

v19.0.0 is the intentional graph-first-to-runtime application break and the completion of the emergency storage-ownership/performance pivot.

Released scope:

  • Runtime as the sole root runtime value, with type-only Lane, Intent, Observer, Observation, Reading, Evidence, Tick, settlement, and Receipt contracts.
  • Wesley-generated validated Intent and Observer SDKs; lazy single-execution Observations; runtime-backed strands and revalidated settlement plans.
  • Explicit /advanced, /diagnostics, /charts, and /testing surfaces, with storage, legacy, and browser absent from the package export map.
  • git-cas 6.5.5 ownership of CAS objects, pages, bundles, cache lifecycle, retention, and physical diagnostics; WARP-owned duplicate caches and raw object writers removed or prohibited by CI.
  • A one-shot git-warp-v18-to-v19 retained-substrate migrator under scripts/v18-to-v19/, with non-mutating disposable rehearsal, compare-and-swap promotion, additive recovery refs, and authentic published-v18 fixtures. No v18 compatibility runtime remains in product code.
  • Versioned cold/warm/incremental materialization and oversized Observer gates, plus an authentic published-v18 versus migrated-v19 retained-read comparison.
  • CLI and MCP vocabulary aligned with Runtime/Lane/Intent/Observation/Reading/Receipt.
  • npm, JSR, GitHub Release, annotated tag, release workflow, and exact-main performance evidence aligned on one commit.

Not released

  • The v18 graph-first application API is not retained or hidden under another subpath. Consumers must migrate application code deliberately.
  • Think itself was not switched to v19 as part of this package release. Its graph-first application layer and durable repository should be migrated together in an isolated rehearsal before the live writer resumes.
  • Common-basis braid validation, WARP DRIVE, WARP-TTD, offline bundles, live Echo/git-warp suffix exchange, and generic legacy compatibility remain outside v19 as stated by the milestone.
  • Universal performance claims were not made. The release witnesses bounded, named workloads and memory envelopes.

Plan vs actual

Planned thesis: ship a boring Runtime/Lane/Intent/Observer/Observation/Reading/Receipt boundary and major performance improvements from corrected git-cas ownership.

Actual release: matched the thesis, but only after two release-blocking discoveries changed the implementation path.

  1. A real Think probe proved that npm linking alone could not bridge retained v18 blob-backed state to the v19 asset-handle boundary. The release stopped, and the normal one-shot migration model was implemented under scripts/v18-to-v19/ instead of preserving legacy runtime code.
  2. The first authentic v18 comparison showed only about 4–5% lower wall time. The release stopped again. Observation basis preparation, pinned coordinate optic reuse, and immutable captured-basis caching were optimized until the exact merged-main gate proved a material improvement.

The final train spans 290 commits, 51 first-parent merge commits, and 1,177 changed files (87,737 insertions, 47,334 deletions) from v18.2.1 to v19.0.0. The v19 milestone closed 56 issues and reached zero open release items before tagging.

Evidence

Performance witness

Exact merged-main, Linux x64, Node 22.23.1, Git 2.54.0:

  • Authentic approximately 2 MiB, 18-patch retained-v18 fixture; one-shot migration reported separately at 3,281.1 ms.
  • Sixteen retained properties at one pinned coordinate, five measured cold and warm runs per runtime after warmup.
  • Cold: 1,251.4 ms v18 → 861.9 ms v19 (31.1% lower wall); 657.5 ms → 525.7 ms operation CPU (20.1% lower).
  • Warm: 1,239.0 ms v18 → 841.4 ms v19 (32.1% lower wall); 652.3 ms → 513.6 ms operation CPU (21.3% lower).
  • Git commands: 322 → 172 (46.6% fewer) in both scenarios.
  • Oversized proof: all 128 Readings / 256 MiB logical property data under a 64 MiB old-space cap, 35.2 MiB peak heap, zero whole-index scans, zero full materializations, hostile full-materialization control OOM as required.

Went well

  • Real consumer evidence stopped the release instead of being dismissed as a linking problem.
  • Legacy migration code stayed in the one-shot script boundary; the v19 product surface remained clean.
  • The fixture stayed small: approximately 2 MiB, not a checked-in copy of a live or gigabyte-scale mind.
  • The first weak benchmark result was accepted as RED evidence and drove a real runtime optimization rather than a weaker threshold.
  • Exact-main performance, release preflight, tag identity, registry publication, and post-publication import/export checks all agreed.
  • No amend, rebase, force, draft PR, or legacy compatibility shortcut was used.

Improve next time

  • Curate the release synopsis before generated PR history. The generated v19 list surfaced superseded openWarp/Timeline prototypes and required a post-publication release-note prepend. Tracked by Publish curated release notes before generated PR history #803.
  • Put the goalpost reference into the release PR body at creation time. PR Release v19.0.0 #802 had one metadata-only failed check before Related: #758 was added. Tracked by Reference the goalpost when opening release PRs #804.
  • Keep the disposable registry smoke's working directory explicit. The post-publish smoke initially installed into /tmp; exact birth-time checks allowed safe removal of only the created paths, and no repository or user data was affected.
  • Preserve the intentionally redundant final-main and tag verification gates, but investigate artifact reuse only if it can retain exact-SHA, package-content, and registry-publish guarantees.

Fallout issues

Next release recommendation

Do not start a v20 feature train immediately. First migrate one real graph-first consumer—Think is the obvious candidate—through both layers in an isolated copy:

  1. stop all writers and preserve the live repository;
  2. run the packaged v18-to-v19 rehearsal and inspect its recovery plan;
  3. migrate the application from graph-first imports/patch callbacks to generated Intents and bounded Observers;
  4. promote the retained substrate only after disposable reads, writes, receipts, doctor, and recovery tests pass;
  5. resume the live writer only after compare-and-swap preconditions are rechecked.

Treat that as consumer validation, not a reason to reintroduce v18 runtime code into git-warp.

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:releasePrimary work area: release.priority:nextNext in line after active work.status:availableOpen and available for prioritization; not blocked or actively in progress.type:releaseRelease operation or release gate work.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions