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

135 lines
8.7 KiB
Markdown

# Canvas correction evidence — 2026-09-12
This is a branch-specific correction checkpoint, not release acceptance. Live
ownership and acceptance remain in Gitea [15](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/issues/15),
[21](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/issues/21) and
[25](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/issues/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](experiments/canvas-editing-followup-20260912/independent-focus-review.md)
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 **83f53c7c6e277e250f06d2ae6bfa6a7988bd2e4b** 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](release-canvas-native-83f53c7-20260912.md) 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 **d61f1f38779ab70a77efcde523ae31c432aefcfd** 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](release-canvas-native-d61f1f3-20260912.md)
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](experiments/diagram-removal-windows-20260912/archive-manifest.json)
identify the exact commands, input bytes, source commits, failures and logs.
Earlier full-suite and native results in
[the deletion report](release-delete-native-f7-20260912.md) do not establish
acceptance of these production changes.
## Scenario evaluator preparation
The [source and review archive](experiments/canvas-editing-followup-20260912/manifest.json)
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](experiments/canvas-editing-followup-20260912/bound-nested-fixture-r1-20260912/scenario-identities.tsv)
and [model](experiments/canvas-editing-followup-20260912/bound-nested-fixture-r1-20260912/bound-nested-calls.arcadia)
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.