# 2026-06-28 MEXP04 二补 ## 用户目标 在 `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` 一致。 - 新增 workflow 回归:live context 捕获 A 后切换 active tab 到 B,验证 restore point 与 save 均绑定 A,未为 B 创建 restore point。 - Rust restore 失败分支新增 rollback report 和错误 formatter;rollback 无法恢复时返回明确错误,包含 `targetPath`、`rollbackPath`、`stagingPath` 和 rollback IO 错误,不再声称原目标已恢复。 - 新增 Rust 回归 `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。 - QA JSON parse: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`。 ## 决策 - restore point 创建必须绑定 workflow captured `context.packagePath` / `context.documentId`,不依赖异步过程中的当前 active tab。 - restore rollback 失败时必须 fail-closed,并返回可排障路径与 IO 错误;只有实际 rollback 成功时才允许描述为已恢复。 - `INDEX.md` / `CHANGELOG.md` 无新增入口或 release 决策变化;本轮仍不做 H8 / formal release、DMG、版本递增、真实 AI provider、正式 MCP server、m4c 新任务或 Phase 4 `.assets` 权威化。 ## 未决问题 / 下一步 - 无本轮 blocker。 - `MD-MEXP04-01` 第三轮补修完成,可重新进入 `PM-MEXP04-GATE`;`PM-MEXP04-GATE` 仍由 PM 处理,未勾选。