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

5.1 KiB
Raw Blame History

State and ordinary multiselect merged-source review

Reviewed the staged .local/peerunion source on codex/multiselect-union-956atf-20260923, combining e34ba27e26ede3ab55f276acc250d92b2e0c3204 and bed7f825fd00ec32299032a664a5f5d753aad86d. The read-only e34 baseline was .local/scunion, not root production. Scope: merged App admission/reconciliation, menu dispatch, State/ordinary canvas interactions with newer Scenario/Text/Properties behavior. No source mutation, compiler, GUI, expensive Git scan or archived helper execution.

No concrete blocking regression found in this bounded source review. Suitable to freeze for combined gates; not combined-runtime acceptance.

  • app.rs:1382–1470 retains e34's complete early Text/source/allocation/Scenario admission block verbatim. New selection/state envelope checks at :1350–1380 precede it and do not mutate state on refusal. Scenario revision/visit/epoch, separate camera lifetime, and Properties target/pending-input checks still run before reveal/allocation reconciliation. The new State singleton guard likewise refuses queued Select/Move/Remove before those shared side effects.
  • app/multiselect.rs:88–99 scopes ordinary selection through route_context and State selection through a validated state_context; it does not introduce a Scenario adapter. Reconciliation uses exact occurrence targets and State placement ownership (:141–249), preserving row identity rather than substituting its owner node. app.rs:1529–1533 reconciles after ordinary dispatch; the allocation early-return path also reconciles (:1483–1488). Existing early Text implementation is byte-identical to e34 and retains its nested update dispatch.
  • model_menu.rs:99–121 validates the captured occurrence against visibility and request identity. At :236–339, group entries precede the State popup; the singleton State popup is still appended/reached. app.rs:2613–2630 retains pending-draft refusal, dispatches group selection directly through update, and only uses legacy select for other menu actions. This avoids collapsing a group before processing its captured snapshot.
  • behavior/state_canvas.rs:220–235,1540–1544 preserves the meaningful distinction between canceling edits and canceling all gestures: dirty input retires model editing without clearing an ongoing read-only pan. Group currentness checks include selection snapshot, editability, tool and viewport (:790–811); retirement consumes the event before it can become a fresh keyboard edit (:1528–1606). The new selection route in behavior/state_view.rs:43–46 still reaches App's early envelope, while other events retain State dispatch.
  • Ordinary and State selection strips reserve 56 pixels (views.rs:695, behavior/state_view.rs:248); the State missing-element picker also reserves its 34-pixel slot (:147–151). This preserves canvas size/focus-tree continuity during group selection and Hide/Undo. Both new native example Diagram literals include layout: None.
  • Direct byte comparison confirms source_defaults.rs, source_project.rs, both source-project implementation modules, app/scenario_spacing.rs, and app/text_workspace.rs are unchanged from e34. No writer/default migration was silently replaced by the selection merge. The newer Scenario picker guard and Properties action row remain in merged views.rs.

Targeted combined acceptance checks

Reuse the delivered ordinary/State core, App and mounted tests, but run them on the frozen merged input set. In addition, retain the e34 Scenario/Text/Properties regressions so source-only preservation is exercised together with new reconciliation. The discriminating seams are: a captured State/ordinary group action after Text Apply or navigation; a same-visit stale Scenario action while a new reveal exists; a State mixed row/placement selection with a pending inspector draft; and group Hide/Undo while the missing-element picker changes contents. Require model/source/history, selection, camera and pending ownership to remain correct together. These are coverage requirements, not newly proven defects.

Native held-drag cancellation and dirty-State read-only pointer pan remain unobserved unless actually exercised. Existing mounted/core evidence must not be relabeled as native closure. The prior ordinary preview-cache ordering concern remains a targeted redraw check, not an established stale-commit bug; this merge review supplies no new reachable failing trace.

Reviewed byte pins

File below crates/oa-desktop/src/ SHA256
app.rs 21fbca718bea0bf77414b18e0552768235c6f5b3af6f71a80b77a89521a59445
app/multiselect.rs 1b1c29c2153aa976272e38136433731b6c3b53f0610ab53f03341ec664f8b361
model_menu.rs 99a6792cb4187ec4fa9031005fb9bc2b03b41c70df00dffa9047a1dfd41304d2
behavior/state_canvas.rs 9ccf0682bf1b97db408662a750d9c29b627eb7dc51cb61056e11ceeac62baf88
behavior/state_view.rs 234ff0f4969c1e6067100795d1e75f5f6a7e8c22e374392becb83b23912f4f2d
diagram.rs 99d9ccd2ed0daf4716a36bfc1a22ce3caf6d5165bd30a3c1d8b21577b262783d
views.rs c6a8e67e5a5cde7a2f31e4c5488980555d5a38d854bb60e1c9477688d719237c