# 2026-06-29 M4C-FLSR-01 ## 目标 完成 m4c 侧 Frame link consumer guard / sanitized Frame Context Package:`mindraw://localhost?documentId=...&elementId=` 必须成为 `frame-only` 读取边界,不能把整份 `drawing.excalidraw` 原文或外部 Frame 文本交给 Codex / agent。 ## 已完成 - `m4c-readonly-poc.mjs`: - 输出 `readScope="frame-only"`。 - 输出 `scope.includedElementIds`、`scope.excludedOutsideCount`、`scope.excludedOutsideTextCount`、`scope.outsideTextIncluded=false`、`scope.fallbackToDocumentRead=false`。 - 只把目标 Frame / Frame 内元素放入 promptable `elements`。 - Frame 外或边界不确定元素只进入不带文本的 `diagnostics.excludedElements`。 - 缺少 `elementId` 时返回 `FRAME_SCOPE_UNAVAILABLE`。 - `generate-round01-fixtures.mjs`: - 新增 `frame-scope-reverse.mindraw` 反向 fixture。 - 补充 Round01 契约草案、过程 QA、正式 QA 清单、`CODEGRAPH.md`、工具 README、项目管理 README、m4c `INDEX.md`。 - 刷新 `codebase-memory` 共享图谱。 - 回写主项目统一台账 `P-20260629-frame-link-scoped-read-contract`。 ## Mindraw 基线 - `MD-FLSR-01` 已完成。 - Mindraw commit:`c1053f9963b5f174b1db1eb4d8def52c67e8adb1`。 - Mindraw evidence:`/Users/ar/Projects/ExcalidrawX/02-P/qa/mindraw-flsr-frame-scoped-read-check.md` 与 `.json`。 ## 验证 - `node --check /Users/ar/Projects/ExcalidrawX/p.mindrawforcodex/03-O/C3.tools/scripts/m4c-readonly-poc.mjs`:PASS。 - `node --check /Users/ar/Projects/ExcalidrawX/p.mindrawforcodex/03-O/C3.tools/scripts/generate-round01-fixtures.mjs`:PASS。 - `node --check /Users/ar/Projects/ExcalidrawX/p.mindrawforcodex/03-O/C3.tools/scripts/m4c-mcp-alpha.mjs`:PASS。 - `node /Users/ar/Projects/ExcalidrawX/p.mindrawforcodex/03-O/C3.tools/scripts/m4c-readonly-poc.mjs smoke --report /Users/ar/Projects/ExcalidrawX/p.mindrawforcodex/02-P/FrameLinkScopedRead/qa/m4c-flsr-01-readonly-smoke.json`:PASS。 - direct context / MCP wrapper context 反向检查:目标 A 存在,外部 B 不存在。 - missing `elementId`:返回 `FRAME_SCOPE_UNAVAILABLE`。 - `git -C /Users/ar/Projects/ExcalidrawX/p.mindrawforcodex/03-O diff --check`:PASS。 - 敏感信息扫描:PASS。 - `codebase-memory-mcp cli index_repository`:PASS。 ## Git - `d78d910ef40290e7197febb3bc9c77d99064276b`:`feat: enforce frame link scoped read guard` - `8452d9e6b9b8ceae8bf6c31e0ffa146fa65ba444`:`docs: record FLSR Mindraw baseline` ## 下一步 PM 收敛 `PM-FLSR-GATE`。