edit | blame | history | raw

MD-H5-03 Live Smoke

日期:2026-06-26

用户目标

从统一台账 02-P/plan-progress.markdownP-20260626-m4c-handshake-coordination 领取 Mindraw 侧 MD-H5-03,执行真实运行 App 的 transport smoke,生成 m4c 默认 discovery 文件并用外部进程验证 /health、capability、read-state、live frame context、lease acquire/release 和受控 commit_write_result(createAiResultFrame)

已完成事项

  • 使用当前源码构建本地 QA debug App:/Users/ar/Projects/ExcalidrawX/src-tauri/target/debug/bundle/macos/Mindraw.app
  • 启动真实 App 并打开安全副本:/private/tmp/mindraw-md-h5-03-live-smoke-2/MD-H5-03-live-copy-2.mindraw
  • App 生成 m4c 默认 capability:~/Library/Application Support/com.mindraw.desktop/runtime/write-api.json
  • 外部 curl 验证 /health/capabilities
  • 外部 Node JSON-RPC 验证 get_open_document_stateget_live_frame_context、lease acquire/release、lease acquire + commit_write_result(createAiResultFrame)
  • 验证 unsupported mindraw.app.apply_json_patch 返回 APP_API_METHOD_NOT_FOUND
  • 生成 result Frame:frame_result_md-h5-03-live-smoke-002
  • 保存 QA Markdown 与 JSON 证据,并回写总台账。

关键决策

  • 使用本地 QA debug App,不生成 DMG、不做发布、不进入 H8。
  • 使用 /tmp 下安全副本,不碰真实用户原件。
  • 发现 App canonical path 为 /private/tmp/...,后续 RPC 使用 App 侧 canonical path。
  • source preservation 以稳定语义字段验证,忽略 Excalidraw 真实运行态会规范化的 runtime metadata 字段。

验证结论

  • npm run tauri -- build --debug --bundles app:PASS。
  • 外部 curl /health:PASS,PID 36879
  • 外部 curl /capabilities:PASS,arbitraryJsonPatch=false
  • 外部 JSON-RPC smoke:PASS,read/context/lease/release/commit/save/source preservation 均通过。
  • npm run doctor:mindraw -- --app ... --app-api-capability ... --prettyappWriteLease=pass,唯一 warning 为本地 QA App 无 release build metadata。
  • npm run test:run -- src/lib/mindrawAppApiTransport.test.ts src/lib/mindrawAppWriteApi.smoke.test.ts:PASS,11 个用例。
  • npm run doctor:mindraw:test:PASS,13 个用例。
  • git diff --check:PASS,无输出。

QA 结论:Mindraw 侧 live transport GO RECOMMENDATION

文件变更

  • 02-P/qa/mindraw-h5-live-transport-smoke-check.md
  • 02-P/qa/mindraw-h5-live-transport-smoke.json
  • 02-P/plan-progress.markdown
  • INDEX.md
  • CODEGRAPH.md

未决问题

  • m4c 侧 M4C-H5-06 尚需读取同一 capability 并用 m4c client 调真实 endpoint 复测。
  • 当前 endpoint/token 是本地运行态临时值,App 退出后会 stale。
  • 多窗口 / 多进程 lease 互斥仍未验证。

后续建议

  • 保持当前 debug App 运行,供 m4c 侧读取 runtime/write-api.json 复测。
  • PM 收敛 MD-H5-03M4C-H5-06 后处理 PM-H5-RETRY-GATE