63 lines
5.7 KiB
Markdown
63 lines
5.7 KiB
Markdown
# Projection switching and canvas inspection
|
||
|
||
Branch contribution for [#42](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/issues/42)
|
||
and [#43](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/issues/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.
|