以 Coder@mindraw-recovery 身份领取并完成统一台账 P-20260626-ai-frame-workflow 下的 MD-MEXP04-01:实现 M-体验04:真实用户文件安全写回 Alpha。用户需要从真实 .mindraw 文件出发,在 Mindraw App 内通过清晰的安全副本 / 备份 / 恢复链路运行 AI Frame,在安全写入目标中生成右侧 result Frame;原始用户文件不得被静默覆盖。
.mindraw 原件先复制为 *-ai-frame-safe-*.mindraw 安全写入目标,安全副本生成新 documentId,原件复制前后 hash 必须一致。AI Frame commit 前在 <safe-copy-stem> AI Frame Backups/ 下创建 .mindraw restore point,hash 必须等于写入前安全目标 hash。AI Frame 面板显示写入目标、原始 hash、restore point,并提供 Create safe copy 与 Restore。runMindrawAiFrameWorkflow() 在未安全化 .mindraw 上返回 SAFE_COPY_REQUIRED,不 acquire lease、不保存、不写原件。02-P/qa/mindraw-mexp04-real-user-safe-writeback-check.md、02-P/qa/mindraw-mexp04-real-user-safe-writeback.json。CODEGRAPH.md、INDEX.md、CHANGELOG.md 和 02-P/plan-progress.markdown;MD-MEXP04-01 已勾选完成,下一步归属 PM-MEXP04-GATE。documentId,避免原件和副本在 Mindraw document registry / deep link 里争用同一个 ID。CHANGELOG.md 只更新 Unreleased。src-tauri/src/lib.rssrc/lib/mindrawSafeWriteback.tssrc/lib/mindrawSafeWriteback.test.tssrc/lib/mindrawAiFrameWorkflow.tssrc/lib/mindrawAiFrameWorkflow.test.tssrc/components/AiFramePanel.tsxsrc/index.css02-P/qa/mindraw-mexp04-real-user-safe-writeback-check.md02-P/qa/mindraw-mexp04-real-user-safe-writeback.json02-P/plan-progress.markdownCODEGRAPH.mdINDEX.mdCHANGELOG.mdnpm 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 / 50 tests PASS。npm run test:run -- src:28 files / 218 tests PASS。cargo test --manifest-path src-tauri/Cargo.toml:46 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,无输出。02-P/qa/mindraw-mexp04-real-user-safe-writeback.json:JSON parse PASS。mindraw-alpha-local placeholder,不是真实 AI provider release。PM-MEXP04-GATE 复核代码、QA、真实用户风格副本 smoke、备份 / 恢复证据和失败矩阵,再决定是否交给用户 hands-on。