# 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](../experiments/state-multiselect-delivery-audit-20260923/README.md), 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>`; 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.