edit | blame | history | raw

2026-06-29 Frame Scoped Read

用户目标

coder2@mindraw 身份领取并完成 MD-FLSR-01,把 Mindraw 侧 Frame link 的 AI / App API 读取边界机械化为 frame-only,防止同一 .mindraw 文档中 Frame 外文本进入 promptable context。

已完成事项

  • 读取项目规则、索引、统一台账、CODEGRAPH.md 和 m4c 既有 deep link / Frame context package 契约。
  • 修改 src/lib/mindrawAppReadApi.tsmindrawGetLiveFrameContext() 返回 readScope="frame-only"target.kind="frame"、Frame bounds、included / excluded / outside text scope audit、outsideTextIncluded=falsescopeWarnings
  • 补强 src/lib/mindrawAppReadApi.test.tssrc/lib/mindrawAppApiTransport.test.ts,覆盖目标 Frame 内文本 / 图片可读,Frame 外普通文本、同文档外部 Frame 文本和外部图片 file 不进入返回 context。
  • 新增 QA 证据 02-P/qa/mindraw-flsr-frame-scoped-read-check.md.json
  • 同步 INDEX.mdCODEGRAPH.mdCHANGELOG.md02-P/plan-progress.markdown

关键决策

  • mindraw://localhost?documentId=...&elementId=<frameId> 在 AI / App API 读取场景默认是 frame-only
  • 普通对象链接若被当作 Frame 读取,必须返回 TARGET_NOT_FRAME,不得 fallback 到 document read。
  • diagnostics / scopeAudit 只记录 Frame 外元素 id / count 等低语义信息,不记录 Frame 外文本内容。
  • 本轮不做 H8 release、不重打 DMG、不做真实 AI provider、不做正式 MCP server、不触碰 m4c 03-O

文件变更

  • src/lib/mindrawAppReadApi.ts
  • src/lib/mindrawAppReadApi.test.ts
  • src/lib/mindrawAppApiTransport.test.ts
  • 02-P/qa/mindraw-flsr-frame-scoped-read-check.md
  • 02-P/qa/mindraw-flsr-frame-scoped-read-check.json
  • INDEX.md
  • CODEGRAPH.md
  • CHANGELOG.md
  • 02-P/plan-progress.markdown

验证

  • npm run test:run -- src/lib/mindrawAppReadApi.test.ts src/lib/mindrawAppApiTransport.test.ts:PASS,2 files / 14 tests。
  • npm run test:run -- src/lib/mindrawAppReadApi.test.ts src/lib/mindrawAppApiTransport.test.ts src/lib/mindrawAiFrameWorkflow.test.ts src/lib/mindrawAppWriteApi.smoke.test.ts:PASS,4 files / 32 tests。
  • npm run build:PASS,只有既有字体解析和 chunk size warnings。

未决问题

  • M4C-FLSR-01 仍需 m4c 侧完成 consumer guard / sanitized context package。
  • PM-FLSR-GATE 仍需 PM 在 Mindraw / m4c 双方完成后统一收敛。

后续建议

  • PM 等待 m4c 回写 M4C-FLSR-01 后执行 PM-FLSR-GATE
  • m4c 侧应把无法获得 frame-scoped context 的场景作为 blocker,不得直接读取整份 drawing.excalidraw