edit | blame | history | raw

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 无法恢复时返回明确错误,包含 targetPathrollbackPathstagingPath 和 rollback IO 错误,不再声称原目标已恢复。
  • 新增 Rust 回归 restore_rollback_failure_reports_unrestored_target_paths,模拟 rollback package 缺失,覆盖“不可信已恢复描述”错误分支。
  • 更新 02-P/qa/mindraw-mexp04-real-user-safe-writeback-check.md02-P/qa/mindraw-mexp04-real-user-safe-writeback.json02-P/plan-progress.markdownCODEGRAPH.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.tssrc/lib/mindrawAiFrameWorkflow.tssrc/lib/mindrawAiFrameWorkflow.test.tssrc-tauri/src/lib.rs
  • 证据 / 台账:02-P/qa/mindraw-mexp04-real-user-safe-writeback-check.md02-P/qa/mindraw-mexp04-real-user-safe-writeback.json02-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-GATEPM-MEXP04-GATE 仍由 PM 处理,未勾选。