Files
ARCADIA-Studio/harness/release-canvas-followup-20260912.md

8.7 KiB

Canvas correction evidence — 2026-09-12

This is a branch-specific correction checkpoint, not release acceptance. Live ownership and acceptance remain in Gitea 15, 21 and 25.

Implementation and evidence boundary

  • 24bb248 preserves an existing diagram keyboard owner across revision changes and passive Save, while suspended input cannot acquire ownership or retain a held gesture. The Windows app::diagram gate passed 22 tests and failed the persisted state-placement Save/Undo regression. That failure remains archived; this source did not satisfy the focus acceptance criterion.
  • e2c027e fixes the underlying state view's positional Iced tree replacement: optional placement controls now occupy a stable child slot ahead of the canvas. Hide/Undo no longer changes the canvas widget's position in its parent. The strengthened test keeps the actual Save/Undo/Delete sequence and observes focus through each intermediate redraw. The later source83 gate and native trial below verify this correction.
  • 956a584 derives activation segments from typed call/receiver/scope identities and compatible reply correlations. It uses distinct columns for overlapping calls and exact activation endpoints for replies, including self-calls. The source includes twelve production-scene tests, passed in the source83 gate. Its native trial below found a separate paint-order defect. Hit tests at small zoom do not establish raster legibility. The 12-unit bar width and 6-unit offset remain a visual candidate until the actual application has been inspected.
  • b25065c removes the redundant Canvas and Focus canvas/Restore panels buttons. Pointer editing already worked without activation. Strict all-target Clippy at combined source e2c027e54c6be0d051820374f669c52278d90f97 failed on two obsolete CanvasEvent::Focus variants used only by tests. The 533 recorded inputs were unchanged. Removing the stale panel-mode paths and updating dependent tests is required before a new gate; warnings are not suppressed.

40154983cc86ac0a45b062d7381124f262adbb3d removes the obsolete panel event/state, App whitelist/dispatch and conditional panel layout, plus the unused one-way toolbar focus route. F6, Tab, direct pointer ownership and text-field protection remain. Tests now exercise the surviving Zoom/Details/tool controls while keeping pending-draft, history, stale-input and caller-return checks. Current guide text no longer instructs users to press removed buttons.

A fresh independent source review found no actionable defect in the bounded correction and verified the state picker's stable Shrink slot against Iced internals. It does not establish runtime acceptance or process/scenario Save focus continuity; those workspaces use a separate Viewport lifetime policy. Subsequent execution is recorded below.

The full Windows suite at 4015498 closed with 833 passed, one failed, zero ignored and all 533 inputs unchanged. Compilation took 3m58s and tests 360.78s. The state placement Save/Undo regression and all twelve new activation tests passed. The sole failure was the old atomic call/reply test's assertion that the call appeared as an 8-unit generic box (scenario.rs:3256). That is the removed drawing representation. Correction 83f53c7 retains the atomic edit, canonical source and Undo assertions, and checks one typed activation's exact call/receiver/scope/reply identity, finite positive rectangle, actual receive/send endpoints and an interior selection outside message hit regions. A new full gate is required; the failed run is preserved without relabeling it as passing.

The new full gate at 83f53c7c6e passes all 834 tests, with zero failures/ignored and all 533 inputs unchanged. It ended 2026-09-12 at 22:30:30 UTC; test time 351.59 seconds. Input-manifest SHA-256: 691ffd5a808839e5e2b7260afebde2607e3720e819ab30f88053c1ec51edb0bd. This includes the actual persisted-state focus regression, revised atomic call/reply evaluator and twelve activation cases. Strict all-target Clippy with warnings denied and the GUI build also pass on that exact source and input manifest, ending at 22:32:41 and 22:35:05 UTC respectively. The staged executable SHA-256 is 49eb87b4a239c586a16b9efbfd036b3823adc8b62a8992feeaa934bca4f5743b. The subsequent native trial passes the architecture/state Save/Undo focus sequences and bound source Save/reopen, but exposes opaque message-label backgrounds interrupting activation borders. Correction d61f1f3 moves those backplates behind bars and aligns exposed-bar hit priority, preserving precise message selection. It adds actual rendered-pixel continuity and OA/SA Scene selection regressions. Its new gates and native recheck remain separate from the source83 evidence.

The full Windows gate at d61f1f3877 passes 836 tests, with zero failures/ignored and all 533 committed inputs unchanged. It closed at 23:39:26 UTC on 2026-09-12; compilation took 8m40s and the tests 1793.80 seconds. Input-manifest SHA-256: 67ce23fbbcc30ff8c4d78898e9d12030ac07dc507c41d7598c5fe38e88c055bf. Both the rendered border-continuity test and the OA/SA exposed-shoulder and exact message selection test pass. Strict all-target Clippy with warnings denied also passes at 23:42:36 UTC, followed by the matching GUI build at 23:45:13 UTC. Both use the same 533 unchanged inputs and manifest. The source-identified native recheck passes the former border-overlap and call/reply selection cases in OA, SA and reentrant scenes, including an exposed shoulder at 66% Fit in the minimum window. Save preserves the exact Project/SourceBundle; the trial closes with exit 0.

The closed gate receipts identify the exact commands, input bytes, source commits, failures and logs. Earlier full-suite and native results in the deletion report do not establish acceptance of these production changes.

Scenario evaluator preparation

The source and review archive preserves design/review notes, fixture builders, exact build/run receipts and generated source. Builders link the identified existing core artifacts only after verifying their source inputs against the completed core-containing gate; this is not a desktop build or desktop rendering check.

The draft fixture passes core validation and complete canonical round trip with 132 elements and 77 completeness warnings. It covers OA/SA nested, sequential, crossed, self, reentrant, open, ALT and PAR cases. It deliberately lacks exchange bindings and values, so a separate bound fixture supplies those checks.

The corrected bound fixture compiles with warnings denied and generates three scenarios with 34 elements, 6 relations, zero errors and two completeness warnings. It preserves complete Project canonical round trip and exact SA operation resolution. OA uses an Operation information item carried by an Interaction; SA uses standard component ports, required/provided interfaces, synchronous item allocation, a boundary exchange and explicit Call operation use. Replies derive the exact correlated Call allocation. A third OA scenario exercises reentrant calls using the explicit reverse Interaction.

The nested sequence is C1, C2, R2, R1. Requests are 420.0 and 380.0 kPa; replies are 418.0 and 378.0 kPa. Unicode labels are preserved. The generated identity table and model make native selection and value inspection reproducible.

The first bound builder compiled but failed during fixture construction: it used the OA Actor kind for SA and attempted a generic Port constructor. Its exact source and failure receipts are preserved. The correction uses SystemActor and the dedicated port constructor; validation assertions were retained.

The linked native trial establishes its bounded Save/Undo, source persistence and pointer/text-focus results. The rendering correction has its own passing gates and bounded native recheck linked above. Broader process/scenario free placement, resizing and the Details redesign are separate outstanding requirements; these corrections do not close them. Linux/WSL checking remains deferred by the user.