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
24bb248preserves an existing diagram keyboard owner across revision changes and passive Save, while suspended input cannot acquire ownership or retain a held gesture. The Windowsapp::diagramgate 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.e2c027efixes 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.956a584derives 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.b25065cremoves the redundant Canvas and Focus canvas/Restore panels buttons. Pointer editing already worked without activation. Strict all-target Clippy at combined sourcee2c027e54c6be0d051820374f669c52278d90f97failed on two obsoleteCanvasEvent::Focusvariants 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.