<?xml version="1.0" encoding="UTF-8"?>
<spec xmlns="https://vibevm.org/spec/1">
  <title id="root">NEXT temporary cross-cutting contract — Compatibility and migration strategy</title>
  <status stage="impl" state="plan"/>
  <p p="1"><fact id="NEXT-G06-SCOPE" status="spec/done">Frozen cross-cutting requirement source from refined plan revision 4 section 6. It complements domain contracts and must be promoted clause by clause; no product implementation or completion is asserted here.</fact></p>
  <p p="2"><fact id="NEXT-G06-U001" status="spec/done">Requirement: - D-003 means implemented migrations, not prose for an agent: strict source version detection → syntax-preserving parse → deterministic in-memory transform chain → validation → diff → explicit apply with CAS/recovery. Preserve choices/comments/user values; ambiguity returns typed NeedsInput before writes; no LLM. - Legacy files without an epoch use one recognized frozen old grammar, not guessed shape. Product/package 1.0.0 and machine format epochs are independent; old 1.0.0 binaries may lack new reader capabilities. New schema/capability handshake, not SemVer alone, protects them. - Machine contracts start JTD+registry+corpus+codegen. EPOCHS flags change only through governing owner/product protocol. Current prototype has no perpetual old-epoch support obligation, but transitions preserve identified user data and refuse unknown state. - SourceDescriptor migration covers project/bridge default modes, explicit Vibe source lists, ordinary CommonMark exports, XML-data/opaque files and collision identity. Never bulk parse foreign content as Vibe or rewrite XML-data through a spec converter. - D-002 public operations: historical inclusive producer behavior migrates explicitly; ordinary/scoped verify cannot create new producer work. Old parks finish with compatible reader or explicit abandonment; no relabelled source/evidence. - Consumer selections stored authored, lock derived. All incoming edges retained; default changes never silently reselect. Redbook continuity default MUP, WAL alternative; no global package conflict. - D-019 supersedes Redbook automatic edition bump. Current variants and both bridge-kind changes remain 1.0.0. Active own-version census includes owned manifests/constraints/docs, not third-party dependencies, upstream pins, historical receipts/test data or machine epochs. Future Redbook overwrite offers keep/new version; old captures retained. - External adapters migrate closed client fields to open capabilities without losing old receipts. Equal target bytes not adoption; expanded permissions need new grant. Missing/revoked package can be inspected/removed through retained host-owned operation data. - Derivatives have new identity, preserved origin and explicit rebase. Sealed compatibility declarations cannot prohibit owner's separate resource. Execution/deploy reauthorized separately. - D-013 current mode prototype; publication, version label, elapsed time or usage does not graduate it. D-015 current A; B code/policy tests available, live enablement remains owner-only.</fact></p>
  <fence lang="text" p="3">- D-003 means implemented migrations, not prose for an agent: strict source version detection → syntax-preserving parse → deterministic in-memory transform chain → validation → diff → explicit apply with CAS/recovery. Preserve choices/comments/user values; ambiguity returns typed NeedsInput before writes; no LLM.
- Legacy files without an epoch use one recognized frozen old grammar, not guessed shape. Product/package 1.0.0 and machine format epochs are independent; old 1.0.0 binaries may lack new reader capabilities. New schema/capability handshake, not SemVer alone, protects them.
- Machine contracts start JTD+registry+corpus+codegen. EPOCHS flags change only through governing owner/product protocol. Current prototype has no perpetual old-epoch support obligation, but transitions preserve identified user data and refuse unknown state.
- SourceDescriptor migration covers project/bridge default modes, explicit Vibe source lists, ordinary CommonMark exports, XML-data/opaque files and collision identity. Never bulk parse foreign content as Vibe or rewrite XML-data through a spec converter.
- D-002 public operations: historical inclusive producer behavior migrates explicitly; ordinary/scoped verify cannot create new producer work. Old parks finish with compatible reader or explicit abandonment; no relabelled source/evidence.
- Consumer selections stored authored, lock derived. All incoming edges retained; default changes never silently reselect. Redbook continuity default MUP, WAL alternative; no global package conflict.
- D-019 supersedes Redbook automatic edition bump. Current variants and both bridge-kind changes remain 1.0.0. Active own-version census includes owned manifests/constraints/docs, not third-party dependencies, upstream pins, historical receipts/test data or machine epochs. Future Redbook overwrite offers keep/new version; old captures retained.
- External adapters migrate closed client fields to open capabilities without losing old receipts. Equal target bytes not adoption; expanded permissions need new grant. Missing/revoked package can be inspected/removed through retained host-owned operation data.
- Derivatives have new identity, preserved origin and explicit rebase. Sealed compatibility declarations cannot prohibit owner's separate resource. Execution/deploy reauthorized separately.
- D-013 current mode prototype; publication, version label, elapsed time or usage does not graduate it. D-015 current A; B code/policy tests available, live enablement remains owner-only.</fence>
  <p p="4"><fact id="NEXT-G06-U002" status="spec/done">Requirement: - M-14 introduces target/executor/platform/root/principal/generation fields before changed selection/lifecycle/adapter consumers. Old local receipts are explicitly bound or remain legacy; never replayed into another HOME/rootfs by rewriting a path. - Source-package shippable tree semantics stay; runtime payload manifest describes build/prebuilt outputs. Legacy binary CLI migrates to shared validation. Tool runtime, provider ABI and compiler output target are distinct. - New environment consumers can exist without a Git/coding project; existing workspace manifests/layout and bare install contract remain. Central layout module owns new paths. - Foreign backend version/DB/file/signature semantics stay native; exact mirror captures preserve origin. D-024 changes no foreign authorship or package hashes. Nix-like design does not require Nix language/runtime or /nix/store.</fact></p>
  <fence lang="text" p="5">- M-14 introduces target/executor/platform/root/principal/generation fields before changed selection/lifecycle/adapter consumers. Old local receipts are explicitly bound or remain legacy; never replayed into another HOME/rootfs by rewriting a path.
- Source-package shippable tree semantics stay; runtime payload manifest describes build/prebuilt outputs. Legacy binary CLI migrates to shared validation. Tool runtime, provider ABI and compiler output target are distinct.
- New environment consumers can exist without a Git/coding project; existing workspace manifests/layout and bare install contract remain. Central layout module owns new paths.
- Foreign backend version/DB/file/signature semantics stay native; exact mirror captures preserve origin. D-024 changes no foreign authorship or package hashes. Nix-like design does not require Nix language/runtime or /nix/store.</fence>
  <p p="6"><fact id="NEXT-G06-U003" status="spec/done">Requirement: - D-025/D-026 makes service/model exposure part of every feature, including legacy CLI-local code. Keep old tree/MCP epochs as explicit adapters; new fields/states negotiate a new schema. Prototype version 1.0.0 does not prove client reader compatibility. - Extract shared analysis/actions without changing domain authority; PROP-032 universal graph and rename-stable identity claims are reconciled with actual FQID/capture/occurrence semantics. A composed read model never replaces authored manifests or package/evidence stores. - Uniform strict validation replaces silent wrong-type defaults; text-only post-effect failures migrate to phase/partial/unknown/recovery envelopes. Domain journals remain authority. - Client overlays are disposable unsaved working state, not package/lock/installed truth. Saved-state CAS and identity transitions govern actual refactoring; old captures/receipts and foreign resources retain identity. - Existing trace storage policy migrates separately from boot-size policy. Observer completeness/retention is visible; query never opens a writer or recreates an absent trace.</fact></p>
  <fence lang="text" p="7">- D-025/D-026 makes service/model exposure part of every feature, including legacy CLI-local code. Keep old tree/MCP epochs as explicit adapters; new fields/states negotiate a new schema. Prototype version 1.0.0 does not prove client reader compatibility.
- Extract shared analysis/actions without changing domain authority; PROP-032 universal graph and rename-stable identity claims are reconciled with actual FQID/capture/occurrence semantics. A composed read model never replaces authored manifests or package/evidence stores.
- Uniform strict validation replaces silent wrong-type defaults; text-only post-effect failures migrate to phase/partial/unknown/recovery envelopes. Domain journals remain authority.
- Client overlays are disposable unsaved working state, not package/lock/installed truth. Saved-state CAS and identity transitions govern actual refactoring; old captures/receipts and foreign resources retain identity.
- Existing trace storage policy migrates separately from boot-size policy. Observer completeness/retention is visible; query never opens a writer or recreates an absent trace.</fence>
</spec>
