Files
ARCADIA-Studio/harness/review-v2-final-regressions.md

5.0 KiB

Independent review of final desktop regressions

Reviewer: v2_ui_runtime_review. Scope: latest root-owned App::apply, selected_behavior StateTransition selection and the SelectNode-before-MoveNode regression. Read-only source review; no builds, tests or Computer Use were run in this pass. Forms implementation was explicitly excluded because this reviewer authored it.

Result: no material correctness or maintainability finding in the reviewed changes.

  • App::apply adopts identity, active diagram, selection and layer only after the core transaction succeeds. Failed commands return before navigation mutation and retain the draft. For a selected placement, searching the committed diagram map finds its actual owner after relocation or UUID change, then sets layer, active_diagram and selected_node together. For an edited diagram, the same lookup adopts its committed layer and clears node selection. Subsequent sync retains that valid same-layer diagram and normalizes creation kind. This handles an OA element placed in an SA traceability diagram using the placement owner's perspective rather than the semantic element's perspective.
  • The placement regression now sends the real canvas message sequence: SelectNode on press, then MoveNode on release. SelectNode's early return for the already selected placement deliberately keeps its identity draft pending. MoveNode records the original selected identity, applies once, and remaps the old node ID to the committed selection before the move. DiagramCanvas::update was inspected to confirm this event order. The test also checks that editing diagram identity before Arrange keeps the new active diagram.
  • selected_behavior resolves a selected StateTransition to its source state before traversing semantic parents. A valid transition source is an existing state in its machine; core validation rejects dangling endpoints and containment cycles before models enter Session. The traversal therefore terminates at the StateMachine without falling back to an unrelated first scenario. The focused regression checks source and target belong to that returned machine. Ordinary sequence, occurrence, region and state traversal remains unchanged.
  • The added placement relocation test checks actual model ownership, active diagram, selected node and layer after cross-layer traceability relocation, then checks a diagram perspective edit. These assertions cover the new navigation contract; no new abstraction or duplicate model state was introduced.

This source review is evidence for the narrowly scoped fixes, not a substitute for root's pending final automated and native runtime verification.

Follow-up: merged-text focus stability

Read-only review of root's workflow.rs fix after the native Linux typing failure. No build, test or CUA in this pass.

The fix addresses the reported widget identity loss: changes and general conflicts now each occupy one unconditional outer column slot. Resolving a field may change their contents, but no longer shifts the later input's sibling index. Field cards use a sorted union of current conflicts and retained resolutions, so resolving the first field does not remove its card or reorder another focused card. Core planning retains a TransitionChange for reuse as well as update, so the mapping-card source set stays stable during merged-value typing. Each resolution card has a fixed child structure, and its text input reads the retained FieldDecision::Value for the same (source, field) key. No remaining focus-identity defect was found for consecutive Resolve events. Card geometry can still move when preview text wraps; continuous native typing/retyping still needs observation after rebuilding.

One existing decision-identity hazard remains outside that focus fix: Event::MappingTarget and MappingKind change the target mapping but retain earlier field resolutions for the same source. Enter merged text for counterpart A, then choose counterpart B: the old Value decision is reused when replanning B, without requiring a new resolution. Clearing that source's resolutions when its target/kind actually changes would prevent a reviewed decision from carrying into a different target context; selecting the same mapping should preserve it. Reported to root as a concrete follow-up, not as a regression caused by the stable-column change.

Final disposition

The reported decision-identity hazard is fixed: resolutions now belong to the effective target/kind. The focused regression covers retargeting, same-target preservation, creation and kind changes. The separate requirements reviewer inspected the final fix and found no new material issue (review-v2-final-ui.md). The lead personally typed continuously, changed counterparts, observed the old decision clear and Apply block, then explicitly reviewed and committed the new values on the rebuilt native Linux application (verification-v2-native.md). The pending runtime checks above are therefore closed by those separate evidence records; this reviewer does not claim to have performed them.