6.0 KiB
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
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 and
candidate source handoff
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.
Evidence and exact identity
Archive manifest
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 records those engineering distinctions. The separately adopted allocation drag contract and review address the user's activity-movement issue; they are not implemented by this canvas gate.