9.0 KiB
Compact palette implementation verification — 2026-09-10
Owner: Codex /root/palette_finish, assigned by root. Base branch
codex/release1-continuation, starting HEAD 1797516. No commit or push is
performed by this worker. Root owns native QA, guide changes, integration and the
shared release ledgers.
Read repository AGENTS.md, Gitea issue #1/comments, Wiki Home, open PR inventory
(empty), and harness/release-capella-basic-editing-20260907.md before editing.
Ownership and results are recorded in issue #1.
Changes
- Qualify the Iced
column!macro in the palette to remove E0659. - Borrow the projected scene when F2 finds its selected node instead of moving
its view out of
Arc, removing E0507. - Remove redundant or-pattern parentheses and the unused old
Editevent. - Reject non-finite placement coordinates before they can become inline-editor or recovery-draft geometry. Existing context/epoch guards continue rejecting cancelled or stale canvas gestures.
- Bound the inline name card to the remaining canvas height and make its content scrollable, so a wrapped performer title or validation error can remain inside the canvas. The card stays in the canvas stack and does not add a toolbar row.
Four new regression tests live in
crates/oa-desktop/src/app/architecture_authoring/tests.rs:
- OA and SA contextual creation preserves root ownership while adding the allocation and placement atomically; exact source bundle Undo/Redo and camera values are checked.
- A real Iced canvas F2 event requires canvas keyboard focus, dispatches the selected node to inline rename, retains its exact engineering name, and preserves placements/camera and exact source bundle Undo/Redo.
- Blank creation/rename submission and Escape never accept a placeholder or change the accepted source bundle.
- NaN/infinite canvas coordinates cannot poison draft geometry or recovery validation; the next valid click still opens naming.
Verification
All Cargo commands use .local/toolchain/env.ps1,
CARGO_BUILD_JOBS=1, --locked, and the worker's exclusive Cargo lease.
The first repaired build passed 15 existing architecture_ filtered tests,
with 569 filtered out. Log: .local/palette-focused-initial-20260910.log.
It exposed the unused Edit warning, subsequently removed. An initial new-test
compile caught an incorrect SourceBundle assertion; it was corrected before
the final tests.
The full current desktop suite passed 588 tests, 0 failures, 0 ignored:
cargo test --locked -p oa-desktop --bin arcadia-studio -- --test-threads=1.
Compilation/link took 44.58 s and test execution 113.14 s. This includes the
four new regressions and existing placement/recovery/connection/transition
coverage. Log: .local/palette-desktop-tests-20260910.log.
cargo build --locked -p oa-desktop --bin arcadia-studio passed in 2m 03s,
including root's updated guide text. Log: .local/palette-gui-build-20260910.log.
cargo fmt --all -- --check passed; its empty success log is
.local/palette-fmt-20260910.log.
Built executable:
C:\Users\User\Documents\Git\ARCADIA-Studio\.local\target-gnullvm\debug\arcadia-studio.exe
(109,516,288 bytes), modified 2026-09-10T17:42:00.6365121Z.
SHA-256: 1B47C096624BB1101BEC8B18E63CD601A259DFF8C1BEC24581C31C6B511F9411.
Root received this path/hash for an isolated native-QA staging copy.
cargo clippy --locked -p oa-desktop --all-targets -- -D warnings passed in
47.56 s. Log: .local/palette-clippy-20260910.log.
All assigned gates are complete. The worker released its Cargo lease and source freeze to root; subsequent workers must obtain the next lease from root. Source and report changes remain uncommitted for root's integration. No native UI was operated by this worker.
Scope and remaining acceptance
Automated application/canvas tests establish state transitions and exact history; they do not establish native focus, visual compactness or pointer ergonomics. Root must inspect the newly built executable at wide/minimum sizes, especially bottom/right-edge naming, long names, wrapped errors, expanded palette labels, Enter/Escape, F2, existing insertion/Locate and contextual allocation.
Canvas origin must remain stable through arming, naming, validation, commit and cancel; only the explicit palette width toggle may resize the canvas. Continue the independent basic-editing oracle, Save/reopen/recovery and OA/SA transition destination checks. No Windows release acceptance or Linux runtime acceptance is inferred from this implementation report.
Follow-up: stale submission rejection
Independent local review and the separate Codex-956atf host's issue #1 comment
#12 identified a remaining stale-submit defect after the first verification:
Submit set placing=true, then a stale document/revision guard returned with
only a status string. That hid the retained inline name card. Earlier passing
gates above did not cover this rejected-submit path.
Codex-9e8r6t /root/palette_finish resumed the assigned architecture scope and
sole Cargo lease. Guard rejection now restores placing=false and copies the
explanation into the card's error, without rebinding its document/revision or
changing its name, point or intent.
A new regression covers Create/Rename × stale document/revision (four cases),
repeated Submit without rebinding, actual inline-view presence, exact serialized
saved draft, accepted Project/source/revision/camera preservation, Escape, and
successful fresh creation with exact Undo after cancellation. The focused
architecture_ gate passed 20 tests, 569 filtered out, in 2.22 s after 48.63 s
compilation. Log: .local/palette-stale-submit-tests-20260910.log.
Root's native 1B47C096… check then found that the first Escape was consumed by
the focused Iced name field and only unfocused it. The original global keyboard
subscription intentionally ignores captured Escape; that policy remains intact.
A separate subscription is now present only while architecture naming is inline,
and dispatches a narrowly rechecked CapturedEscape event. The Cancel handler
also restores Cancelled · Select / move status; ordinary architecture Escape
delegates to that handler. The only app.rs edits are this subscription entry and
the pre-existing architecture Escape guard delegation.
Two additional regressions exercise actual Iced TextInput update/capture followed by the subscription mapper and App update: first-keypress Create/Rename cancel preserves exact accepted model/source/revision/camera, while absent architecture, armed placement and the existing-element picker do not react to captured Escape. Ignored Escape and captured Enter are not mapped by the new subscription.
The final architecture_ gate passed 22 tests, 569 filtered out, in 4.12 s
after 2m 19s compilation. Log: .local/palette-escape-tests-20260910.log.
The same locked desktop build command passed in 1m 12s; log:
.local/palette-candidate2-build-20260910.log. Workspace formatting check passed;
log: .local/palette-candidate2-fmt-20260910.log.
Second candidate at the same local build path: 109,518,848 bytes, modified
2026-09-10T17:59:06.6655664Z.
SHA-256: E6D6B1D975A11F242D288039E8F07D20E5474EA9C7CFCDE93F1318046EA548D4.
Root received this identity for a new staging copy. Strict desktop Clippy
(--locked -p oa-desktop --all-targets -- -D warnings) passed in 1m 07s;
log: .local/palette-candidate2-clippy-20260910.log. Cargo lease is released to
root again. No worker-owned Cargo process remains.
Root's existing native stage remains the earlier 1B47C096… binary and is not
overwritten. The full integrated suite is deferred until the other-host behavior
and forms changes are integrated; the earlier 588-test scope is preserved above.
Recovery autofocus follow-up on integrated source
Root's native candidate 2 confirmed that recovered inline naming was visible but
needed a click to focus. In app/checkpoints.rs, recovery now batches the
unchanged lint task with focus of architecture-name only when the restored
architecture state is inline. Armed tools, existing-element pickers and other
recovery contexts retain their existing focus behavior.
Two tests consume the actual returned Task stream, operate on mounted Iced name
and unrelated TextInputs, require lint completion and compare exact accepted
source/model, raw draft, revision and history. Seven recovery contexts include
Create/Rename and the non-inline/property/source controls. The integrated source
at 057eddd plus this checkpoint-only patch compiled in 4m 42s; all 13 checkpoint
tests passed in 4.84s, with 605 filtered. Scoped rustfmt and diff check passed.
Log: .local/checkpoint-autofocus-tests-20260910.log.
Test artifact SHA256:
D504C59BC2A5853F4FBE54A9DFA841DA0AC8DD2475342E45A91DBAA6533372B4.
Root copied this immutable artifact into
.local/integration-20260910/tests-057eddd/ and is executing its full 618-test
inventory separately while later scenario edits proceed. That result is pending;
it does not include the later F1 nullable-constructor correction or workspace
layout. No new GUI executable or native autofocus pass is claimed.