Consolidate verified state and record derived deletion review
This commit is contained in:
+26
-18
@@ -46,26 +46,33 @@ The cleaned R123 canvas at **a31b40d0f8551ed87c8cd66250b9afb4809b3a79** passes
|
||||
All 518 input identities agree with Git and the closed receipts. Actual minimum-size
|
||||
OA action, nested state, bound reuse and ALT creation passed Save and exact one-step
|
||||
Undo/Redo Project/SourceBundle comparisons. All 85 archived files match their Git
|
||||
index bytes. Reopen was interrupted by physical Escape and remains unverified;
|
||||
Computer Use remains paused. [Exact gates and bounded native evidence](release-behavior-canvas-a31b40d-native-20260911.md)
|
||||
index bytes. Reopen was interrupted in that session and remains unverified.
|
||||
[Exact gates and bounded native evidence](release-behavior-canvas-a31b40d-native-20260911.md)
|
||||
supersede the earlier pre-cleanup gate as this source's checkpoint.
|
||||
|
||||
Allocation candidate **f52d81c1b96a34bb78b8ada27b7761dc0b009f5d** preserves the
|
||||
canvas source and passes its first 54 focused Windows planner/App/widget tests,
|
||||
including four actual App-tree focus/keyboard/render cases; all 525 inputs remained
|
||||
unchanged. This is not a full-suite, strict-lint, native or release gate. Independent
|
||||
review found a frozen performer label can still obscure the dragged work header;
|
||||
that repair and broader integration remain unverified. [Issue 3](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/issues/3)
|
||||
owns its live work. Parent/child native focus, complete direct manipulation,
|
||||
persistent process placement/lanes and coherent peer integration remain open.
|
||||
Allocation source **3840ca29652e3128ffbcdebd9f39f364e56079ea** passes the full
|
||||
Windows desktop suite: 796 tests, 526 unchanged identified inputs. A dedicated
|
||||
toolbar identity and gesture-local full-name inspection keep the moving work
|
||||
readable while target outlines and hit regions remain frozen. The
|
||||
[feedback decision](release-allocation-feedback-decision-20260912.md) supersedes
|
||||
the unusable fixed-label refusal in the [earlier d9 baseline](release-allocation-d9b3f0d-windows-20260912.md).
|
||||
[Exact saved receipts and renderer evidence](handoff-usage-pause-20260912-final.md).
|
||||
All 24 archived payloads were checked against committed Git bytes at 0c38980.
|
||||
|
||||
The combined allocation/saved-destination repair baseline **d9b3f0dc91e8882e6efc262c2e8d971998d2694e**
|
||||
passes 792/792 Windows desktop tests with all 526 source inputs unchanged.
|
||||
[Exact baseline evidence and independent review](release-allocation-d9b3f0d-windows-20260912.md).
|
||||
Review found the fixed-label overlap refusal makes a collapsed long-name target
|
||||
unreachable with an ordinary grab offset. The [feedback decision](release-allocation-feedback-decision-20260912.md)
|
||||
replaces duplicate canvas labels with a dedicated toolbar identity; that correction
|
||||
and current strict-lint/native acceptance remain unverified.
|
||||
Diagram source **28e21a0ae8090f62106fcb264835ab7457a0d299** passes 19 targeted
|
||||
actual App-tree tests for architecture/state Delete, captured confirmation,
|
||||
placement-property selection, state action/internal-transition rows and F2
|
||||
focus protection, with exact model/source Undo. [Source-specific gates and
|
||||
independent findings](release-diagram-removal-windows-20260912.md) distinguish
|
||||
this result from the earlier full-suite evaluator failures. All 13 archived
|
||||
payloads match committed Git bytes at cb46ef4.
|
||||
|
||||
Source **4c387ccd640976ba89dd03ee922a3f63ff92b07c** additionally integrates
|
||||
process/scenario occurrence removal, derived owner capture, event-batch focus
|
||||
guards, target-specific confirmation and reST/help. Combined executable and
|
||||
native acceptance are not yet established for that source. Complete direct
|
||||
manipulation, persistent process placement/lanes and coherent peer integration
|
||||
remain open. No usage-limit stop applies; Gitea owns live coordination.
|
||||
|
||||
Complete quantities/calculations/constraints, maintained libraries, graphical/
|
||||
source/REST parity, transitions and engineering-task usability, aligned reST/help,
|
||||
@@ -79,6 +86,8 @@ prototypes and published previews are intermediate results.
|
||||
- [Activity allocation drag](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/issues/3)
|
||||
- [Analysis, codec and source/API integration](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/issues/7)
|
||||
- [Maintained reusable libraries](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/issues/8)
|
||||
- [Focused diagram deletion](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/issues/15)
|
||||
- [Direct element resizing](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/issues/16)
|
||||
- [Decisions and reusable evidence](DECISIONS.md)
|
||||
- [Shared overview](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/wiki/BehaviorAuthoring20260911)
|
||||
- [Published milestones and their exact limitations](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/releases)
|
||||
@@ -90,5 +99,4 @@ preserve historical assumptions, decisions, experiments, limitations and links.
|
||||
Links inside the archived documents retain their original `harness/` base.
|
||||
Do not maintain live plans in this checkpoint or repeat that migration.
|
||||
|
||||
Allocation source 3840ca2 has a closed Windows full-suite result (796 passed, 526 unchanged identified inputs). [Saved verification checkpoint](handoff-usage-pause-20260912-final.md) preserves source-specific limitations. Delete candidate 7dcfb3c was integrated as 60ea483, followed by live-drag status correction 0d6f677; combined verification remains outstanding. The earlier source-specific allocation findings above are historical, with the toolbar correction covered by the 3840ca2 suite. No usage-limit stop applies; Gitea holds live coordination.
|
||||
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
# Frozen behavior Delete candidate: independent acceptance review
|
||||
|
||||
Reviewed 2026-09-12 by `/root/behavior_delete_acceptance_review`, GPT-6 Astra high, read-only production review. Scope: the nine candidate files in `.local/behavior-delete-20260912`, branch `codex/behavior-delete-956atf-20260912`, uncommitted over `dc1506f`; implementation/design handoffs; applicable AGENTS and PROJECT_GOAL; surrounding dispatch, projection, focus, mounted harness and core deletion code. Root owns issue 15, integration, execution and delivery. This review did not use Gitea, Cargo, rustc, native UI or WSL and did not edit production files.
|
||||
|
||||
## Result
|
||||
|
||||
No blocking or high-severity implementation defect was confirmed by source review. The candidate is suitable for integration and executable acceptance work. This is not runtime or whole-product acceptance: candidate tests had not been executed by this reviewer, confirmation prose was deliberately awaiting parent integration, and the focused tests do not establish every required input/recovery workflow.
|
||||
|
||||
## Evidence supporting the implementation
|
||||
|
||||
- Exact identity: process Graph eligibility checks rendered node/edge IDs, rejects owner, and requires the ID's actual behavior owner (`behavior/topology/direct.rs:512`). App rechecks full semantic context, current selected ID, tool, modal/dirty state, projection eligibility and qualified-selection state (`app/process_canvas.rs:100`). Scenario uses actual scene box/line IDs plus owner membership (`behavior.rs:1193`, `behavior/scenario.rs:92`, `app.rs:1665`). This does not substitute referenced definitions or implied path endpoint IDs.
|
||||
- Qualified process previews: the outer reference remains the App's selected UUID, but `has_qualified_selection` is checked before opening confirmation. The rejection explains how to open the shared definition or select the actual outer use. The qualified predicate resolves the owner/address against the current topology index. The mounted test uses a real preview coordinate and verifies a `SelectQualified` message before attempting Delete; it does not seed the qualified state.
|
||||
- Capture and replay: `app/diagram_removal.rs:179` captures the derived owner after retiring the pre-modal canvas epoch. Confirmation requires the same owner at line 196 as well as the existing document/revision/epoch/page/layer snapshot and captured selection. Derived placement is consistently normalized to None in request, capture and validation (`:37`). Cancel/new-token replay and changed-owner/same-selection checks target the relevant lifetime risks.
|
||||
- Semantic preservation: confirmation executes ordinary `Command::Delete` on the captured UUID. `oa-core/src/references.rs` follows owned children, incident/dependent relations and references into removed objects, rather than following an occurrence's reusable target outward. Lifeline removal clears participant references/bindings on retained occurrences. Call removal clears retained reply correlation. The candidate does not introduce a second deletion implementation.
|
||||
- Input lifetime: nonrepeating plain/Shift Delete is admitted only for editable Select with no pending press or source. Middle/space pan blocks semantic keyboard forwarding. The new `focus_pending` immediately retires keyboard admission after viewport Tab/F6/Escape while keeping `is_focused` true for the deferred Collect/Apply operation. Real focus/unfocus clears it. This addresses the stale focused child during an Iced event batch without turning cursor presence into a keyboard ownership test.
|
||||
- Harness validity: `canvas_workspace/tests.rs:155` builds the actual `App.view()` and calls pinned Iced `UserInterface.update` with the whole ordered event slice, then applies App messages and real widget operations. Pinned `iced_runtime-0.14.0/src/user_interface.rs` processes each base event before returning its messages, supporting the same-batch premise. Geometry probes calculate production projection coordinates; pointer tests assert the selected target afterward. Release followed by Delete in a subsequent build without a redraw is a meaningful check of stale child press state. Bundle compilation and workspace equality check the normal source/history path, although these checks still need execution.
|
||||
|
||||
## Acceptance gaps to close or explicitly retain
|
||||
|
||||
1. **Actual text ownership and keyboard recovery are not established by the two new focus tests.** `app/behavior_removal_tests.rs:253` chooses an arbitrary real text field and uses `FocusText` (`:255`, `:307`) to explicitly unfocus every other widget. That validly tests programmatic exclusive focus, but can conceal click/Tab ownership defects and does not identify the Inspector field. The boundary test (`:200`) checks lack of removal after Tab/F6/Escape but reacquires with pointer clicks; it does not assert that Tab reached a real control or that F6 can restore the viewport through the new pending flag. Suggested closure: select a real occurrence; click a named clean Inspector field, Delete at end-of-text, and assert no removal plus field ownership; then F6 and Delete with no pointer reacquisition. Separately assert the focused target after Tab, Shift+Tab and Escape, and keyboard-only F6 recovery.
|
||||
2. **Remaining input variants are source-covered, not newly demonstrated.** The handoff correctly lists repeats, armed creation, message-source, connect/reconnect/reorder, contextual persisted links and legacy implied connectors as acceptance gaps. A small set of mounted cases should exercise these distinct mechanisms. For an implied connector, make the selected UUID and visible highlight explicit before and after clicking: unchanged selection of a previously selected occurrence must not be misreported as successful connector selection.
|
||||
3. **Remaining scenario preservation variants are not all explicit in assertions.** The lifeline case proves messages are retained and sender/receiver references are cleared, but not scenario-use binding cleanup or action/state lifeline cleanup. The message case proves the reply survives but does not assert its `reply_to` was cleared. Core source supports those semantics; retain this distinction from executed behavior evidence.
|
||||
4. **Confirmation prose and actual rendered recovery remain parent gates.** `diagram_removal::explanation` is intentionally not wired in the frozen candidate. Parent must use the captured object, inspect the rendered explanation for occurrence/link/lifeline/fragment cases, and inspect the incomplete-message state after lifeline removal. The supplied prose correctly distinguishes lifeline cleanup from deleting messages and reusable definitions.
|
||||
|
||||
These are verification gaps, not confirmed reproducible production defects. No new production fix is requested from this source review. Root's separate state relation-row visibility and F2 regression changes were outside this frozen candidate and must be included in its combined verification.
|
||||
|
||||
## Checks performed
|
||||
|
||||
Read scoped diffs, affected surrounding implementation, core cascade/reference cleanup, and installed Iced input/operation source. `git diff --check` passed in the frozen candidate worktree. A Git CRLF normalization warning appeared on an earlier diff read of `viewport.rs`; no content defect follows from that warning. No executable pass, GUI success, upstream coordination update or publication is claimed.
|
||||
|
||||
## Authorized evaluator follow-up
|
||||
|
||||
After the source review, parent authorized edits only to root `crates/oa-desktop/src/app/behavior_removal_tests.rs` to close acceptance gap 1. The frozen worker code is now `c2e651b455fbacda25d7840f6bbdaa79e594bcba` (parent reports CRLF normalization only), integrated as `49a4cb1`. Parent reports `12b2237` supplies confirmation explanation/rendered button tests and state row handling; root `2d9e9c1` adds interaction specification/help. Those later parent changes are not retroactively claimed as reviewed here.
|
||||
|
||||
The root test file now separately covers actual Inspector-name pointer focus and Escape followed by ordinary Tab entry, asserts actual focused widget geometry and `/name` binding via End + ShiftDelete while clean, then asserts F6 exclusively transfers focus to the viewport and permits subsequent Delete without another pointer event. The existing boundary test now checks completed Tab traversal to one real control and inverse ShiftTab return; F6/Escape exit and keyboard-only reentry; same-batch F6-entry/Delete refusal; and successful subsequent Delete. These expectations follow the existing production process/scenario keyboard tests: canvas Tab cycles canvas members, while Escape followed by ordinary Tab enters Inspector. The separate programmatic FocusText test remains and is not presented as evidence of pointer/Tab behavior.
|
||||
|
||||
Frozen root file SHA256: `EF09843A7DAEB91AFAB0B76E83C5679351A1635A84A26D80A194DEA744EA5874`. Scoped installed rustfmt (`--edition 2024 --config skip_children=true`) and scoped `git diff --check` passed. No Cargo, compiler, native, WSL, Gitea or Git/index mutation was run by this reviewer. Parent owns executable acceptance of this test-only follow-up; writing the tests does not close the runtime gap until they pass against the integrated implementation.
|
||||
Reference in New Issue
Block a user