165 lines
9.0 KiB
Markdown
165 lines
9.0 KiB
Markdown
# 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.
|