{
  "subjectSha": "19e55102",
  "prereg": {
    "p6UnclassifiedZeros": 10,
    "gatedZeros": null,
    "exemptZeros": null,
    "shapeMinChars": 8
  },
  "totals": {
    "gated": 25,
    "not-machine-checkable": 30,
    "unclassified": 71,
    "all": 126
  },
  "zerosByState": {
    "gated": {
      "scanned": 25,
      "zeros": 3
    },
    "not-machine-checkable": {
      "scanned": 30,
      "zeros": 0
    },
    "unclassified": {
      "scanned": 71,
      "zeros": 10
    }
  },
  "zeroIds": {
    "gated": [
      "docs/internal/mockup-conventions.md#Acceptance~9",
      "docs/internal/mockup-conventions.md#C5",
      "docs/internal/mockup-conventions.md#M-DISCIPLINE.SYNC"
    ],
    "not-machine-checkable": [],
    "unclassified": [
      "docs/internal/mockup-conventions.md#M-DISCIPLINE.SYNC@blind:3079",
      "docs/internal/mockup-conventions.md#M-DISCIPLINE.SYNC@blind:3107",
      "docs/internal/mockup-conventions.md#M-INTEGRITY@blind:1247",
      "docs/internal/mockup-conventions.md#M-INTEGRITY@blind:1256",
      "docs/internal/mockup-conventions.md#M23.18",
      "docs/internal/mockup-conventions.md#M23.18.1@blind:917",
      "docs/internal/mockup-conventions.md#M23.6",
      "docs/internal/mockup-conventions.md#M23.8.1",
      "docs/internal/mockup-conventions.md#`Jira",
      "docs/internal/mockup-conventions.md#允许内容@blind:1608"
    ]
  },
  "k": 13,
  "branches": {
    "A": {
      "denom": 126,
      "gated": {
        "n": 25,
        "pct": 19.8
      },
      "not-machine-checkable": {
        "n": 30,
        "pct": 23.8
      },
      "unclassified": {
        "n": 71,
        "pct": 56.3
      }
    },
    "B": {
      "denom": 113,
      "gated": {
        "n": 22,
        "pct": 19.5
      },
      "not-machine-checkable": {
        "n": 30,
        "pct": 26.5
      },
      "unclassified": {
        "n": 61,
        "pct": 54
      }
    },
    "k": 13
  },
  "shapeCounts": {
    "inline-prose": 12,
    "following-prose": 1,
    "genuinely-empty": 0
  },
  "zerosDetail": [
    {
      "id": "docs/internal/mockup-conventions.md#C5",
      "state": "gated",
      "line": 431,
      "heading": "C5 — Semantic-color-first（语义色优先于 grey 原语）（2026-06-12 新增）",
      "shape": "inline-prose",
      "shapeEvidence": "text/icon/bg/line 角色节点绑了 `UX/Grey/grey-N`、而存在对应 `Color Type/` 语义变量 → 违例（改绑语义变量）。机检见 D16 verifier（`audit-mockup-binding-fidelity`）。"
    },
    {
      "id": "docs/internal/mockup-conventions.md#M23.18",
      "state": "unclassified",
      "line": 902,
      "heading": "M23.18 — 浅色主题匹配变体（Light-Theme-Matching Card Skin）— 2026-07-14 新增",
      "shape": "inline-prose",
      "shapeEvidence": "起手 M48 self-check 清单必含一行\"本任务 PRD/UX/Journey 卡画布主题探测结果 = light/dark/unknown → 采用 M23.18/navy\"，不得凭印象跳过探测直接选样式。"
    },
    {
      "id": "docs/internal/mockup-conventions.md#M23.18.1@blind:917",
      "state": "unclassified",
      "line": 917,
      "heading": "M23.18.1 — Page 画布底色跟随 mockup 主题（同源扩展，2026-07-22 owner 回流）",
      "shape": "inline-prose",
      "shapeEvidence": "新建 / 迭代 mockup page 后，M48 self-check + wrap-up 能答\"本 page 产品 frame 主题探测 = dark/light/mixed → 画布底色 = 0.418 / #F5F5F5 / 0.418(mixed)\"；page 画布不得停留 Figma 默认白。"
    },
    {
      "id": "docs/internal/mockup-conventions.md#`Jira",
      "state": "unclassified",
      "line": 976,
      "heading": "`Jira requirement` 组件的取用做法（per-file 地址登记在各 consumer repo）— 2026-06-03 新增 · 2026-08-06 拆分",
      "shape": "inline-prose",
      "shapeEvidence": "`probe → issueKeyText.getRangeHyperlink(0, len)` 返回 `{ type: 'URL', value: '<jira url>' }` 非 null。"
    },
    {
      "id": "docs/internal/mockup-conventions.md#M23.8.1",
      "state": "unclassified",
      "line": 999,
      "heading": "M23.8.1 — 需求来源链接完整性 + 全部可点击（PRD「需求来源/Source」段 + 任意 deliverable，create/update 都遵守）— 2026-06-23 新增",
      "shape": "inline-prose",
      "shapeEvidence": "需求来源段列全需求链上所有相关 ticket（Jira issuelinks 核对无遗漏）；`probe → getRangeHyperlink(idStart, idEnd)` 对每个 ID 返回非 null URL；交付物内无纯文本 ticket ID；外链（Slack 等）同样带 hyperlink。"
    },
    {
      "id": "docs/internal/mockup-conventions.md#M-INTEGRITY@blind:1247",
      "state": "unclassified",
      "line": 1247,
      "heading": "M-INTEGRITY §I5 — 替换既有节点前先 diff（2026-06-17 新增）",
      "shape": "inline-prose",
      "shapeEvidence": "动既有节点前 handoff/wrap-up 能答\"它原本是什么 + 用户最近改了什么 + 我只改了 delta\"；新页面能答\"它在 flow 的哪一步、从哪个入口进\"。"
    },
    {
      "id": "docs/internal/mockup-conventions.md#M-INTEGRITY@blind:1256",
      "state": "unclassified",
      "line": 1256,
      "heading": "M-INTEGRITY §I6 — create / move / place 前先 probe 目标坐标区（防叠加）（2026-06-17 新增）",
      "shape": "inline-prose",
      "shapeEvidence": "任何 create/move 到具体坐标的操作，handoff/wrap-up 能答\"放之前 probe 了目标区、确认空 / 或 reflow 了谁\"；放置后立即跑 `audit:mockup-overlap`（+ §I2）求交复检。"
    },
    {
      "id": "docs/internal/mockup-conventions.md#M23.6",
      "state": "unclassified",
      "line": 1448,
      "heading": "M23.6 — Connector Endpoint Anchoring（两端锚定）+ Frame Content Avoidance（M23 extension）",
      "shape": "inline-prose",
      "shapeEvidence": "handoff doc 必含 connector accuracy audit table，每条 arrow 两端各一行：起点（start dot canvas / 触发元素 bbox / delta / pass-fail）+ 终点（tip canvas / target bbox / delta / pass-fa"
    },
    {
      "id": "docs/internal/mockup-conventions.md#允许内容@blind:1608",
      "state": "unclassified",
      "line": 1608,
      "heading": "允许内容",
      "shape": "inline-prose",
      "shapeEvidence": "本期改动的可验收 checkbox list"
    },
    {
      "id": "docs/internal/mockup-conventions.md#Acceptance~9",
      "state": "gated",
      "line": 1993,
      "heading": "Acceptance",
      "shape": "following-prose",
      "shapeEvidence": "每次 affordance 类元素创建前，handoff doc / annotation / commit message **必含 3 行 trace**："
    },
    {
      "id": "docs/internal/mockup-conventions.md#M-DISCIPLINE.SYNC@blind:3079",
      "state": "unclassified",
      "line": 3079,
      "heading": "M-DISCIPLINE.SYNC — 编辑 confirmed → 自动自检 + 交付物同步（状态转移触发，2026-06-18 新增，修 W3/W5）",
      "shape": "inline-prose",
      "shapeEvidence": "凡结论形如「(没)有某个标记 / 高亮 / 装饰」「这个元素的视觉呈现是 X」，handoff 须记有一次截图后目视的动作；只贴机器值不构成依据。"
    },
    {
      "id": "docs/internal/mockup-conventions.md#M-DISCIPLINE.SYNC@blind:3107",
      "state": "unclassified",
      "line": 3107,
      "heading": "M-DISCIPLINE.SYNC — 编辑 confirmed → 自动自检 + 交付物同步（状态转移触发，2026-06-18 新增，修 W3/W5）",
      "shape": "inline-prose",
      "shapeEvidence": "handoff 含一行形如 `卡量：UX 卡 h3557→3201（-356）· 字符 32184→28745（-10.7%）`，净增时另附一句增长理由。"
    },
    {
      "id": "docs/internal/mockup-conventions.md#M-DISCIPLINE.SYNC",
      "state": "gated",
      "line": 3111,
      "heading": "M-DISCIPLINE.SYNC — 编辑 confirmed → 自动自检 + 交付物同步（状态转移触发，2026-06-18 新增，修 W3/W5）",
      "shape": "inline-prose",
      "shapeEvidence": "改动 confirmed 后，handoff 含 `<!-- mockup-handoff -->` 标记 + 一行 `Conformance report:` 引用 `--report` 落盘的 JSON + 受影响 UX 卡/连线/state-label 已更新 + （若改动涉及外观/行为/术语/色彩语义）§2a "
    }
  ],
  "gatedZeroEvidence": [
    {
      "id": "docs/internal/mockup-conventions.md#C5",
      "file": "docs/internal/mockup-conventions.md",
      "line": 431,
      "heading": "C5 — Semantic-color-first（语义色优先于 grey 原语）（2026-06-12 新增）",
      "shape": "inline-prose",
      "claims": [
        "scripts/audit-mockup-binding-fidelity.mjs"
      ],
      "rawExcerpt": [
        "**Acceptance**：text/icon/bg/line 角色节点绑了 `UX/Grey/grey-N`、而存在对应 `Color Type/*` 语义变量 → 违例（改绑语义变量）。机检见 D16 verifier（`audit-mockup-binding-fidelity`）。",
        "",
        "---",
        "",
        "#### C6 — 新建元素前必须先查目标文件实际订阅的库（不止 TVU 主库）（2026-07-14 新增）",
        ""
      ]
    },
    {
      "id": "docs/internal/mockup-conventions.md#Acceptance~9",
      "file": "docs/internal/mockup-conventions.md",
      "line": 1993,
      "heading": "Acceptance",
      "shape": "following-prose",
      "claims": [
        "scripts/audit-commit-affordance-trace.mjs",
        "scripts/audit-handoff-deliverable-sections.mjs"
      ],
      "rawExcerpt": [
        "#### Acceptance",
        "",
        "每次 affordance 类元素创建前，handoff doc / annotation / commit message **必含 3 行 trace**：",
        "",
        "```",
        "1. Affordance: <category> (intent: <purpose>)"
      ]
    },
    {
      "id": "docs/internal/mockup-conventions.md#M-DISCIPLINE.SYNC",
      "file": "docs/internal/mockup-conventions.md",
      "line": 3111,
      "heading": "M-DISCIPLINE.SYNC — 编辑 confirmed → 自动自检 + 交付物同步（状态转移触发，2026-06-18 新增，修 W3/W5）",
      "shape": "inline-prose",
      "claims": [
        "scripts/audit-mockup-handoff-evidence.mjs"
      ],
      "rawExcerpt": [
        "**Acceptance（M-DISCIPLINE.SYNC）**：改动 confirmed 后，handoff 含 `<!-- mockup-handoff -->` 标记 + **一行 `Conformance report:` 引用 `--report` 落盘的 JSON** + 受影响 UX 卡/连线/state-label 已更新 + **（若改动涉及外观/行为/术语/色彩语义）§2a 过时描述扫查已跑、生产区旧措辞 0 残留（out-of-scope edge/deferred section 命中项须列出并说明为何跳过）** + **（若本轮扩展了 feature 的 scope，或回流/改动了规则条文，或把一个 surface 的口径复用到另一个 surface）§2a ③ 轮互斥对照已跑** —— 同文件侧：所有 scope 声明句（`仅…`/`不提供…`/`本期不做…`/`v1 不…`/`deferred`）逐条判过是否被本轮推翻、推翻的已删或已划线标注；跨文件侧：新写的规则条文与同轮案例决策双向引用齐全；**跨 surface 侧：复用来的口径已 probe 目标 surface 界面本体实测过，两端形态不同处已补对应关系句**。report 文件不存在 / 有子审计 exitCode≠0 / 超时效窗口 = done 不成立（`audit-mockup-handoff-evidence.mjs` repo 守门机器拦截；手打 Integrity 文本不再有效）。",
        "",
        "#### Acceptance",
        "",
        "- [ ] 起手协议执行后、画第一个产品 frame 前，conversation 内可见一次 `TodoWrite` 调用，list 含本次任务适用规则编号",
        "- [ ] handoff doc 顶部必含一行 **\"Rule checklist: \\[M0 ✅ / M23 ✅ / M23.8 ✅ / M45 ✅ / ...\\]\"**，所有适用规则状态显式"
      ]
    }
  ],
  "proposalF4Ids": null,
  "controls": [
    {
      "id": "must-hit-0/itemcount-identity-and-perturbation",
      "skip": false,
      "pass": true,
      "detail": "恒等臂对不齐 0（须 0）· 扰动臂对不齐 2（须 >0）"
    },
    {
      "id": "must-hit-1/zero-sections-lines-exist",
      "skip": false,
      "pass": true,
      "detail": "零核查项段 13 个，其中行号不存在的 = 0"
    },
    {
      "id": "must-hit-2/p6-f4-idset-reproduces",
      "skip": true,
      "pass": null,
      "detail": "非 P6 ⇒ 本条不适用"
    },
    {
      "id": "must-hit-3/synthetic-zero-caught-in-every-state",
      "skip": false,
      "pass": true,
      "detail": "三态合成探针被抓到 3/3：gated / not-machine-checkable / unclassified"
    },
    {
      "id": "must-not-hit-4/nonzero-never-counted",
      "skip": false,
      "pass": true,
      "detail": "带 1 条核查项的合成段被误算 = false"
    },
    {
      "id": "must-hit-5/same-probe-caught-when-emptied",
      "skip": false,
      "pass": true,
      "detail": "同一探针清空核查项后被抓到 = true"
    },
    {
      "id": "must-hit-6/branch-arithmetic-closes",
      "skip": false,
      "pass": true,
      "detail": "A 126/126 · B 113/113"
    },
    {
      "id": "must-hit-7/branches-actually-differ",
      "skip": false,
      "pass": true,
      "detail": "k = 13 · 两分支存在差异 = true"
    },
    {
      "id": "must-hit-8/cross-pin-idset-not-just-count",
      "skip": false,
      "pass": true,
      "detail": "本 pin 13 · 对比 pin 13 · 只在本 pin 0（—）· 只在对比 pin 0（—）"
    },
    {
      "id": "must-hit-9/gated-zeros-carry-evidence",
      "skip": false,
      "pass": true,
      "detail": "gated 零核查项 3 条 · 带证据 3 条 · 证据完整 = true"
    },
    {
      "id": "must-hit-10/shape-criterion-separates-three-forms",
      "skip": false,
      "pass": true,
      "detail": "期望 inline-prose / following-prose / genuinely-empty · 实得 inline-prose / following-prose / genuinely-empty"
    },
    {
      "id": "must-not-hit-11/empty-probe-never-called-prose",
      "skip": false,
      "pass": true,
      "detail": "空探针（含空围栏）被判为 genuinely-empty"
    },
    {
      "id": "must-hit-12/same-empty-probe-caught-when-prose-added",
      "skip": false,
      "pass": true,
      "detail": "同一探针加一行散文后被判为 following-prose"
    },
    {
      "id": "must-hit-13/shape-counts-close-to-k",
      "skip": false,
      "pass": true,
      "detail": "形态三类合计 13 · k = 13（inline-prose:12 · following-prose:1 · genuinely-empty:0）"
    }
  ]
}