Files
ARCADIA-Studio/harness/release-palette-implementation-20260910.md

9.0 KiB
Raw Permalink Blame History

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 Edit event.
  • 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:

  1. 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.
  2. 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.
  3. Blank creation/rename submission and Escape never accept a placeholder or change the accepted source bundle.
  4. 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.