以 Coder@m4c 身份完成 P-20260701-mexp09b-target-frame-pixel-payload 下的 M4C-MEXP09B-01:消费 Mindraw 已完成的 target Frame PNG pixel payload,把目标 Frame-only PNG 作为真实图片输入交给 vision-capable agent / model,同时保证 m4c 的 sanitized report 不泄漏 raw bytes、dataURL、token、endpoint、runtime path 或 Frame 外内容。
m4c-frame-link-agent-resolver.mjs 中新增 resolve-pixel / smoke-pixel。resolve_mindraw_target_frame_pixel_payload。targetFramePixelPayload="read" 与 JSON-RPC mindraw.app.get_target_frame_pixel_payload。mimeType、尺寸、byteLength、SHA、pixelsIncluded=true、bytesIncluded=true 和 pixelScopeAudit。M4C-MEXP09B-01 标记为完成,并将下一步归属设为 PM-MEXP09B-GATE。/Users/ar/Projects/ExcalidrawX/p.mindrawforcodex/03-O/C3.tools/scripts/m4c-frame-link-agent-resolver.mjs/Users/ar/Projects/ExcalidrawX/p.mindrawforcodex/03-O/C3.tools/scripts/m4c-frame-link-mcp-server.mjs/Users/ar/Projects/ExcalidrawX/p.mindrawforcodex/03-O/K2.项目管理/联调QA/2026-07-01-M4C-MEXP09B-01TargetFramePixelPayload.mdresolve-pixelsmoke-pixelresolve_mindraw_target_frame_pixel_payloadvisionInput.channel="in-memory-data-url"、dataUrlAvailableForModel=true、dataUrlIncludedInSanitizedPackage=false。m4c-mexp09b-01-pixel-payload-consumer.jsonm4c-mexp09b-01-live-gate-attempt.jsonm4c-mexp09b-01-mcp-stdio.jsonlfindings=[]/Users/ar/Projects/ExcalidrawX/p.mindrawforcodex/03-O/C3.tools/scripts/m4c-frame-link-agent-resolver.mjs/Users/ar/Projects/ExcalidrawX/p.mindrawforcodex/03-O/C3.tools/scripts/m4c-frame-link-mcp-server.mjs/Users/ar/Projects/ExcalidrawX/p.mindrawforcodex/03-O/C3.tools/README.md/Users/ar/Projects/ExcalidrawX/p.mindrawforcodex/03-O/C1.source/CODEGRAPH.md/Users/ar/Projects/ExcalidrawX/p.mindrawforcodex/INDEX.md/Users/ar/Projects/ExcalidrawX/p.mindrawforcodex/03-O/K2.项目管理/README.md/Users/ar/Projects/ExcalidrawX/p.mindrawforcodex/03-O/K2.项目管理/联调QA/2026-07-01-M4C-MEXP09B-01TargetFramePixelPayload.md/Users/ar/Projects/ExcalidrawX/02-P/plan-progress.markdown用途:复跑 m4c target Frame pixel payload consumer、MCP stdio 和敏感信息扫描。
前置条件:Mindraw runtime 已刷新并暴露 targetFramePixelPayload="read";若无 live runtime,可先跑 fixture / smoke。
node --check /Users/ar/Projects/ExcalidrawX/p.mindrawforcodex/03-O/C3.tools/scripts/m4c-frame-link-agent-resolver.mjs
node --check /Users/ar/Projects/ExcalidrawX/p.mindrawforcodex/03-O/C3.tools/scripts/m4c-frame-link-mcp-server.mjs
node /Users/ar/Projects/ExcalidrawX/p.mindrawforcodex/03-O/C3.tools/scripts/m4c-frame-link-agent-resolver.mjs smoke-pixel --report /Users/ar/Projects/ExcalidrawX/p.mindrawforcodex/02-P/MEXP09B-TargetFramePixelPayload/qa/m4c-mexp09b-01-pixel-payload-consumer.json
node /Users/ar/Projects/ExcalidrawX/p.mindrawforcodex/03-O/C3.tools/scripts/m4c-frame-link-agent-resolver.mjs resolve-pixel --input 'mindraw://localhost?documentId=mdoc_mexp09_gate_visual_context_20260701&elementId=frame_mexp09_gate_target' --out /Users/ar/Projects/ExcalidrawX/p.mindrawforcodex/02-P/MEXP09B-TargetFramePixelPayload/qa/m4c-mexp09b-01-live-gate-attempt.json
敏感扫描:
python3 - <<'PY'
from pathlib import Path
root=Path('/Users/ar/Projects/ExcalidrawX/p.mindrawforcodex/02-P/MEXP09B-TargetFramePixelPayload/qa')
needles=['data:image','base64,','Authorization:','Bearer ','127.0.0.1:','write-api.json','BEGIN PRIVATE KEY','.p12','api_key','app-specific password','payload.dataURL']
findings=[]
for p in root.glob('*'):
if p.is_file():
s=p.read_text(errors='ignore')
for n in needles:
if n in s:
findings.append((str(p), n))
print({'files':len([p for p in root.glob('*') if p.is_file()]), 'findings':findings})
raise SystemExit(1 if findings else 0)
PY
PM-MEXP09B-GATE。