在 MD-MEXP04-01 第二轮 independent review 仍为 passed=false 后,继续以 Coder@mindraw-recovery 身份在现有未提交实现上做最小补修。约束:不提交、不暂存、不扩大范围、不改 m4c;只修复 restore point 与 captured write target 未强绑定、restore rollback 失败描述不可信两个阻断项。
ensureAiFrameRestorePointForMindrawWriteTarget({ packagePath, documentId }),按 workflow 已捕获的 write target 创建 restore point,不再重新读取当前 active tab。runMindrawAiFrameWorkflow() 改为用 context.packagePath / context.documentId 创建 restore point;safe writeback 层校验 safe copy state 的 safeCopyDocumentId 与 captured documentId 一致,并校验 Tauri 返回的 restorePoint.packagePath 与 captured packagePath 一致。targetPath、rollbackPath、stagingPath 和 rollback IO 错误,不再声称原目标已恢复。restore_rollback_failure_reports_unrestored_target_paths,模拟 rollback package 缺失,覆盖“不可信已恢复描述”错误分支。02-P/qa/mindraw-mexp04-real-user-safe-writeback-check.md、02-P/qa/mindraw-mexp04-real-user-safe-writeback.json、02-P/plan-progress.markdown 和 CODEGRAPH.md。npm run test:run -- src/lib/mindrawSafeWriteback.test.ts src/lib/mindrawAiFrameWorkflow.test.ts src/lib/mindrawAppWriteApi.smoke.test.ts src/lib/mindrawAppWriteMutation.test.ts src/lib/mindrawAppWriteLease.test.ts src/lib/mindrawAppReadApi.test.ts:6 files / 53 tests PASS。npm run test:run -- src:29 files / 222 tests PASS。cargo test --manifest-path src-tauri/Cargo.toml:50 tests PASS。npm run build:PASS,仅既有 Vite 字体解析与 chunk size 警告。cargo check --manifest-path src-tauri/Cargo.toml:PASS。npm run doctor:mindraw:test:14 tests PASS。git diff --check:PASS。src/lib/mindrawSafeWriteback.ts、src/lib/mindrawAiFrameWorkflow.ts、src/lib/mindrawAiFrameWorkflow.test.ts、src-tauri/src/lib.rs。02-P/qa/mindraw-mexp04-real-user-safe-writeback-check.md、02-P/qa/mindraw-mexp04-real-user-safe-writeback.json、02-P/plan-progress.markdown。CODEGRAPH.md。context.packagePath / context.documentId,不依赖异步过程中的当前 active tab。INDEX.md / CHANGELOG.md 无新增入口或 release 决策变化;本轮仍不做 H8 / formal release、DMG、版本递增、真实 AI provider、正式 MCP server、m4c 新任务或 Phase 4 .assets 权威化。MD-MEXP04-01 第三轮补修完成,可重新进入 PM-MEXP04-GATE;PM-MEXP04-GATE 仍由 PM 处理,未勾选。