4.5 KiB
Walkthrough hook independent review — 2026-09-06
Read-only review of the Home/guide walkthrough entry point and its existing open/save integration. No Cargo, native input, or production edits were performed. The hook is in home.rs, home/tests.rs, app/checkpoints.rs, app.rs, and guide.rs; persistence is the existing app.rs/core source-files path, with no separate new storage or workflow adapter.
Finding and correction
P2, corrected in source; rebuild/native verification pending: the original Home/guide/lesson instruction to use Save As for a working copy omitted external lesson assets. app.rs::write_snapshot_inner persists CompiledSourceProject.bundle.files, not arbitrary sibling files. The lesson's SA scenario references evidence/repair-check.md, and its project description points to README.md. Opening the packaged lesson and saving its model into an empty folder therefore preserves that URI but does not copy its target or the tutorial. This can produce a valid model with an incomplete local lesson folder.
Root accepted this independently identified finding, also reported by the teaching reviewer. The bounded correction now visible in Home, guide, and examples/release1/README.md instructs copying the whole lesson folder before editing. It explicitly says Save As copies model source only and requires separately copying evidence/. That addresses the misleading instruction without changing general Save As semantics. See the teaching review.
The hook deliberately opens a normal, path-bound local project. Opening it does not write files; subsequent ordinary Save can write to the original lesson location. This is an explicit design boundary, not an independent overwrite defect. The complete-folder-copy instruction is material to preserving the distributed original.
Guard and loading assessment
- Home and guide use the same
Home::Walkthroughevent, forwarded toRequest(Pending::Walkthrough). The existing dirty predicate includes accepted changes, raw property/source drafts, pending behavior, and workflows. Normal modal and busy guards also apply. - Cancel leaves the current model and unfinished source untouched. Discard authorizes proceeding but does not clear them before loading. Resolver failure or an I/O
Loaded(Err)only changes status. The Save branch retains the existing failed/cancelled-save handling and only proceeds after a successful source save; JSON export stops continuation. Save receipts retain document identity and source-entry adoption checks. walkthrough_pathresolves relative to the executable, independently of the working directory. Packaged assets take precedence; only debug builds have the checkout fallback. A missing entry produces a specific complete-folder restoration message. Entry existence is merely resolution; the ordinary source loader then reads the real modular bundle.- Successful current-schema loading binds the actual entry path and installs its compiled source workspace. Source diagnostics take the ordinary repair path, retaining the last accepted graphical model while opening the loaded source drafts. This replacement follows the same dirty-work decision as other opens; no new unapproved draft-loss path was established by this review.
No further material correctness finding was identified in these bounded paths. This is code inspection, not an independent execution of Save/Discard/failure paths or a native acceptance claim.
Evidence and remaining checks
The hook report records three focused walkthrough tests passing, strict all-target Clippy passing, and GUI/server build passing: hook evidence. The resolver test meaningfully checks package precedence, debug fallback, and missing-entry diagnostics. The new app test checks unfinished raw source, accepted-model identity, pending guard, and Cancel. These tests do not exercise the full 28-file lesson, external asset copying, or hook-specific Save/Discard/error completion. The existing storage tests supply broader coverage, but were not rerun here.
The staged 246BACE21E254985EE90EF05132139DD7D6AF75085DE9E58FEB49477A493407D GUI and 35 hash-checked lesson files precede the copy-instruction correction. Root native verification of the staged hook and a subsequent corrected build remains separate evidence. Release packaging uses git ls-files; the complete newly added lesson folder must be staged before packaging, as already recorded in the hook report. This review does not claim a final portable package or a complete 530-test desktop rerun.