# 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.