完成 m4c 侧 Frame link consumer guard / sanitized Frame Context Package:mindraw://localhost?documentId=...&elementId=<frameId> 必须成为 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。elements。diagnostics.excludedElements。elementId 时返回 FRAME_SCOPE_UNAVAILABLE。generate-round01-fixtures.mjs:frame-scope-reverse.mindraw 反向 fixture。CODEGRAPH.md、工具 README、项目管理 README、m4c INDEX.md。codebase-memory 共享图谱。P-20260629-frame-link-scoped-read-contract。MD-FLSR-01 已完成。c1053f9963b5f174b1db1eb4d8def52c67e8adb1。/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。elementId:返回 FRAME_SCOPE_UNAVAILABLE。git -C /Users/ar/Projects/ExcalidrawX/p.mindrawforcodex/03-O diff --check:PASS。codebase-memory-mcp cli index_repository:PASS。d78d910ef40290e7197febb3bc9c77d99064276b:feat: enforce frame link scoped read guard8452d9e6b9b8ceae8bf6c31e0ffa146fa65ba444:docs: record FLSR Mindraw baselinePM 收敛 PM-FLSR-GATE。