{
  "generator": "ai-ds-lab/metrics/retrospection-s2-claims.mjs",
  "criterionSource": "lab 自写（结构匹配：规则号按定义形态，非散文提及）",
  "boundaries": [
    "B1 present 命中只证标识以定义形态出现，不证语义等价（语义属 T3 / S3 提炼）",
    "B2 只覆盖复盘显式写出落点的条目",
    "B3 落到 repo 之外的（~/.claude/agents、跨 session memory）记 out-of-repo，lab 不读用户主目录（§8）"
  ],
  "total": 30,
  "asClaimed": 23,
  "relocated": 7,
  "claimFailed": 0,
  "note": "relocated = 结论确实在册，但不在复盘自述的落点上 ⇒ 对「能不能删复盘」等价于 as-claimed；对「自述可信度」是负面证据",
  "rows": [
    {
      "from": "2026-05-13-layout-a-line-by-line.md",
      "claim": "Layout A-逐行 写进 mockup-conventions §双语支持",
      "target": "docs/internal/mockup-conventions.md",
      "pattern": "/A-逐行|逐行内联/",
      "expect": "present",
      "targetExists": true,
      "hit": true,
      "verdict": "as-claimed",
      "evidence": {
        "file": "docs/internal/mockup-conventions.md",
        "line": 51,
        "text": "| §M23.14 卡内排版：双语堆叠行距（组内紧 / 组间松 / 段间最松 三档差异化）+ 模块段名层级（section heading = cyan `#33A4FD` + Medium 大号）| **UX 卡 / PRD 卡正文 ZH 译文堆在 EN 行下方（A-下 / A-逐行 / 多语堆叠"
      },
      "foundAt": "docs/internal/mockup-conventions.md"
    },
    {
      "from": "2026-07-14-m23-18-auto-apply-calibration.md",
      "claim": "M23.18 浅色版规则写进 mockup-conventions",
      "target": "docs/internal/mockup-conventions.md",
      "pattern": "/^#{1,6}\\s*\\*{0,2}M23\\.18(?![\\w.])|^\\s*[-*+]\\s*\\*{0,2}M23\\.18(?![\\w.])|^\\s*\\|\\s*\\*{0,2}M23\\.18(?![\\w.])|^\\s*\\*\\*M23\\.18(?![\\w.])/m",
      "expect": "present",
      "targetExists": true,
      "hit": true,
      "verdict": "as-claimed",
      "evidence": {
        "file": "docs/internal/mockup-conventions.md",
        "line": 876,
        "text": "#### M23.18 — 浅色主题匹配变体（Light-Theme-Matching Card Skin）— 2026-07-14 新增"
      },
      "foundAt": "docs/internal/mockup-conventions.md"
    },
    {
      "from": "2026-06-01-source-type-mockup-batch.md",
      "claim": "Q18 setCurrentPageAsync 回流",
      "target": "docs/internal/figma-technical-reference.md",
      "pattern": "/Q18/",
      "expect": "present",
      "targetExists": true,
      "hit": true,
      "verdict": "as-claimed",
      "evidence": {
        "file": "docs/internal/figma-technical-reference.md",
        "line": 626,
        "text": "## Q18 — `figma.currentPage` ≠ 目标页：写操作前必须 setCurrentPageAsync（2026-06-01 新增）"
      },
      "foundAt": "docs/internal/figma-technical-reference.md"
    },
    {
      "from": "2026-06-01-source-type-mockup-batch.md",
      "claim": "Q19 TEXT node hasChildren 类型守卫回流",
      "target": "docs/internal/figma-technical-reference.md",
      "pattern": "/Q19/",
      "expect": "present",
      "targetExists": true,
      "hit": true,
      "verdict": "as-claimed",
      "evidence": {
        "file": "docs/internal/figma-technical-reference.md",
        "line": 658,
        "text": "## Q19 — TEXT node `.children` 访问直接抛 TypeError（须类型守卫）（2026-06-01 新增）"
      },
      "foundAt": "docs/internal/figma-technical-reference.md"
    },
    {
      "from": "2026-06-01-source-type-mockup-batch.md",
      "claim": "Q20 INSTANCE clone layoutSizing 回流",
      "target": "docs/internal/figma-technical-reference.md",
      "pattern": "/Q20/",
      "expect": "present",
      "targetExists": true,
      "hit": true,
      "verdict": "as-claimed",
      "evidence": {
        "file": "docs/internal/figma-technical-reference.md",
        "line": 696,
        "text": "## Q20 — INSTANCE clone 后 `layoutSizingHorizontal = \"FILL\"` 可能静默失败（2026-06-01 新增）"
      },
      "foundAt": "docs/internal/figma-technical-reference.md"
    },
    {
      "from": "2026-05-09-microapps-mockup-retrospect.md",
      "claim": "M11.1 probe-based 自查",
      "target": "docs/internal/mockup-conventions.md",
      "pattern": "/^#{1,6}\\s*\\*{0,2}M11\\.1(?![\\w.])|^\\s*[-*+]\\s*\\*{0,2}M11\\.1(?![\\w.])|^\\s*\\|\\s*\\*{0,2}M11\\.1(?![\\w.])|^\\s*\\*\\*M11\\.1(?![\\w.])/m",
      "expect": "present",
      "relocatedTo": "docs/internal/design-process.md",
      "targetExists": true,
      "hit": true,
      "verdict": "relocated",
      "evidence": {
        "file": "docs/internal/design-process.md",
        "line": 985,
        "text": "### M11.1 — Probe-based 自查（4 步法）"
      },
      "foundAt": "docs/internal/design-process.md"
    },
    {
      "from": "2026-05-09-microapps-mockup-retrospect.md",
      "claim": "M15 库未实证不得宣告不存在",
      "target": "docs/internal/mockup-conventions.md",
      "pattern": "/^#{1,6}\\s*\\*{0,2}M15(?![\\w.])|^\\s*[-*+]\\s*\\*{0,2}M15(?![\\w.])|^\\s*\\|\\s*\\*{0,2}M15(?![\\w.])|^\\s*\\*\\*M15(?![\\w.])/m",
      "expect": "present",
      "relocatedTo": "docs/internal/design-process.md",
      "targetExists": true,
      "hit": true,
      "verdict": "relocated",
      "evidence": {
        "file": "docs/internal/design-process.md",
        "line": 1077,
        "text": "## M15 — Source 未实证不得宣告\"不存在\""
      },
      "foundAt": "docs/internal/design-process.md"
    },
    {
      "from": "2026-05-09-microapps-mockup-retrospect.md",
      "claim": "M20 列宽 FIXED vs FILL 分类",
      "target": "docs/internal/mockup-conventions.md",
      "pattern": "/原\\s*M20|FIXED vs FILL/",
      "expect": "present",
      "relocatedTo": "docs/internal/figma-technical-reference.md",
      "targetExists": true,
      "hit": true,
      "verdict": "relocated",
      "evidence": {
        "file": "docs/internal/figma-technical-reference.md",
        "line": 63,
        "text": "## Q4 — Column 宽度：FIXED vs FILL 按内容类型分类（原 M20）"
      },
      "foundAt": "docs/internal/figma-technical-reference.md"
    },
    {
      "from": "2026-05-11-mockup-conventions-trifecta-rule-update.md",
      "claim": "M22 User Design Intent 新规则",
      "target": "docs/internal/mockup-conventions.md",
      "pattern": "/^#{1,6}\\s*\\*{0,2}M22(?![\\w.])|^\\s*[-*+]\\s*\\*{0,2}M22(?![\\w.])|^\\s*\\|\\s*\\*{0,2}M22(?![\\w.])|^\\s*\\*\\*M22(?![\\w.])/m",
      "expect": "present",
      "relocatedTo": "docs/internal/design-process.md",
      "targetExists": true,
      "hit": true,
      "verdict": "relocated",
      "evidence": {
        "file": "docs/internal/design-process.md",
        "line": 274,
        "text": "## M22 — User Design Intent Acknowledgment（前置 Gate）"
      },
      "foundAt": "docs/internal/design-process.md"
    },
    {
      "from": "2026-05-11-m21-r6-existing-pattern-reuse.md",
      "claim": "M21 落 mockup-conventions",
      "target": "docs/internal/mockup-conventions.md",
      "pattern": "/^#{1,6}\\s*\\*{0,2}M21(?![\\w.])|^\\s*[-*+]\\s*\\*{0,2}M21(?![\\w.])|^\\s*\\|\\s*\\*{0,2}M21(?![\\w.])|^\\s*\\*\\*M21(?![\\w.])/m",
      "expect": "present",
      "relocatedTo": "docs/internal/design-process.md",
      "targetExists": true,
      "hit": true,
      "verdict": "relocated",
      "evidence": {
        "file": "docs/internal/design-process.md",
        "line": 1142,
        "text": "## M21 — Existing Product Incremental Local Reuse"
      },
      "foundAt": "docs/internal/design-process.md"
    },
    {
      "from": "2026-05-11-mockup-conventions-trifecta-rule-update.md",
      "claim": "M14 范围扩到「任何参考输入」",
      "target": "docs/internal/mockup-conventions.md",
      "pattern": "/^#{1,6}\\s*\\*{0,2}M14(?![\\w.])|^\\s*[-*+]\\s*\\*{0,2}M14(?![\\w.])|^\\s*\\|\\s*\\*{0,2}M14(?![\\w.])|^\\s*\\*\\*M14(?![\\w.])/m",
      "expect": "present",
      "relocatedTo": "docs/internal/design-process.md",
      "targetExists": true,
      "hit": true,
      "verdict": "relocated",
      "evidence": {
        "file": "docs/internal/design-process.md",
        "line": 1009,
        "text": "## M14 — Reference Input Adaptation（复刻前问适配性）"
      },
      "foundAt": "docs/internal/design-process.md"
    },
    {
      "from": "2026-05-11-m21-r6-existing-pattern-reuse.md",
      "claim": "R6 镜像进 code-conventions",
      "target": "docs/internal/code-conventions.md",
      "pattern": "/^#{1,6}\\s*\\*{0,2}R6(?![\\w.])|^\\s*[-*+]\\s*\\*{0,2}R6(?![\\w.])|^\\s*\\|\\s*\\*{0,2}R6(?![\\w.])|^\\s*\\*\\*R6(?![\\w.])/m",
      "expect": "present",
      "targetExists": true,
      "hit": true,
      "verdict": "as-claimed",
      "evidence": {
        "file": "docs/internal/code-conventions.md",
        "line": 399,
        "text": "## R6 — 已建立产品的增量优先复用 local"
      },
      "foundAt": "docs/internal/code-conventions.md"
    },
    {
      "from": "2026-05-12-evolution-step-3.md",
      "claim": "拆出 design-process.md",
      "target": "docs/internal/design-process.md",
      "pattern": "/./",
      "expect": "present",
      "targetExists": true,
      "hit": true,
      "verdict": "as-claimed",
      "evidence": {
        "file": "docs/internal/design-process.md",
        "line": 1,
        "text": "# Design Process — Shared Conventions"
      },
      "foundAt": "docs/internal/design-process.md"
    },
    {
      "from": "2026-05-12-evolution-step-3.md",
      "claim": "拆出 domain-tvu.md",
      "target": "docs/internal/domain-tvu.md",
      "pattern": "/./",
      "expect": "present",
      "targetExists": true,
      "hit": true,
      "verdict": "as-claimed",
      "evidence": {
        "file": "docs/internal/domain-tvu.md",
        "line": 1,
        "text": "# TVU Business Domain Rules"
      },
      "foundAt": "docs/internal/domain-tvu.md"
    },
    {
      "from": "2026-05-12-evolution-step-3.md",
      "claim": "拆出 tools/figma-quirks.md",
      "target": "docs/internal/tools/figma-quirks.md",
      "pattern": "/./",
      "expect": "present",
      "targetExists": true,
      "hit": true,
      "verdict": "as-claimed",
      "evidence": {
        "file": "docs/internal/tools/figma-quirks.md",
        "line": 1,
        "text": "# Figma API Quirks — Reference Table"
      },
      "foundAt": "docs/internal/tools/figma-quirks.md"
    },
    {
      "from": "2026-05-12-evolution-step-2.md",
      "claim": "M17-M20 迁出为 figma-technical-reference.md",
      "target": "docs/internal/figma-technical-reference.md",
      "pattern": "/./",
      "expect": "present",
      "targetExists": true,
      "hit": true,
      "verdict": "as-claimed",
      "evidence": {
        "file": "docs/internal/figma-technical-reference.md",
        "line": 1,
        "text": "# Figma Technical Reference — API Quirks"
      },
      "foundAt": "docs/internal/figma-technical-reference.md"
    },
    {
      "from": "2026-05-13-onboarding-gate-enforcement.md",
      "claim": "meta-rules trigger K（客观可测规则须 L3+）",
      "target": "docs/meta-rules.md",
      "pattern": "/触发器\\s*K|trigger\\s*K/i",
      "expect": "present",
      "targetExists": true,
      "hit": true,
      "verdict": "as-claimed",
      "evidence": {
        "file": "docs/meta-rules.md",
        "line": 37,
        "text": "- **enforcement 层级（触发器 K）**：**L4（pre-commit gate）**——`audit:sort-tokens`（`scripts/audit-sort-tokens.mjs`，2026-07-07 落地）机械校验 I1 同名分组标题不重复 + I2 无游离 toke"
      },
      "foundAt": "docs/meta-rules.md"
    },
    {
      "from": "2026-05-13-v020-release-and-infra-f30.md",
      "claim": "meta-rules trigger M（排期决策反模式）",
      "target": "docs/meta-rules.md",
      "pattern": "/触发器\\s*M|trigger\\s*M/i",
      "expect": "present",
      "targetExists": true,
      "hit": true,
      "verdict": "as-claimed",
      "evidence": {
        "file": "docs/meta-rules.md",
        "line": 312,
        "text": "**enforcement 层级（触发器 K）**：L1（AI 自我约束，无法机械校验\"理由是否成立\"）；本 4 问是触发器 F 的**推荐专项延伸**，非新规则——把已散落的触发器 M（排期反模式）/ 触发器 I（理由实证）/ memory `lead-with-robust`·`review-r"
      },
      "foundAt": "docs/meta-rules.md"
    },
    {
      "from": "2026-05-13-onboarding-gate-enforcement.md",
      "claim": "AGENTS.md Onboarding Gate 段",
      "target": "AGENTS.md",
      "pattern": "/Onboarding Gate/i",
      "expect": "present",
      "targetExists": true,
      "hit": true,
      "verdict": "as-claimed",
      "evidence": {
        "file": "AGENTS.md",
        "line": 61,
        "text": "## ⛔ Onboarding Gate（第一个项目相关回答前 mandatory）"
      },
      "foundAt": "AGENTS.md"
    },
    {
      "from": "2026-05-11-package-rename-scope-alignment.md",
      "claim": "STATUS.md Release wrap-up 必改项（协议补丁）",
      "target": "docs/STATUS.md",
      "pattern": "/Release wrap-up 必改项/",
      "expect": "present",
      "relocatedTo": "docs/WRAP-UP.md",
      "targetExists": true,
      "hit": true,
      "verdict": "relocated",
      "evidence": {
        "file": "docs/WRAP-UP.md",
        "line": 23,
        "text": "### Release wrap-up 必改项（仅 release tag pushed 时强制）"
      },
      "foundAt": "docs/WRAP-UP.md"
    },
    {
      "from": "2026-05-11-package-rename-scope-alignment.md",
      "claim": "「CI green ≠ registry 接受」这条硬纪律仍在册",
      "target": "docs/WRAP-UP.md",
      "pattern": "/silent fail|CI green 只代表 step exit 0/",
      "expect": "present",
      "targetExists": true,
      "hit": true,
      "verdict": "as-claimed",
      "evidence": {
        "file": "docs/WRAP-UP.md",
        "line": 25,
        "text": "> **协议规则**（2026-05-11 落实 — v0.1.0/v0.1.1 silent fail 盲点修复点）："
      },
      "foundAt": "docs/WRAP-UP.md"
    },
    {
      "from": "2026-05-13-vitest-fixture-drift.md",
      "claim": "INFRA-F21 pre-commit 加 pnpm test 🔴 block",
      "target": ".husky/pre-commit",
      "pattern": "/vitest|pnpm\\s+(run\\s+)?test/",
      "expect": "present",
      "targetExists": true,
      "hit": true,
      "verdict": "as-claimed",
      "evidence": {
        "file": ".husky/pre-commit",
        "line": 8,
        "text": "echo \"▶ pre-commit: pnpm test (vitest)\""
      },
      "foundAt": ".husky/pre-commit"
    },
    {
      "from": "2026-05-28-bridge-mockup-008-closure.md",
      "claim": "icon-naming-convention §0 R1-R5",
      "target": "docs/internal/icon-naming-convention.md",
      "pattern": "/\\bR1\\b/",
      "expect": "present",
      "targetExists": true,
      "hit": true,
      "verdict": "as-claimed",
      "evidence": {
        "file": "docs/internal/icon-naming-convention.md",
        "line": 15,
        "text": "| **R1 prefix 不变** | registry_name 的 `<category>` 段必须等于 Figma folder 对应的 cat (per §2 enum)。**不跨 cat 移动** entries 到\"更语义化\"的 cat（如不要把 `output/facebook` 改"
      },
      "foundAt": "docs/internal/icon-naming-convention.md"
    },
    {
      "from": "2026-05-28-bridge-mockup-008-closure.md",
      "claim": "audit-figma-vs-sot.mjs 落地",
      "target": "figma-sync/audit-figma-vs-sot.mjs",
      "pattern": "/./",
      "expect": "present",
      "targetExists": true,
      "hit": true,
      "verdict": "as-claimed",
      "evidence": {
        "file": "figma-sync/audit-figma-vs-sot.mjs",
        "line": 1,
        "text": "#!/usr/bin/env node"
      },
      "foundAt": "figma-sync/audit-figma-vs-sot.mjs"
    },
    {
      "from": "2026-05-14-tier1a-translation-schema.md",
      "claim": "audit:translation-completeness 成为 strict gate",
      "target": "package.json",
      "pattern": "/audit:translation-completeness/",
      "expect": "present",
      "targetExists": true,
      "hit": true,
      "verdict": "as-claimed",
      "evidence": {
        "file": "package.json",
        "line": 90,
        "text": "\"prepublishOnly\": \"pnpm run audit:icon-fill-currentcolor && pnpm run audit:icon-category-enum && pnpm run audit:icon-leaf-kebab && pnpm run audit:no-h"
      },
      "foundAt": "package.json"
    },
    {
      "from": "2026-06-01-affordance-sot-shard-and-parallel-session.md",
      "claim": "loader-shard：affordance-sot.mjs loader",
      "target": "figma-sync/lib/affordance-sot.mjs",
      "pattern": "/./",
      "expect": "present",
      "targetExists": true,
      "hit": true,
      "verdict": "as-claimed",
      "evidence": {
        "file": "figma-sync/lib/affordance-sot.mjs",
        "line": 1,
        "text": "/**"
      },
      "foundAt": "figma-sync/lib/affordance-sot.mjs"
    },
    {
      "from": "2026-05-08-phase-x4-2-and-badge-rename.md",
      "claim": "audit-docs-site-readiness 认 @/src alias（1-line fix）",
      "target": "figma-sync/audit-docs-site-readiness.mjs",
      "pattern": "/@\\\\?\\/src|@\\//",
      "expect": "present",
      "targetExists": true,
      "hit": true,
      "verdict": "as-claimed",
      "evidence": {
        "file": "figma-sync/audit-docs-site-readiness.mjs",
        "line": 36,
        "text": "// Accept both relative `../../../src/...` and alias `@/src/...` import paths."
      },
      "foundAt": "figma-sync/audit-docs-site-readiness.mjs"
    },
    {
      "from": "2026-05-13-canonical-011-prompt-gap.md",
      "claim": "§2 export wiring 清单「本次先存档，未写进 meta-rules」",
      "target": "docs/meta-rules.md",
      "pattern": "/export.wiring|export-wiring/i",
      "expect": "absent",
      "targetExists": true,
      "hit": false,
      "verdict": "as-claimed",
      "evidence": null,
      "foundAt": null
    },
    {
      "from": "2026-05-13-canonical-011-prompt-gap.md",
      "claim": "未建 canonical-implementation-checklist 模板",
      "target": "docs/internal/_prompts/_templates/canonical-implementation-checklist.md",
      "pattern": "/./",
      "expect": "absent",
      "targetExists": false,
      "hit": false,
      "verdict": "as-claimed",
      "evidence": null,
      "foundAt": null
    },
    {
      "from": "2026-05-11-mockup-conventions-trifecta-rule-update.md",
      "claim": "「规则文档更新类 plan owner 可直接 commit」仅列为可选 future improvement",
      "target": "docs/meta-rules.md",
      "pattern": "/规则文档更新类/",
      "expect": "absent",
      "targetExists": true,
      "hit": false,
      "verdict": "as-claimed",
      "evidence": null,
      "foundAt": null
    }
  ]
}
