135 lines
8.7 KiB
Markdown
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.
|