# MEXP10 PM Gate 日期:2026-07-01 ## 用户目标 用户确认以 MEXP10 为当前 Goal:完成 `MD-MCPE-01 -> M4C-MCPE-02 -> PM-MCPE-GATE` 的端到端验收,让 `~/plugins/mindraw` 支持 `Open the Mindraw canvas for this project.`,在项目根创建 / 打开 `MindrawCanvas/` 下最新 `.mindraw`,侧边栏显示完整只读预览,并通过 `编辑` / 双击跳转 Mindraw 桌面 App 完整编辑。 ## 已完成事项 - PM 复核 `M4C-MCPE-02` worker 证据,确认 `~/plugins/mindraw` 已实际消费 Mindraw `createBlankPackage` / `previewSnapshot` / `openPackage` capability。 - PM 重建并启动当前 debug QA App:`/Users/ar/Projects/ExcalidrawX/src-tauri/target/debug/bundle/macos/Mindraw.app`。 - `npm run doctor:mindraw -- --pretty` 在新 debug QA App 启动后显示 `projectCanvasCreate=pass`、`projectCanvasPreview=pass`、`projectCanvasOpen=pass`、`targetFramePixelPayload=pass`。 - live MCP 验证首次创建、重复打开不新建、显式新建递增、mtime 干扰、registry 丢失恢复、非规范文件 warning。 - live sidebar HTTP 验证 `/api/state` READY、`/api/preview` 返回 `image/svg+xml` full preview、DOM 含 pan / zoom / reset / `编辑` / double-click handoff。 - `/api/open-edit` 返回 `mindraw.app.open_package`、`opened=true`、`fallbackUsed=false`。 - 新增 PM Gate 报告:`02-P/MEXP10-CodexPluginEntry/pm/mexp10-pm-gate-live-20260701.md`。 - 更新 `02-P/plan-progress.markdown`:`P-20260701-mindraw-codex-plugin-entry` 状态改为 `Complete / PM-MCPE-GATE GO`。 - 更新 `02-P/pmo-active-assignments.json`:`M4C-MCPE-02-20260701` 从 `active` 改为 `done`。 - 更新 `INDEX.md`:补充 MEXP10 PM Gate live 报告入口。 ## 关键决策 - MEXP10 当前 Goal 达成的是 debug QA App + installed Codex plugin cache 的 live Gate,不等同于 DMG / H8 / formal release。 - `/Applications/Mindraw.app` 未被安装、替换或覆盖;若要让普通安装版也具备该能力,需要另立 release / installer goal。 - Python / bundled Playwright 在本机不可用,PM Gate 对 sidebar UI 采用 live HTTP + DOM 证据,不临时安装依赖。 - MEXP09B pixel payload baseline 保持有效,MEXP10 不回退到旧 MEXP09 `bytesIncluded=false` / `pixelsIncluded=false` 验收口径。 ## 核心事实 / 变更快照 - 变更对象:`P-20260701-mindraw-codex-plugin-entry` 计划项、`M4C-MCPE-02` assignment、MEXP10 Gate 证据。 - 事实来源: - Mindraw source commit:`662333b Add Mindraw Codex project canvas App API` - m4c `03-O` commit:`64832c2 docs: record M4C MCPE plugin retry` - Gate 报告:`02-P/MEXP10-CodexPluginEntry/pm/mexp10-pm-gate-live-20260701.md` - 统一台账:`02-P/plan-progress.markdown` - assignment:`02-P/pmo-active-assignments.json` - 变更前: - 计划状态:`Active / M4C-MCPE-02 m4c retry PARTIAL_FOR_LIVE_RUNTIME; waiting PM-MCPE-GATE live runtime precheck` - `M4C-MCPE-02-20260701` assignment:`active` - `PM-MCPE-GATE`:等待 live runtime capability。 - 变更后: - 计划状态:`Complete / PM-MCPE-GATE GO` - `M4C-MCPE-02-20260701` assignment:`done` - `PM-MCPE-GATE`:`Complete / GO / live runtime PASS` - Gate live project:`/tmp/mindraw-mexp10-pm-live-gate-20260701224035` - Live canvases:`26.0701-01.mindraw`、`26.0701-02.mindraw` - 范围边界: - 不发布 DMG。 - 不替换 `/Applications/Mindraw.app`。 - 不做 browser full editor。 - 不让插件 direct-write `.mindraw` internals。 - 验证证据: - Plugin check / validation / SkillSpector / source smoke / MCP smoke / HTTP smoke / installed cache smoke PASS。 - Debug QA App doctor project canvas capabilities PASS。 - Live MCP / live sidebar Gate G1-G12 PASS。 ## 文件变更 - 新增:`02-P/MEXP10-CodexPluginEntry/pm/mexp10-pm-gate-live-20260701.md` - 修改:`02-P/plan-progress.markdown` - 修改:`02-P/pmo-active-assignments.json` - 修改:`INDEX.md` - 修改:`.codex-sessionhistory/COMMANDS.md` ## 可复用命令 / Runbook 用途:复跑 MEXP10 PM live Gate,确认当前 debug QA App runtime 和 `~/plugins/mindraw` 插件链路可用。 前置条件: - 在 `/Users/ar/Projects/ExcalidrawX` 执行。 - 不覆盖 `/Applications/Mindraw.app`。 - 如果已有旧 debug App 进程,可先退出旧 debug App,再重建当前 debug bundle。 设置与验证命令: ```bash npm run --prefix /Users/ar/plugins/mindraw check python3 /Users/ar/.codex/skills/.system/plugin-creator/scripts/validate_plugin.py /Users/ar/plugins/mindraw skillspector scan /Users/ar/plugins/mindraw/skills/mindraw-open-canvas --no-llm --format json --output /tmp/mindraw-mexp10-skillspector-pm.json node /Users/ar/plugins/mindraw/scripts/mindraw-canvas-service.mjs smoke --report /tmp/mindraw-mexp10-plugin-smoke-pm.json node /Users/ar/plugins/mindraw/scripts/mindraw-canvas-service.mjs smoke-mcp --report /tmp/mindraw-mexp10-mcp-smoke-pm.json node /Users/ar/plugins/mindraw/scripts/mindraw-canvas-service.mjs smoke-http --report /tmp/mindraw-mexp10-http-smoke-pm.json python3 /Users/ar/.codex/skills/.system/plugin-creator/scripts/validate_plugin.py /Users/ar/.codex/plugins/cache/personal/mindraw/0.1.0+codex.20260701142826 npm run --prefix /Users/ar/.codex/plugins/cache/personal/mindraw/0.1.0+codex.20260701142826 check node /Users/ar/.codex/plugins/cache/personal/mindraw/0.1.0+codex.20260701142826/scripts/mindraw-canvas-service.mjs smoke --report /tmp/mindraw-mexp10-installed-cache-smoke-pm.json npm run tauri -- build --debug --bundles app open -n /Users/ar/Projects/ExcalidrawX/src-tauri/target/debug/bundle/macos/Mindraw.app npm run doctor:mindraw -- --pretty ``` Live MCP 验证: ```bash PROJECT_ROOT="/tmp/mindraw-mexp10-pm-live-gate-$(date +%Y%m%d%H%M%S)" mkdir -p "$PROJECT_ROOT" printf '%s\n' \ '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{}}' \ '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}' \ "{\"jsonrpc\":\"2.0\",\"id\":3,\"method\":\"tools/call\",\"params\":{\"name\":\"open_mindraw_project_canvas\",\"arguments\":{\"projectRoot\":\"$PROJECT_ROOT\",\"dryRunOpen\":false}}}" \ "{\"jsonrpc\":\"2.0\",\"id\":4,\"method\":\"tools/call\",\"params\":{\"name\":\"open_mindraw_project_canvas\",\"arguments\":{\"projectRoot\":\"$PROJECT_ROOT\",\"dryRunOpen\":true}}}" \ "{\"jsonrpc\":\"2.0\",\"id\":5,\"method\":\"tools/call\",\"params\":{\"name\":\"inspect_mindraw_project_canvas\",\"arguments\":{\"projectRoot\":\"$PROJECT_ROOT\",\"createNew\":true}}}" \ | /Users/ar/plugins/mindraw/scripts/start-mcp.sh find "$PROJECT_ROOT/MindrawCanvas" -maxdepth 2 -type d -name '*.mindraw' -print | sort ``` Sidebar 验证: ```bash node /Users/ar/plugins/mindraw/scripts/mindraw-canvas-service.mjs serve --project-root "$PROJECT_ROOT" --port 43239 curl -sS http://127.0.0.1:43239/api/state curl -sSI http://127.0.0.1:43239/api/preview curl -sS http://127.0.0.1:43239/ | rg -n 'id="previewImage"|id="zoomOut"|id="zoomIn"|id="reset"|id="edit"|dblclick|pointerdown|pointermove|wheel|fetch\("/api/open-edit"|src="/api/preview"' curl -sS -X POST http://127.0.0.1:43239/api/open-edit ``` 清理 / 恢复: ```bash # 结束 sidebar service:在该服务终端 Ctrl-C。 # 如需退出 debug QA App: pkill -f '/Users/ar/Projects/ExcalidrawX/src-tauri/target/debug/bundle/macos/Mindraw.app/Contents/MacOS/mindraw' ``` 搜索关键词:`MEXP10PMGate`、`PM-MCPE-GATE`、`mindraw-mexp10-pm-live-gate`、`createBlankPackage`、`previewSnapshot`、`openPackage`、`26.0701-02.mindraw` ## 未决问题 - 本轮没有生成新的 DMG;用户如果希望普通安装版 `/Applications/Mindraw.app` 具备 MEXP10,需要单独开 release / installer goal。 - 侧边栏 UI 未用 Playwright 截图验证,原因是本机 Python / bundled runtime 均无 Playwright;当前证据为 HTTP + DOM。 ## 后续建议 - 下一阶段可以进入 `MEXP11 Project Canvas Lifecycle` / `MEXP12 Sidebar Preview polish`,把项目画布生命周期和侧边栏体验做产品化增强。 - 如用户希望立即试用,保持当前 debug QA App 运行即可;否则需等 release goal 产出新安装包。