2026 02 27_viewdimension_acceptance_contract - mark-ik/graphshell GitHub Wiki
Date: 2026-02-27
Status: Draft (roadmap docs lane, implementation pending)
Lane: lane:roadmap
Scope: Acceptance contract for TwoD ā ThreeD mode transitions in Graph View panes.
This contract defines the minimum acceptance behavior for ViewDimension transitions so #19 can move from blocked planning into implementation-ready issue slices.
This document is contract/spec only. It does not authorize runtime hotspot edits by itself.
-
ViewDimensionis the per-Graph-View mode state (TwoDorThreeD { mode, z_source }). -
zpositions are derived/ephemeral runtime data, not independently persisted state. - Persistence ownership is the Graph View state snapshot boundary (not per-frame ad hoc UI metadata).
- Degradation mode must be explicit when 3D rendering is unavailable.
Terminology aligns with:
-
design_docs/TERMINOLOGY.md(Graph View,Camera,Degradation Mode,TileRenderMode) - Existing
ViewDimension/ZSourcecode comments ingraph_app.rs.
A TwoD ā ThreeD transition is accepted only if all criteria below hold.
- Pan/zoom ownership remains deterministic before and after transition.
- Camera commands (
fit,fit selection, keyboard zoom) continue to target the active graph view. - Transition must not require extra focus-repair clicks for standard camera interaction.
- Selected-node set and primary selection are preserved across transition.
- Selection visualization may change by mode, but selection truth may not reset silently.
- Lasso/selection command routing remains valid for the active graph view.
-
ViewDimensionchanges must be explicit reducer-owned state transitions. - Transition must not mutate unrelated graph topology state.
- Failures or unsupported mode paths must produce explicit degraded/fallback outcome, not silent no-op.
- Persisted
ViewDimensionintent is restored when supported. - If 3D is unavailable on restore/runtime, behavior deterministically degrades to
TwoD. -
(x, y)graph positions remain stable across degrade/restore transitions. - Ephemeral
zderivation is recomputed on 2Dā3D entry and discarded on 3Dā2D.
- Mode transitions emit diagnosable events/channels for success/fallback/block paths.
- Degradation reason is observable (unsupported capability, unavailable backend, blocked path, etc.).
- Acceptance evidence must include targeted diagnostics and tests, not only manual repro notes.
R2 is considered complete when all evidence classes are linked:
-
Contract reference links
-
PLANNING_REGISTER.mdreadiness checklist references this contract. -
canvas/2026-02-27_roadmap_lane_19_readiness_plan.mdreferences this contract under R2.
-
-
Issue-stack linkage
- Future child issues under
#19map to each contract area:- transition semantics,
- render integration,
- persistence/degradation tests,
- UX feedback/shortcuts.
- Future child issues under
-
Verification artifacts (implementation phase)
- Focused tests for transition continuity and persistence/degradation behavior.
- Diagnostics proof for success/fallback/block outcomes.
- Implementing 3D rendering details.
- Altering compositor pass contract definitions.
- Runtime hotspot refactors in
graph_app.rs,render/mod.rs,shell/desktop/ui/gui.rs, orshell/desktop/workbench/*as part of this docs slice.
This contract satisfies the roadmap requirement to define a single acceptance target for ViewDimension behavior. #19 remains blocked until other prerequisites in the roadmap readiness checklist are also closed.