Context
Tree line B4 of the #13158 map. The restore half of the §2.2 round-trip, scoped to the UNCHANGED-topology case (the fingerprint matches) — cross-topology + fail-closed is its own leaf (B5) because the semantics differ materially.
The Problem
Restore is where object permanence must hold: applying a captured v2 record back onto a live workspace must reconcile via SEMANTIC operations through the executor (move/split/tab to reach the target state) — never by document replacement that would remount panes (the §2.6 reparent-never-recreate promise extends to restores; a restore that flickers every pane is a contract violation wearing a feature's name).
The Architectural Reality
- Restore = diff(current, captured) → operation plan → executor application: the #14650 differ's categories map onto the eight-op vocabulary; the plan applies through
applyOperation sequentially with per-step error collection.
- Fingerprint gate: this leaf REQUIRES match (mismatch → defer to B5's path, structured not silent).
- Blocked_by: B1 (schema), B2 (capture, for round-trip fixtures), #14650 (the differ).
The Fix
One PR: the restore planner (pure: two documents → op plan) + executor application shell + round-trip unit specs (capture → mutate → restore → topology equals capture; pane identity stable across the whole trip — the never-remounted assertion at unit level via document itemId continuity).
Acceptance Criteria
Out of Scope
Cross-topology/fail-closed (B5) · UI (B7) · NL tool exposure (#14649 consumes).
Related
Parent #13158 (line B4) · blocked_by #14651/#14652/#14650 (edges land post-create) · authority ADR 0029 §2.2/§2.6. Sweeps: 03:31Z clean.
Origin Session ID: fa2a6fd5-7488-4af6-a0d2-3855c86003e4
Retrieval Hint: "perspective restore unchanged topology op plan round trip"
Context
Tree line B4 of the #13158 map. The restore half of the §2.2 round-trip, scoped to the UNCHANGED-topology case (the fingerprint matches) — cross-topology + fail-closed is its own leaf (B5) because the semantics differ materially.
The Problem
Restore is where object permanence must hold: applying a captured v2 record back onto a live workspace must reconcile via SEMANTIC operations through the executor (move/split/tab to reach the target state) — never by document replacement that would remount panes (the §2.6 reparent-never-recreate promise extends to restores; a restore that flickers every pane is a contract violation wearing a feature's name).
The Architectural Reality
applyOperationsequentially with per-step error collection.The Fix
One PR: the restore planner (pure: two documents → op plan) + executor application shell + round-trip unit specs (capture → mutate → restore → topology equals capture; pane identity stable across the whole trip — the never-remounted assertion at unit level via document itemId continuity).
Acceptance Criteria
Out of Scope
Cross-topology/fail-closed (B5) · UI (B7) · NL tool exposure (#14649 consumes).
Related
Parent #13158 (line B4) · blocked_by #14651/#14652/#14650 (edges land post-create) · authority ADR 0029 §2.2/§2.6. Sweeps: 03:31Z clean.
Origin Session ID: fa2a6fd5-7488-4af6-a0d2-3855c86003e4 Retrieval Hint: "perspective restore unchanged topology op plan round trip"