edit | blame | history | raw

2026-06-27 MD-H5-04 Live Recovery

用户目标

02-P/plan-progress.markdownP-20260626-m4c-handshake-coordination 领取 Mindraw 侧 MD-H5-04,恢复 H5 retry 所需真实 App live transport / capability。完成后回写总台账 Progress Log,保存证据和会话记忆;不领取 PM-* / H*,不改 m4c 03-O

已完成事项

  • 重新读取 /Users/ar/.codex/AGENTS.md、项目 AGENTS.mdINDEX.mdCODEGRAPH.md 和总台账中 MD-H5-04 / M4C-H5-06 / PM-H5-RETRY-GATE 状态。
  • 复现 m4c No-Go 基线:旧 capability 指向 pid=781,该 PID 不存在。
  • 补 Mindraw 正常退出时的 capability cleanup:只清理 pid 等于当前进程的 primary / legacy capability 文件,避免误删其他实例新 capability。
  • 构建当前源码本地 QA debug App,并打开安全副本 /private/tmp/mindraw-md-h5-04-live-recovery/MD-H5-04-live-copy.mindraw
  • 重新生成有效 runtime capability:当前 PID 93170 存活,endpoint http://127.0.0.1:53739/rpc
  • 用外部进程验证 /health/capabilitiesget_open_document_stateget_live_frame_context、lease acquire-release 和任意 patch 拒绝。
  • 通过 doctor 验证 live capability 为 appWriteLease=pass;伪造 stale capability 为 appWriteLease=stale / MINDRAW_APP_API_NOT_REACHABLE
  • 回写总台账并将 MD-H5-04 标记完成,下一步归属 PM。

关键决策

  • MD-H5-04 只做 live transport / capability 恢复和证据,不做 controlled commit,不做 Phase 4 .assets,不启动 H8 / 发布。
  • stale 改进保持最小范围:正常退出清理当前 PID capability;crash / 强杀仍由调用方通过 /health 判定 stale。
  • 不自行派发 m4c 重跑任务;PM 根据本轮证据决定是否派 m4c 侧重跑。

文件变更

  • src-tauri/src/app_api_transport.rs
  • src-tauri/src/lib.rs
  • scripts/mindraw-doctor.test.mjs
  • CODEGRAPH.md
  • INDEX.md
  • 02-P/plan-progress.markdown
  • 02-P/qa/mindraw-h5-live-transport-recovery-check.md
  • 02-P/qa/mindraw-h5-live-transport-recovery.json

验证结果

  • cargo test --manifest-path src-tauri/Cargo.toml app_api_transport:PASS,4 tests。
  • npm run doctor:mindraw:test:PASS,13 tests。
  • npm run test:run -- src/lib/mindrawAppApiTransport.test.ts src/lib/mindrawAppWriteApi.smoke.test.ts:PASS,2 files / 11 tests。
  • npm run tauri -- build --debug --bundles app:PASS,本地 QA debug App 构建成功。
  • 外部 Node smoke:PASS,证据见 02-P/qa/mindraw-h5-live-transport-recovery.json
  • git diff --check:PASS,无输出。
  • cargo fmt --manifest-path src-tauri/Cargo.toml:未执行成功,本机缺 rustfmt

未决问题

  • 当前 endpoint / token 是运行态临时值,App 退出后必须重新读取 capability。
  • crash / kill -9 仍可能留下 stale capability,需要调用方以真实 /health 判定。
  • 多 App 实例竞争同一个 capability 文件仍未作为本轮范围处理。
  • m4c 是否重跑 H5 retry 由 PM 判断。

后续建议

  • PM 复核 MD-H5-04 证据后决定是否派发 m4c 侧重跑。
  • 若 H5 retry 仍遇到 stale,下一步应考虑 capability TTL / heartbeat / single-instance ownership 方案,但需由 PM 拆新任务。