edit | blame | history | raw

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-7d105de89062CHANGES_REQUESTED,只修复必须修项并回到代码复核 readiness:

  • .mindraw package / MindrawCanvas create / rename / delete 路径的 symlink / canonicalization 边界。
  • create_blank_mindraw_packagefileName 时改为 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.mdINDEX.mdCHANGELOG.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,依赖已安装。

设置命令:

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,属于通过。

清理 / 恢复命令:

cd /Users/ar/Projects/Mindraw-worktrees/md-main-better-exp1
rm -rf dist

搜索关键词:MD-EDC-06-FIX-01crg-7d105de89062MindrawCanvas must not be a symlinkYY.MMDD-01.mindrawcreate_blank_mindraw_package

后续建议

  • PMO 重新派 REVIEW-EDC-06 消费同一 gate。
  • 代码复核 PASS 后再派 QA-EDC-06-EXEC
  • mainline integration 时同步 CODEGRAPH.md / INDEX.md / CHANGELOG.md,不要把隔离 worktree 缺失文档误记为已更新。