60 lines
8.4 KiB
Markdown
60 lines
8.4 KiB
Markdown
# Final root/prerequisite integration source review
|
||
|
||
Codex-ytr83r /root/wsl_startup_review, 2026-09-11. Read-only review of the isolated `.local/canvas-union-ytr83r-20260911` worktree against baseline `32334c6` and frozen peer `a31b40d0f8551ed87c8cd66250b9afb4809b3a79`.
|
||
|
||
**No actionable integration finding in the reviewed scope.** This does not establish compilation or native acceptance. Root owns formatting and combined gates; the separate pan/B4 renderer implementation is not re-certified by this App/root-prerequisite review.
|
||
|
||
## Source comparison
|
||
|
||
The 17 root-owned canvas paths match a31 except the intentional guide union. App's SHA256 remains `6EB8B4BCD8F73D4BFDAACF30985D8292547440D65EAF49F6BB82AC158FBC46D3`, the exact prerequisite handoff reviewed earlier. Its sole difference from a31 is the preserved child-work correction (52 additions, 12 removals). The earlier full-function equality against baseline therefore still applies: `add_element` retains responsibility relation IDs, leaf-to-child transfer, unambiguous later-child inheritance and execute_batch candidate validation.
|
||
|
||
The guide correctly retains B4 lifecycle/uncertainty text and its search terms. The empty-path wording now directs Work (W) and a canvas click; the permanent Fragment palette instructions agree with the new controls. Existing advanced trace guidance is retained. No competing guide behavior was overwritten.
|
||
|
||
Scoped baseline comparisons confirm `behavior/creation.rs`, `behavior/source_draft.rs` and `tests.rs` unchanged. The staged-owner caption, minimum-card layout/tests and three child_work regressions survive. The prerequisite source, its boxed semantic workflow adaptations and published provenance are recorded in `.local/canvas-prerequisite-union-report.md`; this review did not rewrite them.
|
||
|
||
## Former First event and mounted successors
|
||
|
||
No stale `CanvasEvent::First`, `Shelf::Tools` or `ScrollArea::Canvas` use remains in the inspected App/process/scenario/topology paths. The final event vocabulary, App dispatch and workspace controls agree.
|
||
|
||
The replacement is actual user input through the permanent palette, not a renamed synthetic First test. At `behavior/scenario/workspace/tests.rs:352`, `production_empty_scenario_lifeline_tool_keeps_staged_source_inside_stable_canvas` mounts the App at 1100×700, visits both OA and SA empty scenarios, clicks the actual L control then the canvas, and requires the correct owner's Lifeline draft. It opens the staged source child, preserves viewport bounds, uses Escape, and checks retained invocation/raw name plus unchanged snapshot/source/Undo/Redo. App's `BeginOccurrence` Lifeline branch calls `State::update(Event::Start)`; other occurrence tools retain slot/lifeline admission through `begin_occurrence`. Dirty/pending admission is checked before either branch. The palette keeps lifeline, message styles, action, observation, reuse and Fragment reachable.
|
||
|
||
The same-size owner/document successor is `scenario_workspace_same_size_owner_and_document_changes_remeasure_fit_viewport` at line 1781. It reuses the same Mounted instance across OpenUse from owner A to B, requires the presentation viewport to be absent before settling, then observes the actual viewport again at unchanged dimensions. It subsequently replaces App/document while keeping the same semantic owner UUID, proves the document identity changed, again requires remeasurement, and validates Fit and unchanged source/history. This exercises the workspace sensor key `(context.document, owner)`, rather than assuming a resize notification will occur.
|
||
|
||
The mounted Open/Back successor at line 1828 also retains the caller's camera pan/zoom, selected occurrence/tool/panel and actual Details offset across definition navigation and preselection changes. It checks the observer consumed the one-shot restoration; camera pan is not a synthetic scrollable offset. The five parent-focus regressions remain present, including saved/chained Tasks and changed owner/document/mount/modal conditions.
|
||
|
||
## Interface and behavioral seams inspected
|
||
|
||
App's camera dispatch and root focus/chooser wrappers correspond to the pinned scenario/topology/canvas helpers. Scenario supplies current `focus_stamp`, `take_form_focus`, `FormShown`, `camera_boundary` and `camera_zoom`; process dispatch supplies the equivalent current-context/lifetime and pending/draft/source guards. Module declarations for canvas_workspace, form_session and scenario focus are present in the combined source. No additional missing prerequisite interface was identified.
|
||
|
||
Owner/document/revision guards remain on passive viewport/Details events; strict current context and clean-edit guards remain on authoring. The separate camera epoch permits its own ordered batch but invalidates stale presentation work on external boundary changes. Existing process/contextual identity and qualified selection behavior are retained from the frozen peer. This was a bounded integration review, not a new audit of every inherited peer algorithm.
|
||
|
||
## Verification limits and exact reviewed files
|
||
|
||
Direct no-filter Git blob comparisons verified all 16 unchanged peer files, including new untracked canvas modules; ordinary Git diff reports those untracked additions as absent when comparing against the peer, so it was not used as their byte proof. The three protected baseline comparisons and scoped diff whitespace validation passed. A second SHA256 readback found all 21 reviewed files unchanged. No compiler, tests, GUI, WSL, Git mutation or source edit was run by this reviewer. Assertions described above are verified test source, not freshly executed results. The peer's 729/Clippy pass and our earlier 707 pass remain tied to their original inputs; root's new combined results must identify the current union. The source-card layout, parent focus, actual canvas tasks and pan/B4 clipping/hit behavior still require the combined gates.
|
||
|
||
All paths below are relative to `crates/oa-desktop/src/`; these SHA256 values define this review's exact scope. The larger renderer file was read only for module-interface presence and is deliberately excluded from the accepted hash set because its dedicated worker/root owns that union.
|
||
|
||
| Path | Bytes | SHA256 |
|
||
| --- | ---: | --- |
|
||
| `app.rs` | 220191 | `6EB8B4BCD8F73D4BFDAACF30985D8292547440D65EAF49F6BB82AC158FBC46D3` |
|
||
| `app/process_canvas.rs` | 30804 | `5A913BFA1E9E08D3A8AF314D2A883D55D1F1EED30E288546946F77C9F61CEB9C` |
|
||
| `behavior/canvas_workspace.rs` | 7758 | `9303ED4F74EE0317E4ABEAB134F7C31F50EAC5EB5D85940D771CD3AD595258FA` |
|
||
| `behavior/canvas_workspace/control.rs` | 7804 | `2B8D97B8C0E3FF1B1A2C32187B1D0EB25EDF39BA582B5FB3303BC880F674F7BA` |
|
||
| `behavior/canvas_workspace/focus.rs` | 8943 | `CC58CB3838F546150D22FE4DD83A3FFD52504C279FEBAEB8D0B4A6A3B8A73950` |
|
||
| `behavior/canvas_workspace/tests.rs` | 27020 | `D84D022574A6F1D69F203D9383502227FB9FC23605C6FB48779CA9F09BEE546D` |
|
||
| `behavior/canvas_workspace/viewport.rs` | 14436 | `AF1C7C1E802D1207EE6C7BD66B703811A250D7B56511512AF6C0945C776E68A7` |
|
||
| `behavior/contextual_source_tests.rs` | 49518 | `044BD412DC45FFE440B1E251993946942DC3759DCB2D5DFE71BD8D6EF61CBCC7` |
|
||
| `behavior/scenario.rs` | 152266 | `CE99D5902F16629BE84F3F10F45CF632EEF037D22401E54482057552D983D017` |
|
||
| `behavior/scenario/workspace.rs` | 25995 | `29F3BC14AA19AD110E60BAAAEA644A53DAABC0CFA7C8CA4542E9D5A2C11CB9D0` |
|
||
| `behavior/scenario/workspace/tests.rs` | 80083 | `57649638930E4B47DCBC3F9F6A2F991DA4393DBC1EF243BBC09E01D40932F5BA` |
|
||
| `behavior/topology.rs` | 84212 | `26E24AD0F781A3304C46299B3BD906917E57FAC262E7F52FBA4ADC80A4358EC5` |
|
||
| `behavior/topology/contextual.rs` | 28432 | `5D0AC5B3E258FC70987A00EDE1E603681D99746596F2FCC46AD2B3667D65203A` |
|
||
| `behavior/topology/direct.rs` | 36121 | `FA9CEAE78174D09904A9EBF90B0792AE9A2D8D26E3BE56A3891D5DE5345E49D0` |
|
||
| `behavior/topology/direct_tests.rs` | 51170 | `EDCCFE3CE8B224065A3540AA53C6340F13DB0CECD48ECC0A3904CD832A483964` |
|
||
| `behavior/topology/layout_tests.rs` | 36842 | `9031B2B2BD7AF47ADA3F1811C71F3EE372B07A545FB59C319A99D625F2D29EB6` |
|
||
| `behavior/topology/view.rs` | 23136 | `B2D502C11426BFFB8763515F2A56AA4C9F8E203BB36D65EB34F81C123FC406A6` |
|
||
| `guide.rs` | 116479 | `57DC7FFAD9FE07392C95F4493BE1931C48E2FB417ABB0F3B64B8007006AAFC7A` |
|
||
| `behavior/creation.rs` | 29301 | `438A245EAD397060767C790C51A8F21CD5021342627999DEB4695CF3BD22091A` |
|
||
| `behavior/source_draft.rs` | 39485 | `85D543CC288E48B4C13001E4E386B5B54D9B1E349A5AC31E4E307572F2D8FB3C` |
|
||
| `tests.rs` | 75189 | `686DE3E6896CB322E3BA642FE5EF04F570E2FA04EB1956E08E958F3378FA4F1C` |
|