5.7 KiB
Projection switching and canvas inspection
Branch contribution for #42
and #43,
based on published preview 715036e132677dd2bc2fb37ed316d93dc9987aec.
Owner: Codex-ytr83r, session 01a0d706. This is a candidate, not integrated
acceptance or a replacement release. Live status belongs to the linked issues.
Decision and alternatives
String projections are presentation filters over one authored diagram. Preserve opposite-layer placements, routes and visibility selections when switching away from Traceability; ordinary projections render only their declared layer. This extends the existing documented preservation of inapplicable element kinds. Deleting incompatible placements loses authored arrangements; automatically creating a second view fragments the user's work and makes repeated switching ambiguous. Neither alternative satisfies reversible view switching as directly.
Missing identities and wrong reference kinds/families remain errors. StateMachine and Scenario keep strict typed membership. Frozen versions 1–6 retain their old layer admission before migration. The current version-7 correction adds no fields or wire shapes; older version-7 readers may reject newly admitted latent records. That compatibility limit must remain explicit until coordinated version adoption. The explicit RelocateNode operation continues to require a compatible destination layer or Traceability view; retaining latent records is distinct from moving a placement into an incompatible destination.
Canvas inspection carries the originating route context and preserves view/layer. Explicit model navigation continues to follow the target layer. Draft validation and stale-context rejection apply before inspection. Existing production group selection already retained the canvas; fallback edge/port selection and canvas context actions require the correction. The published Windows baseline reproduces both reported failure states; source diagnosis and those baseline results do not establish patched acceptance. Contextual child/relationship creation must derive the semantic layer from the selected object, while root creation continues to use the active perspective.
Acceptance
- OA and SA switches through all ordinary projections preserve the complete model except projection, source/JSON/bundle round trips, and one-step Undo/Redo.
- Returning to Traceability restores applicable placements; parent, port and edge projection never leaks an opposite-layer record into an ordinary view.
- Invalid references and State/Scenario membership still reject; source and JSON versions 3–6 retain their old layer checks and located diagnostic identities.
- Actual canvas clicks, context Properties/Hide and explicit navigation exercise the intended selection distinction; stale packets and invalid drafts preserve selection and source/history.
- Windows native selection, projection switching, Save, Undo/Redo and fresh reopen are checked against predeclared full-model/source expectations. Compilation and automated handler tests do not substitute for this acceptance.
Linux remains excluded by the existing user pause. Independent design critique
identified saved visibility selectors and frozen migration as additional admission
paths; both are included. At published candidate 603a59c1785dbcca324dae063ecc3405d9519a30, 41 targeted core checks pass: legacy admission (2), projection switching (3), review regressions (15), source-6 view contract (8), and state diagrams (13). Tracked inputs were unchanged across the run. Whole-workspace formatting also passed at that commit. The first 0341bca core attempt failed a generated-UUID test oracle; explicit fixture identities corrected the evaluator, without relaxing the admission assertion.
The desktop attempt at 603a59c was deliberately interrupted before test execution after independent source review found canvas Properties redispatch and contextual relationship/child semantic-layer defects. Its source inputs remained unchanged; no desktop passing result is claimed. The Properties issue arose from fixing explicit navigation to an already-inspected opposite-layer object. Keep both regressions: contextual Properties stays in the view, explicit navigation follows the object's layer.
Published-preview executable SHA256 2c03bd6cc3f1110c219e4f57ab94874a121590f83779239a93289b7170664399 reproduces edge selection changing SA to OA, and Architecture switching refused with diagram_layer. The isolated valid fixture remained byte-for-byte unchanged after the trial. An earlier fixture used reserved alias capability and was rejected; it was corrected before either reproduction. Initial native-dialog capture/input failures also remain separate from application acceptance. Independent evidence review confirmed the resulting screenshot states and persisted byte equality; screenshots alone do not capture the complete action sequence or transient state history.
Candidate Windows GUI save/history/reopen, HTTP regression, broader affected suites and actual rendering acceptance remain outstanding. Raw local evidence is not yet a peer-consumable handoff; publish the consolidated evidence before integration.
Scope boundary: contextual relationship forms retain the canvas while opening; successful Apply retains the existing explicit post-review navigation. The generic child-creation handler is tested for containment and allocation, but the separate architecture palette/performer workflow still offers creation kinds for the diagram layer. Thus an OA performer displayed in an SA Traceability view has no Add activity menu entry; this inherited limitation is not claimed repaired here.