2026 02 27_roadmap_lane_19_readiness_plan - mark-ik/graphshell GitHub Wiki
Date: 2026-02-27
Status: Active (docs-only execution lane)
Lane: lane:roadmap
Tracker focus: #19 (TwoD↔ThreeD ViewDimension hotswitch)
This plan defines a merge-safe roadmap lane that can proceed while stabilization and viewer/compositor work continue in parallel.
The lane is intentionally docs/planning only and avoids runtime hotspots:
graph_app.rsrender/mod.rsshell/desktop/ui/gui.rs- compositor implementation files under
shell/desktop/workbench/*
#19 remains deferred because core prerequisites are not fully closed.
The blocker is not concept definition; the blocker is execution-order risk across active architecture lanes.
#19 remains blocked until all four prerequisites below are closed.
- Stabilization closure on camera/input/focus
- Why it blocks: hotswitch semantics are not verifiable while core interaction is unstable.
- Owner lane:
lane:stabilization(#88).
- Surface composition pass contract + overlay policy closure
- Why it blocks:
ThreeDmode switching must not regress per-mode overlay/focus visibility behavior. - Owner lanes:
lane:stabilization(#88),lane:spec-code-parity(#99).
- Runtime-authoritative tile render mode behavior
- Why it blocks: viewer/render path state must remain deterministic during mode transitions.
- Owner lane:
lane:viewer-platform(#92).
- Persistence + degradation guarantees for dimension state
- Why it blocks: snapshot restore must degrade safely when
ThreeDsupport is unavailable. - Owner lane:
lane:roadmap(spec), then implementation lanes.
These slices are explicitly chosen because they do not require code changes in active hotspot files.
-
R1: completed (docs) — prerequisite checklist is tracked inPLANNING_REGISTER.mdunder lane roadmap quick status, with owner/status/evidence/closure fields. -
R2: in progress — acceptance contract drafted in../canvas/2026-02-27_viewdimension_acceptance_contract.md. -
R3: completed (docs) — canonical terminology is aligned indesign_docs/TERMINOLOGY.mdforViewDimension,ThreeDMode,ZSource,Derived Z Positions, and the deterministicDimension Degradation Rule. -
R4: completed (docs seed) — issue-ready child slice templates are defined below underR4.1..R4.4.
Output
- Add a readiness checklist to planning docs with one item per prerequisite.
- Track each item as
open / partial / closed. - Require explicit closure evidence links before moving
#19out of blocked state.
Done gate
-
#19has a visible prerequisite checklist with owners, evidence links, and closure criteria.
Reference draft:
design_docs/graphshell_docs/implementation_strategy/graph/2026-02-27_viewdimension_acceptance_contract.md
Output
- Define acceptance criteria for
TwoD↔ThreeDparity as a single contract, including:- interaction continuity (pan/zoom/focus)
- selection continuity
- no silent state corruption on toggle
- deterministic fallback to
TwoDwhenThreeDis unavailable
Done gate
- Contract is documented in strategy docs and referenced by the future implementation issue stack.
Output
- Align wording across planning docs and canonical terminology on:
- persisted dimension state ownership
- fallback behavior when
ThreeDcannot render - what is ephemeral vs persisted (
zpositions remain derived/ephemeral)
Done gate
- No contradictory statements remain between roadmap-facing and terminology docs for dimension fallback behavior.
Output
- Prepare issue-ready child slices under
#19(no code):- state transition contract + reducer checkpoints
- render pipeline integration checks
- persistence/degradation tests
- UX/shortcut and user feedback polish
-
Scope:
ViewDimensiontransition intents and reducer invariants forTwoD↔ThreeD. -
Runtime hotspots:
graph_app.rsreducer paths; graph-view state transition helpers. -
Acceptance gates:
-
SetViewDimensiontransition paths are explicit and deterministic. - Selection/camera continuity checks are covered by focused tests.
- Unsupported
ThreeDpaths emit explicit fallback/degradation outcomes.
-
-
Scope: render-mode integration for
ViewDimensiontransitions across graph-view rendering paths. -
Runtime hotspots:
render/mod.rs; graph-view render dispatch and interaction overlays. -
Acceptance gates:
- Overlay/focus behavior remains legible across
TwoD↔ThreeDtransitions. - Render path selection is diagnostics-visible and non-silent on fallback.
- No regression in active graph-view interaction routing.
- Overlay/focus behavior remains legible across
-
Scope: restore semantics for persisted
ViewDimensionand deterministic fallback whenThreeDis unavailable. -
Runtime hotspots: persistence/restore flow in
graph_app.rsand related persistence helpers. -
Acceptance gates:
- Persisted
ViewDimensionrestores when supported. - Unsupported
ThreeDrestores degrade deterministically toTwoD. -
(x, y)continuity is preserved; derivedzpositions are recomputed/ephemeral.
- Persisted
- Scope: user-facing mode toggle affordances and mode/fallback feedback.
- Runtime hotspots: command/keybinding dispatch and graph-view mode feedback surfaces.
-
Acceptance gates:
- Mode-switch actions are discoverable from command/keybinding surfaces.
- Fallback/degradation reason is visible to the user (not diagnostics-only).
- No ambiguous "no-op" behavior during mode toggles.
Done gate
- Child issue templates exist with scope, hotspots, and acceptance gates.
- Keep roadmap lane changes confined to
design_docs/**. - Do not bundle runtime refactors with roadmap docs updates.
- Prefer small doc PRs with one closure target each (
R1..R4). - If any item requires touching runtime hotspots, spin it out to the owning non-roadmap lane.
#19 can move from blocked to implementation-ready only when:
- Stabilization evidence closes interaction regressions required to validate hotswitch behavior.
- Viewer/compositor pass and render-mode contracts are no longer changing in incompatible ways.
- The acceptance contract and persistence/degradation rules are canonical and non-contradictory.
- Child implementation issues are created and sequenced to avoid hotspot collisions.
Until then, roadmap work proceeds as planning and issue-shaping only.