Files
ARCADIA-Studio/harness/reviews/state-multiselect-composition-20260923.md
T

3.9 KiB

State multiselect composition review

Parent Codex-956atf reviewed the production delta from ordinary delivery 7e348d967d1787c052a145b7448636613a6a7054 to State delivery bed7f825fd00ec32299032a664a5f5d753aad86d, its independent review and native report. This is a static integration review plus an offline evidence audit, not a fresh review of every fixture or native screenshot and not combined acceptance. The independently authored 911-line model evaluator was not rereviewed in this pass; its reported checker results remain peer evidence.

State now reuses the typed selection envelope while keeping exact row identity as (placement, relation). Visibility rechecks both the live placement and relation source, preventing a surviving reassigned relation from rebinding a stale row selection. Primary inspection remains separate from selected membership. Queued singleton Select/Move/Remove refusals occur before shared App navigation and allocation hooks. This addresses the peer critic's confirmed late-refusal finding; preserve that ordering alongside e34's Scenario and Text admission.

Group preview uses the existing simultaneous placement planner and applies its node/route commands to a diagram clone. State's explicit unsnapped displacement policy preserves the fractional pointer delta, while the ordinary constructor retains its ten-unit grid. Singleton bend snapping remains separate. The gesture keeps its selection/context/viewport snapshot, retires on context and focus changes, and refuses unsupported mixed selections as a whole. The State toolbar reserves picker and selection-control space to avoid canvas refitting as group membership changes. Keep those fixed slots when composing newer controls.

Exact State menu targets use Option<Box<Target>>; matching checks placement, semantic object and current visibility. The menu's group branch precedes the State-specific singleton actions. Preserve the existing attachment/reconnect and bend menu payloads when adding this field to constructors and tests.

A git merge-tree --write-tree probe of candidate e34ba27e26ede3ab55f276acc250d92b2e0c3204 with delivery bed7 produced conflict tree 5490ff2bd8d40ae594e7a6c2e8b66066107ea48d without changing a checkout. It found seven conflicted paths: app/state_attachment_escape_tests.rs, app/state_bend_tests.rs, app/state_diagram.rs, behavior/state_bend_tests.rs, behavior/state_canvas.rs, diagram.rs and diagram/attachment_tests.rs, all under crates/oa-desktop/src. These reflect independently integrated attachment/bend history as well as the new adapter; whole-file replacement would lose evidence or behavior. Resolve against both exact parents and inspect the combined diff. The auto-merged app.rs/model_menu.rs still require semantic review. Add Diagram.layout: None to the peer evaluator if the combined schema requires it.

Required combined checks follow the actual risks: early stale-envelope refusal with unchanged navigation/selection state, singleton attachment/bend routing with production selection enabled, exact row targeting, fractional simultaneous group movement, fixed viewport dimensions, Hide/Undo/Redo and source/model conservation. Native peer evidence is bounded to its delivered branch; the combined executable must be exercised before integration acceptance. Shared picker Escape issue 35 and reported State label overlap are existing open usability findings, not successful behavior redefined by this review.

After the probe, the parent resolved all 15 conflict hunks in a separate checkout, added layout: None to both native examples, and obtained an independent review of the combined event paths. Frozen source a2a326f183ba0486814cd9fbdce19eb98cad7017 on codex/multiselect-union-956atf-20260923 contains the full source handoff and harness/reviews/state-multiselect-merged-20260923.md. Its source checks pass; compilation, runtime and combined acceptance remain unestablished.