3.4 KiB
Behavior transition navigation — independent review, 2026-09-06
Reviewed the bounded changes in desktop workflow.rs, the workflow Apply arm in
app.rs, behavior.rs::selected_behavior, and the five new
app/transition_context_tests.rs cases. No production edits, Cargo, or native
input were performed by this reviewer.
Findings
No material correctness defect found in the inspected change. The adapter now finds the change whose source is the explicit request root, rather than selecting the first dependency. A behavior-owned root with no explicit destination returns the core candidate before legacy architecture placement. Explicit destinations still follow the core/placement path, while ordinary work keeps its architecture behavior. StateAction resolves the behavior owner through its typed source state.
The app resolves the counterpart's owner from the candidate, skips port-owner
reveal for behavior navigation, and changes page/selection only after the single
Document::execute(Replace) succeeds. A rejected source writeback restores the
review without changing navigation or accepted history. The previous/current
owner and saved state-view identity comparison preserves camera state when that
context is unchanged. The normal scenario/state event contexts also include
document, revision and owner/view identity, so the new route does not make old
canvas events authoritative.
The new tests use a deliberately dependency-first scenario in both directions, compare the complete app candidate with core, preserve every unrelated diagram, and verify exact accepted source and one Undo/Redo boundary. Other tests cover internal selection, process/chain roots without existing views, explicit destination versus ordinary work, machine/typed-action owner and camera behavior, and rejected source preflight plus retained invalid property input. The author also added the suggested stale-event falsifier: the both-direction test captures a source-scenario selection event before Apply, delivers it after Apply and Undo, and asserts unchanged model/selection. That addition was reviewed read-only; this review does not claim the new tests have executed.
Independent fixture oracle
Added distinctly named check reverse-behavior and
generate-reverse-behavior modes to the tracked CM fixture generator. The new
cm-reverse-behavior.after-template preserves the original before-source bundle
and every saved diagram. Legacy check reverse and its template remain intact.
See fixture instructions.
A coordinated tiny direct-rustc build linked the stable existing core/serde libraries into an ignored executable, without touching Cargo outputs. Results:
- New behavior template: complete model/source pass, ten generated target/trace UUID substitutions, zero placement substitutions.
- Legacy template: complete model/source pass, fifteen substitutions including five placement identities.
- Each policy rejects the other's placement outcome; added source whitespace is separately rejected. Regenerating the new bundle is byte-exact.
The checker never adopts observed geometry, routing, metadata or names. Negative
logs: .local/native-fixtures/cm-reverse-behavior-falsifiers/. Root's completed
legacy native result remains valid evidence for that older policy. Corrected
native Behavior routing, visible Call/Reply selection and its Save/Undo/Redo
sequence are a separate pending gate, as are the new desktop test run and build.