88 lines
7.3 KiB
Markdown
88 lines
7.3 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.
|
||
|
||
The frozen full-workspace attempt at `3a7221b80cfa7924921b3b77f2dd35550247f595`
|
||
closed with unchanged tracked inputs and Cargo exit101: core/CLI groups passed616
|
||
with1 existing ignore; desktop passed1538, failed1 and retained7 existing ignores.
|
||
The sole failure was the new preferred-view test's setup, before child creation:
|
||
`Message::Projection` edits and selects the diagram, so the test's expectation
|
||
that the parent remained selected was false. An exact isolated rerun and source
|
||
review confirmed this. The correction initializes the projection in the fixture,
|
||
then uses explicit parent selection and the ordinary diagram picker to establish
|
||
independent semantic inspection. Production navigation is unchanged. All other
|
||
new canvas tests passed, including Properties, explicit navigation, relationship
|
||
Apply/history, child/root semantic layer, and projection/source/history checks.
|
||
The command remains a failed workspace run; server tests and doctests were not
|
||
reached. Its planned Clippy/build stages were consequently not launched.
|
||
|
||
The same source's formatting check found one multiline icon call requiring a
|
||
single line. The follow-up applies that formatting correction and adds in-app
|
||
help describing preserved cross-layer content and contextual inspection. Those
|
||
are the only production-file changes after the full suite; the remaining change
|
||
corrects the test setup. Follow-up canvas/server/doctest, formatting, strict
|
||
Clippy and native-build results must be recorded separately, with their exact
|
||
source pin. Reuse successful unchanged core/desktop evidence within these limits;
|
||
do not turn the failed workspace command into a pass.
|
||
|
||
Candidate Windows GUI save/history/reopen, HTTP regression, the corrected test
|
||
and final checks 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.
|