# Shared behavior canvas: Windows union gate Codex-956atf `/root`, 2026-09-11. The integrated camera, permanent palette and editor overlay pass **729/729 desktop tests** at source `ff0175488ac57a92d401b00a0e4542582a82d8e9`, with a warning-free compiler and 257.42 seconds of test execution. This is a closed test checkpoint, not native or release acceptance. The complete OA/SA goal remains unfinished. ## Integration and review The reviewed isolated candidate `fb1da912c9951f33feed2fad9ad689bc46cd20d0` was applied from common ancestor `c0e66f94` to root `638d06c`. Integration `6969c82` retains current parent focus/session recovery, reference chooser and boxed workflow behavior. Both scenario-parent and canvas focus owners wrap the actual App view. Existing parent regressions were reconciled with the real Iced UserInterface/Cache harness rather than obsolete synthetic canvas scroll views. The [independent union review](release-behavior-canvas-union-review-20260911.md) found no actionable integration regression against `06ec962`. It independently checked installed Iced message/action ordering and nested overlay operations; its source-only verdict does not claim execution. Earlier [R123 review](release-behavior-canvas-r123-review-20260911.md) and [candidate source handoff](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/src/commit/fb1da912c9951f33feed2fad9ad689bc46cd20d0/harness/release-behavior-canvas-r123-source-20260911.md) retain their respective scopes. Candidate publication initially rejected because remote `113fb8b` contained the user's instruction sync. Its only changes were AGENTS/PROJECT_GOAL, already identical to root. Merging them in the isolated worktree produced `ca19ad2` with unchanged candidate Rust sources. Normal push and exact remote readback passed; neither history was force-pushed or overwritten. ## Executed gates and corrections All commands used Rust/Cargo 1.98.1, Windows gnullvm, task-local LLVM-MinGW and `CARGO_BUILD_JOBS=1`. Desktop is a **binary** target: use `--bin arcadia-studio`, not `--lib`. Linux/WSL actions remain user-paused. | Source | Command after `cargo test --locked -p oa-desktop --bin arcadia-studio` | Result | | --- | --- | --- | | `06ec962` | `canvas_workspace::tests -- --test-threads=1 --nocapture` | 2 passed | | `06ec962` | `production_ -- --test-threads=1 --nocapture` | 22 passed: all 17 new mounted cases plus 5 existing cases | | `06ec962` | `behavior::scenario::workspace::tests:: -- --test-threads=1 --nocapture` | 21 passed, including all five parent-focus gates | | `ff01754` | `-- --test-threads=1` | 729 passed, 0 failed/ignored/filtered; 257.42 s | | `82fd0ac` | `guide::tests -- --test-threads=1` | 3 passed after guide copy refresh | These scopes overlap and must not be added together. The full test compile took 23.89 seconds. Source `06ec962` corrected two test API errors from the first compile: explicit Headless screenshot trait selection and the existing boxed semantic event constructor. `ff01754` narrowed the two concrete App-dependent Scope methods to crate visibility, removing the resulting traceability visibility warnings. All 518 full-gate inputs match Git bytes exactly. The initial mistaken `--lib` invocation failed before compilation. Subsequent strict all-target Clippy at `82fd0ac` reported one collapsible focus conditional; `abffa4b` preserves its condition and behavior with a single if. Its next Clippy run reached the production target and found four obsolete variants: First, Canvas scroll area, and the two Tools shelves. Therefore **strict Clippy has not passed on this contribution**, and this record does not certify the subsequent cleanup. Current ownership and validation belong in [issue 2](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/issues/2). ## Evidence and exact identity [Archive manifest](experiments/canvas-union-windows-20260911/manifest.json) identifies 45 exact payloads totaling 1,479,172 bytes, including successful and failed command logs/results, input manifests and the original 18 changed Rust inputs used by the `06ec962` compiler before LF normalization. Manifest SHA256: `FF470BD8160C89B1ECFECE7AAF72AA6A7F4D3D722C69F191FCA07FAC5169695F`. The `06ec962` raw Rust files differed from their Git blobs only in CRLF/LF; their original bytes and both hashes are preserved. Before the full gate, those owned files were normalized to the repository's existing LF policy. The later 518-input manifest is byte-identical to `ff01754`, SHA256 `966B125EC8862D0E48ED98692BC3DC380F0242007EB4C018621A9FDE844562EB`. The immutable local full-gate test executable is 139,577,856 bytes, SHA256 `63DE2FF7FB4C5E49C1E59378EAE24D77471AF35FADADFAEC5871956E7B2E0D8D`. Its metadata is archived; the executable itself is not distributed in this evidence folder. The full log is 83,584 bytes, SHA256 `A6D2E0D39B45246D88F1F5B61117CDB0897B23A0D072238ECA7A5550495BD421`. The task-local adjacent libunwind DLL is 190,464 bytes, SHA256 `AA282FA47BB2C4E210CEA5E470CDBDCA58568F0BE0BC73E404D86AB9CD95EF6A`. This records copied artifact identity, not a newly captured loaded-module trace. ## Practical limits The tests exercise actual App widgets, focus operations, drawn focus borders, camera transforms, stale gestures, caller return and exact source/history. Native dialogs, subscriptions, OS input/focus, complete accessibility and current GUI usability remain separate. Forced palette-overflow tests use 1100x420; they do not prove native overflow at the application's 1100x700 minimum. Picker tests inject cancellation at the external dialog boundary. Process free placement, saved scenario lane arrangement, wrapping/operand transfer, full endpoint manipulation and the peer B4 renderer union remain outside this camera milestone. The [Capella comparison](release-capella-direct-manipulation-gap-20260911.md) records those engineering distinctions. The separately adopted [allocation drag contract](release-activity-allocation-drag-contract-v2-20260911.md) and [review](release-activity-allocation-drag-review-20260911.md) address the user's activity-movement issue; they are not implemented by this canvas gate.