# MD-EDC-06-FIX-01 代码复核修复 日期:2026-07-10 项目:Mindraw 任务:`MD-EDC-06-FIX-01` / Assignment `MD-EDC-06-FIX-01-20260710` Review Gate:`crg-7d105de89062` 目标 worktree:`/Users/ar/Projects/Mindraw-worktrees/md-main-better-exp1` 目标分支:`codex/md-main-better-exp1` HEAD:`0e329860f39577bdc0ab8236f5bf442fc163a22b` ## 用户目标 根据 `REVIEW-EDC-06 / crg-7d105de89062` 的 `CHANGES_REQUESTED`,只修复必须修项并回到代码复核 readiness: - `.mindraw` package / `MindrawCanvas` create / rename / delete 路径的 symlink / canonicalization 边界。 - `create_blank_mindraw_package` 缺 `fileName` 时改为 `YY.MMDD-NN.mindraw`,保留唯一递增。 - 回报 `CODEGRAPH.md` / `INDEX.md` / `CHANGELOG.md` 处理结论。 ## 已完成事项 - 在目标 worktree 只修改 `src-tauri/src/lib.rs` 完成修复;未改 m4c plugin,未启动 QA。 - 新增不跟随最终 symlink 的目录 / package 校验 helper,并把 `.mindraw` create / rename / delete 接入 allowed base。 - `projectRoot -> MindrawCanvas/` 路径改为拒绝 symlinked `MindrawCanvas`,创建后确认 canonical parent 仍在 canonical projectRoot 内。 - 文件扫描 / tree 构建跳过 symlink 条目,避免范围外 symlink package 暴露为可操作文档。 - 后端缺省文件名从 `Untitled.mindraw` 改为 `YY.MMDD-01.mindraw`,继续由 `unique_document_path()` 递增。 - 新增 review-ready evidence:`02-P/MEXP15-SignedNotarizedDMG/review/md-edc-06-fix-01-review-ready-crg-7d105de89062.md`。 ## 关键决策 - 沿用原 Review Gate `crg-7d105de89062`,不创建替代 gate;当前状态是可重新派复审,不代表代码审核 PASS。 - 目标 worktree 缺少 `CODEGRAPH.md`、`INDEX.md`、`CHANGELOG.md`,本轮不临时补建主线治理文档副本;转为 PMO/mainline integration 后续同步项。 - `cargo fmt` 未作为门禁,因为当前 toolchain 未安装 `rustfmt`;实际门禁以 dispatch 要求的 test/build/check/diff 为准。 ## 核心事实 / 变更快照 - 变更对象:`MD-EDC-06-IMPL` 后端 `.mindraw` package 路径安全边界和外部 create command 缺省命名。 - 事实来源:目标 worktree diff,HEAD `0e329860f39577bdc0ab8236f5bf442fc163a22b`,review-ready evidence `crg-7d105de89062`。 - 变更前:`.mindraw` package create / rename / delete 依赖 canonicalized target,symlinked `MindrawCanvas` 或 symlinked package 可能让操作落到 projectRoot / current folder 外;外部 create command 缺 `fileName` 时默认 `Untitled.mindraw`。 - 变更后:target directory、projectRoot、`MindrawCanvas/`、package parent 和 package final path 通过 `symlink_metadata()` 拒绝 symlink;package parent 需位于 allowed base 内;缺 `fileName` 时生成 `YY.MMDD-01.mindraw` 并递增。 - 范围边界:只修目标 worktree App/Tauri 代码;不修改主工作区源码,不修改 m4c,不进入 CM1,不替换 `1.2.4 / Build202607071930`。 - 验证证据:Vitest 12 tests、Rust 9 tests、cargo check、npm build、git diff check、敏感信息扫描均通过。 ## 文件变更 目标 worktree 源码 / 测试变更仍为 `MD-EDC-06-IMPL` 的 11 个文件;本轮新增修复集中于: - `/Users/ar/Projects/Mindraw-worktrees/md-main-better-exp1/src-tauri/src/lib.rs` 主项目治理 / 记忆文件: - `/Users/ar/Projects/Mindraw/02-P/MEXP15-SignedNotarizedDMG/review/md-edc-06-fix-01-review-ready-crg-7d105de89062.md` - `/Users/ar/Projects/Mindraw/.codex-sessionhistory/2026-07-10-MD-EDC-06-FIX-01.md` - `/Users/ar/Projects/Mindraw/.codex-sessionhistory/COMMANDS.md` ## 未决问题 - 需要 PMO 重新派 `REVIEW-EDC-06` 或等效代码复核消费 `crg-7d105de89062`。 - `QA-EDC-06-EXEC` 仍不得启动,直到代码复核 PASS。 - 目标 worktree 缺少 `CODEGRAPH.md` / `INDEX.md` / `CHANGELOG.md`,需要 PMO 在 mainline integration 或 baseline sync 中补同步。 ## 可复用命令 / Runbook 用途:复跑 `MD-EDC-06-FIX-01` 的复审前验证。 前置条件:在 `/Users/ar/Projects/Mindraw-worktrees/md-main-better-exp1`,分支 `codex/md-main-better-exp1`,依赖已安装。 设置命令: ```bash cd /Users/ar/Projects/Mindraw-worktrees/md-main-better-exp1 npm run test:run -- src/lib/newDocument.test.ts npm run test:run npm run build cargo check --manifest-path src-tauri/Cargo.toml cargo test --manifest-path src-tauri/Cargo.toml mindraw_new_document_tests cargo test --manifest-path src-tauri/Cargo.toml git diff --check git diff -- src src-tauri | rg -n "(SECRET|TOKEN|PASSWORD|PRIVATE_KEY|BEGIN RSA|AWS_|AKIA|sk-|xoxb-|ghp_|-----BEGIN)" ``` 验证步骤: - `cargo test --manifest-path src-tauri/Cargo.toml mindraw_new_document_tests` 应显示 9 tests passed。 - `npm run test:run` 应显示 2 files / 12 tests passed。 - `git diff --check` 无输出且退出码为 0。 - 敏感信息扫描无输出;`rg` 无命中时退出码为 1,属于通过。 清理 / 恢复命令: ```bash cd /Users/ar/Projects/Mindraw-worktrees/md-main-better-exp1 rm -rf dist ``` 搜索关键词:`MD-EDC-06-FIX-01`、`crg-7d105de89062`、`MindrawCanvas must not be a symlink`、`YY.MMDD-01.mindraw`、`create_blank_mindraw_package` ## 后续建议 - PMO 重新派 `REVIEW-EDC-06` 消费同一 gate。 - 代码复核 PASS 后再派 `QA-EDC-06-EXEC`。 - mainline integration 时同步 `CODEGRAPH.md` / `INDEX.md` / `CHANGELOG.md`,不要把隔离 worktree 缺失文档误记为已更新。