[
  {
    "name": "BASELINE",
    "why": "未注入（对照基线）",
    "probe": {
      "ok": true,
      "sections": 3,
      "ids": [
        "docs/internal/domain-tvu.md#P1",
        "docs/internal/domain-tvu.md#P5",
        "docs/internal/domain-tvu.md#P6"
      ],
      "items": [
        "P1=2项",
        "P5=2项",
        "P6=0项"
      ]
    },
    "nail": {
      "exit": 0,
      "passed": 34,
      "failed": 0,
      "total": 34,
      "failedTitles": []
    }
  },
  {
    "name": "n2-acc-wide",
    "why": "收 `- **Acceptance**：` / 缩进 `**Acceptance**：` / 中文 `#### 验收标准`（L 格 7 段）",
    "probe": {
      "ok": true,
      "sections": 6,
      "ids": [
        "docs/internal/domain-tvu.md#P1",
        "docs/internal/domain-tvu.md#P2",
        "docs/internal/domain-tvu.md#P3",
        "docs/internal/domain-tvu.md#验收标准（L",
        "docs/internal/domain-tvu.md#P5",
        "docs/internal/domain-tvu.md#P6"
      ],
      "items": [
        "P1=2项",
        "P2=0项",
        "P3=0项",
        "验收标准（L=1项",
        "P5=2项",
        "P6=0项"
      ]
    },
    "nail": {
      "exit": 0,
      "passed": 34,
      "failed": 0,
      "total": 34,
      "failedTitles": []
    }
  },
  {
    "name": "n2p-acc-never",
    "why": "对照臂：恒不匹配 ⇒ 若不红则判据恒绿、本档读数作废",
    "probe": {
      "ok": false,
      "err": "1 {\n  \"scanFiles\": [\n    \"docs/internal/mockup-conventions.md\",\n    \"docs/internal/domain-tvu.md\",\n    \"docs/internal/design-process.md\",\n    \"docs/internal/figma-technical-reference.md\",\n    \"docs/inte"
    },
    "nail": {
      "exit": 1,
      "passed": 11,
      "failed": 23,
      "total": 34,
      "failedTitles": [
        " 绿档 —— 读数必须是 fixture 自己的（非空过凭据） 无自陈无豁免时全部落 unclassified，且数目对得上",
        " 绿档 —— 读数必须是 fixture 自己的（非空过凭据） 闸自陈后该段转 gated（fixture 自己的数）",
        " 绿档 —— 读数必须是 fixture 自己的（非空过凭据） 豁免表让该段转 not-machine-checkable",
        " 分母口径 —— 两种 checklist 形态 + `·` 核查项计数 裸 `- ` 形态也进分母（只认 `- [ ]` 会漏掉整类，真源 §M10 就是裸的）",
        " 分母口径 —— 两种 checklist 形态 + `·` 核查项计数 `·×3` 数成 4 个核查项（真源 §M17:214 的实际形态）",
        " 分母口径 —— 两种 checklist 形态 + `·` 核查项计数 Acceptance 之后的顶层散文行终止该段 —— 后面的做法层列表项不算核查项",
        " 分母口径 —— 两种 checklist 形态 + `·` 核查项计数 散文形态的 Acceptance 段（0 条 checklist）照样进分母",
        " S4 —— 自陈子项数对位（CANONICAL-F104 那个「4 项实现 3 项」的病） 少报一个核查项 ⇒ 红且点名 S4",
        " S4 —— 自陈子项数对位（CANONICAL-F104 那个「4 项实现 3 项」的病） 规则里新增第 5 个核查项（`·` 形态：往现有那条塞）而自陈没跟上 ⇒ 红",
        " S4 —— 自陈子项数对位（CANONICAL-F104 那个「4 项实现 3 项」的病） 规则里新增第 5 个核查项（新增一条 `- [ ]` 形态）而自陈没跟上 ⇒ 也必须红",
        " S4 —— 自陈子项数对位（CANONICAL-F104 那个「4 项实现 3 项」的病） 不写 [N] 就不核（可选，不把没准备好的闸逼进假声明）",
        " S2 —— unclassified 棘轮（只许缩） 超过 BASELINE 67 ⇒ 红且点名 S2",
        " S2 —— unclassified 棘轮（只许缩） 恰好等于 BASELINE 67 ⇒ 绿（边界，不是 off-by-one）",
        " S2 —— unclassified 棘轮（只许缩） 上闸后给新段配自陈 ⇒ 重新变绿（棘轮可满足，不是死闸）",
        " 豁免粒度 —— 段级 + 文件级 文件级豁免（id 无 `#`）一次盖住该文件全部段",
        " 豁免粒度 —— 段级 + 文件级 文件级豁免下，某段若有闸自陈 ⇒ 按 gated 记（自陈优先，⛔ 不判矛盾）",
        " 豁免粒度 —— 段级 + 文件级 --list 标出豁免是文件级还是段级（读者要能分辨盖了多大面）",
        " CLI 形态 --list 是 report-only（exit 0），且逐段列出三态",
        " CLI 形态 --list 在本该红的状态下也 exit 0（它不是闸）",
        " CLI 形态 --json 输出可解析且带三态计数",
        " 自陈解析边界 埋在文件中段（60 行外）的自陈不算数 —— 声明必须在读者一眼能看到的地方",
        " 自陈解析边界 只扫 .mjs（非脚本文件里的同形文本不算自陈）",
        " 自陈解析边界 同一段被两条闸自陈 ⇒ 都记，仍是 gated"
      ]
    }
  },
  {
    "name": "n3-boundary-off",
    "why": "M 格判出该边界在 `AGENTS.md#Jira` 上错误漏收（段内 7 条 → 收 4 条）",
    "probe": {
      "ok": true,
      "sections": 3,
      "ids": [
        "docs/internal/domain-tvu.md#P1",
        "docs/internal/domain-tvu.md#P5",
        "docs/internal/domain-tvu.md#P6"
      ],
      "items": [
        "P1=2项",
        "P5=4项",
        "P6=0项"
      ]
    },
    "nail": {
      "exit": 1,
      "passed": 33,
      "failed": 1,
      "total": 34,
      "failedTitles": [
        " 分母口径 —— 两种 checklist 形态 + `·` 核查项计数 Acceptance 之后的顶层散文行终止该段 —— 后面的做法层列表项不算核查项"
      ]
    }
  },
  {
    "name": "n4-item-prose",
    "why": "M 格判出 `ITEM_RE` 只认 `^- `，散文核查项一律计 0 ⇒ `[0]` 字面为假",
    "probe": {
      "ok": true,
      "sections": 3,
      "ids": [
        "docs/internal/domain-tvu.md#P1",
        "docs/internal/domain-tvu.md#P5",
        "docs/internal/domain-tvu.md#P6"
      ],
      "items": [
        "P1=2项",
        "P5=5项",
        "P6=1项"
      ]
    },
    "nail": {
      "exit": 1,
      "passed": 33,
      "failed": 1,
      "total": 34,
      "failedTitles": [
        " 分母口径 —— 两种 checklist 形态 + `·` 核查项计数 Acceptance 之后的顶层散文行终止该段 —— 后面的做法层列表项不算核查项"
      ]
    }
  },
  {
    "name": "n5-wiring-off",
    "why": "验证头注释自陈「spawn 整脚本 ⇒ 看得见接线」",
    "probe": {
      "ok": false,
      "err": "? "
    },
    "nail": {
      "exit": 1,
      "passed": 2,
      "failed": 32,
      "total": 34,
      "failedTitles": [
        " 绿档 —— 读数必须是 fixture 自己的（非空过凭据） 无自陈无豁免时全部落 unclassified，且数目对得上",
        " 绿档 —— 读数必须是 fixture 自己的（非空过凭据） 闸自陈后该段转 gated（fixture 自己的数）",
        " 绿档 —— 读数必须是 fixture 自己的（非空过凭据） 豁免表让该段转 not-machine-checkable",
        " 分母口径 —— 两种 checklist 形态 + `·` 核查项计数 裸 `- ` 形态也进分母（只认 `- [ ]` 会漏掉整类，真源 §M10 就是裸的）",
        " 分母口径 —— 两种 checklist 形态 + `·` 核查项计数 `·×3` 数成 4 个核查项（真源 §M17:214 的实际形态）",
        " 分母口径 —— 两种 checklist 形态 + `·` 核查项计数 Acceptance 之后的顶层散文行终止该段 —— 后面的做法层列表项不算核查项",
        " 分母口径 —— 两种 checklist 形态 + `·` 核查项计数 散文形态的 Acceptance 段（0 条 checklist）照样进分母",
        " S4 —— 自陈子项数对位（CANONICAL-F104 那个「4 项实现 3 项」的病） 少报一个核查项 ⇒ 红且点名 S4",
        " S4 —— 自陈子项数对位（CANONICAL-F104 那个「4 项实现 3 项」的病） 规则里新增第 5 个核查项（`·` 形态：往现有那条塞）而自陈没跟上 ⇒ 红",
        " S4 —— 自陈子项数对位（CANONICAL-F104 那个「4 项实现 3 项」的病） 规则里新增第 5 个核查项（新增一条 `- [ ]` 形态）而自陈没跟上 ⇒ 也必须红",
        " S4 —— 自陈子项数对位（CANONICAL-F104 那个「4 项实现 3 项」的病） 不写 [N] 就不核（可选，不把没准备好的闸逼进假声明）",
        " S2 —— unclassified 棘轮（只许缩） 超过 BASELINE 67 ⇒ 红且点名 S2",
        " S2 —— unclassified 棘轮（只许缩） 恰好等于 BASELINE 67 ⇒ 绿（边界，不是 off-by-one）",
        " S2 —— unclassified 棘轮（只许缩） 上闸后给新段配自陈 ⇒ 重新变绿（棘轮可满足，不是死闸）",
        " 豁免粒度 —— 段级 + 文件级 文件级豁免（id 无 `#`）一次盖住该文件全部段",
        " 豁免粒度 —— 段级 + 文件级 文件级豁免下，某段若有闸自陈 ⇒ 按 gated 记（自陈优先，⛔ 不判矛盾）",
        " 豁免粒度 —— 段级 + 文件级 文件级豁免指向的文件没有任何 Acceptance 段 ⇒ 红并要求删行（shrink-only 对两种粒度同权）",
        " 豁免粒度 —— 段级 + 文件级 --list 标出豁免是文件级还是段级（读者要能分辨盖了多大面）",
        " S3 —— 豁免表 shrink-only + 自陈不许悬挂 豁免条目不再命中活源 ⇒ 红并要求删行",
        " S3 —— 豁免表 shrink-only + 自陈不许悬挂 同一段既有闸自陈又挂豁免 ⇒ 红（矛盾）",
        " S3 —— 豁免表 shrink-only + 自陈不许悬挂 自陈指向不存在的段 ⇒ 红（闸写错了 target）",
        " S1 —— fail closed 扫描面文件缺失 ⇒ 红（⛔ 不静默跳过）",
        " S1 —— fail closed 豁免表畸形（缺 reason）⇒ 红",
        " S1 —— fail closed 豁免表 JSON 坏 ⇒ 红",
        " S1 —— fail closed 一个 Acceptance 段都没扫到 ⇒ 红（⛔ 不是「没有 Acceptance」）",
        " CLI 形态 --list 是 report-only（exit 0），且逐段列出三态",
        " CLI 形态 --list 在本该红的状态下也 exit 0（它不是闸）",
        " CLI 形态 未知参数 ⇒ exit 2（fail closed，⛔ 不静默当默认跑）",
        " CLI 形态 --json 输出可解析且带三态计数",
        " 自陈解析边界 埋在文件中段（60 行外）的自陈不算数 —— 声明必须在读者一眼能看到的地方",
        " 自陈解析边界 只扫 .mjs（非脚本文件里的同形文本不算自陈）",
        " 自陈解析边界 同一段被两条闸自陈 ⇒ 都记，仍是 gated"
      ]
    }
  },
  {
    "name": "n5-exit-zero",
    "why": "DS 在 88443639 逐字登记 exports-types 旧面对这一整档零敏感，核本闸是否同病",
    "probe": {
      "ok": true,
      "sections": 3,
      "ids": [
        "docs/internal/domain-tvu.md#P1",
        "docs/internal/domain-tvu.md#P5",
        "docs/internal/domain-tvu.md#P6"
      ],
      "items": [
        "P1=2项",
        "P5=2项",
        "P6=0项"
      ]
    },
    "nail": {
      "exit": 1,
      "passed": 21,
      "failed": 13,
      "total": 34,
      "failedTitles": [
        " S4 —— 自陈子项数对位（CANONICAL-F104 那个「4 项实现 3 项」的病） 少报一个核查项 ⇒ 红且点名 S4",
        " S4 —— 自陈子项数对位（CANONICAL-F104 那个「4 项实现 3 项」的病） 规则里新增第 5 个核查项（`·` 形态：往现有那条塞）而自陈没跟上 ⇒ 红",
        " S4 —— 自陈子项数对位（CANONICAL-F104 那个「4 项实现 3 项」的病） 规则里新增第 5 个核查项（新增一条 `- [ ]` 形态）而自陈没跟上 ⇒ 也必须红",
        " S2 —— unclassified 棘轮（只许缩） 超过 BASELINE 67 ⇒ 红且点名 S2",
        " 豁免粒度 —— 段级 + 文件级 文件级豁免指向的文件没有任何 Acceptance 段 ⇒ 红并要求删行（shrink-only 对两种粒度同权）",
        " S3 —— 豁免表 shrink-only + 自陈不许悬挂 豁免条目不再命中活源 ⇒ 红并要求删行",
        " S3 —— 豁免表 shrink-only + 自陈不许悬挂 同一段既有闸自陈又挂豁免 ⇒ 红（矛盾）",
        " S3 —— 豁免表 shrink-only + 自陈不许悬挂 自陈指向不存在的段 ⇒ 红（闸写错了 target）",
        " S1 —— fail closed 扫描面文件缺失 ⇒ 红（⛔ 不静默跳过）",
        " S1 —— fail closed 豁免表畸形（缺 reason）⇒ 红",
        " S1 —— fail closed 豁免表 JSON 坏 ⇒ 红",
        " S1 —— fail closed 一个 Acceptance 段都没扫到 ⇒ 红（⛔ 不是「没有 Acceptance」）",
        " CLI 形态 --list 在本该红的状态下也 exit 0（它不是闸）"
      ]
    }
  },
  {
    "name": "n5-raw-guard",
    "why": "HARNESS 头注释说原始守卫在 macOS tmpdir(symlink) 下恒假 ⇒ 核 realpath 修复",
    "probe": {
      "ok": true,
      "sections": 3,
      "ids": [
        "docs/internal/domain-tvu.md#P1",
        "docs/internal/domain-tvu.md#P5",
        "docs/internal/domain-tvu.md#P6"
      ],
      "items": [
        "P1=2项",
        "P5=2项",
        "P6=0项"
      ]
    },
    "nail": {
      "exit": 0,
      "passed": 34,
      "failed": 0,
      "total": 34,
      "failedTitles": []
    }
  }
]