edit | blame | history | raw

2026-06-28 MEXP04 补修

用户目标

Coder@mindraw-recovery 身份在现有未提交 MD-MEXP04-01 初版实现上做最小补修,不提交、不扩大范围、不改 m4c。必须修复独立 review 阻断项:移除文件名推断 safe copy 的写入 guard、校验 restore point 归属、补齐保存失败后的 restore point 可见与可恢复路径,并更新 QA / 台账 / 会话记忆。

已完成事项

  • 移除前端 mindrawSafeWriteback.ts*-ai-frame-safe-*.mindraw 文件名的可信推断;getMindrawAiFrameSafetyState() 只返回 App 内创建记录,伪造 safe-copy 文件名仍返回 SAFE_COPY_REQUIRED
  • 在 Tauri safe copy manifest 写入 aiFrameSafeWriteback 元数据,包含 kind=safeCopysafeCopyDocumentIdoriginalPathoriginalHashcreatedAt
  • restore_ai_frame_restore_point 恢复前校验 restore point 与当前 safe copy 的元数据一致、位于当前 safe copy 的 backup folder、文件名前缀匹配,并继续使用 staging / rollback 与 hash 校验。
  • 保存失败后 AiFramePanel 会刷新本次 restore point 状态;restoreActiveMindrawFromRestorePoint() 允许 dirty safe copy 执行受控恢复,恢复成功后清 dirty。
  • 新增/补强测试:伪造 safe-copy 文件名、错误 backup folder、不同 safe copy / documentId restore point、保存失败后面板显示 restore point 并可恢复。
  • 更新 QA 证据、CODEGRAPH.mdCHANGELOG.md02-P/plan-progress.markdownMD-MEXP04-01 已勾选完成,下一步归属 PM-MEXP04-GATE,未勾选 Gate。

验证结果

  • 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 / 52 tests PASS。
  • npm run test:run -- src:29 files / 221 tests PASS。
  • cargo test --manifest-path src-tauri/Cargo.toml:49 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/mindrawSafeWriteback.test.tssrc/components/AiFramePanel.tsxsrc/components/AiFramePanel.test.tsxsrc/lib/mindrawAiFrameWorkflow.tssrc/lib/mindrawAiFrameWorkflow.test.tssrc-tauri/src/lib.rssrc/index.css
  • 证据 / 台账: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.mdCHANGELOG.mdINDEX.md

决策

  • 安全模型采用 App 创建记录 + safe copy manifest 元数据 + restore point 归属校验;文件名只能作为 UI / 路径提示,不作为写入 guard。
  • 仍不做 H8 / formal release、DMG、版本递增、真实 AI provider、正式 MCP server、m4c 新任务或 Phase 4 .assets 权威化。
  • CHANGELOG.md 只更新 Unreleased 条目;本轮不递增版本。

未决问题 / 下一步

  • 无本轮 blocker。
  • 下一步由 PM-MEXP04-GATE 复核 coder 证据、必要实机 smoke 和用户可体验交付判断。