{
  "probe": "gate-parity-reverse-direction",
  "generatedAt": "2026-09-10T06:24:14.840Z",
  "caliper": {
    "pin": "203a3f5a",
    "extractor": "复用 DS scripts/audit-gate-ci-parity.mjs 导出的 computeParity() ⇒ 「哪些算一条闸」这一层 lab ⛔ 未独立验证（AGENTS §24）",
    "unit": "解析后的 <scripts|figma-sync>/*.mjs 路径，⛔ 不是 npm key",
    "A": ".husky/pre-commit + commit-msg 里文本可达的闸（⚠️ 文本可达 ⛔ 不等于条件触发 —— 各闸另有 git diff --cached | grep -qE 守卫）",
    "B": "package.json scripts.gate-chain 递归展开 ∪ .gitea/.github workflows",
    "newReading": "方向：B − A（= 只在 CI 可达、husky 文本上零出现）—— 该闸只算 A − B",
    "⛔ forbidden": "该闸 :259 逐字「只有「差集 + 名单」可跨轮比，上面那个 CI 可达数随实现口径浮动，别引用它」⇒ ⛔ 不许跨轮引用 |B| 或 |B−A| 这两个计数，要比就比名单"
  },
  "sizes": {
    "A": 52,
    "B": 74,
    "diff_A_minus_B": 0,
    "reverse_B_minus_A": 22
  },
  "reverseList": [
    "figma-sync/audit-component-no-inline-svg.mjs",
    "figma-sync/audit-component-token-linkage.mjs",
    "figma-sync/audit-design-system.mjs",
    "figma-sync/audit-docs-single-theme.mjs",
    "figma-sync/audit-docs-site-readiness.mjs",
    "figma-sync/audit-figma-conformance.mjs",
    "figma-sync/audit-figma-published-vs-code.mjs",
    "figma-sync/audit-icon-fill-currentcolor.mjs",
    "figma-sync/audit-no-hardcoded-design-tokens.mjs",
    "figma-sync/audit-tokenized-diff.mjs",
    "figma-sync/audit-translation-completeness.mjs",
    "scripts/a11y-token-contrast.mjs",
    "scripts/audit-composition-exports.mjs",
    "scripts/audit-render-drift-gate-react.mjs",
    "scripts/audit-render-drift-gate.mjs",
    "scripts/audit-scripts-stdlib-stability.mjs",
    "scripts/audit-style-contract.mjs",
    "scripts/audit-token-exports.mjs",
    "scripts/generate-render-verification-manifest.mjs",
    "scripts/lint-skills.mjs",
    "scripts/smoke-peer-floor.mjs",
    "scripts/validate-upstream-gate.mjs"
  ],
  "witness": {
    "path": "figma-sync/audit-no-hardcoded-design-tokens.mjs",
    "inA": false,
    "inB": true,
    "evidence": "2026-09-10 DS bd912238 的 playground/public/design-process-review.html 9 条 findings 让 CI 红，而 pre-commit 全绿；同一 .html 被视觉门（.husky/pre-commit:99 覆盖 .html）拦过一次 ⇒ 提交层问了「看过效果吗」、没问「用的是 token 吗」",
    "measuredRuntimeMs": 170
  },
  "controls": [
    {
      "id": "MH1",
      "kind": "must-hit",
      "ok": true,
      "detail": "复现该闸自报 a=52（husky 侧）—— 实测 52"
    },
    {
      "id": "MH2",
      "kind": "must-hit",
      "ok": true,
      "detail": "复现该闸自报 diff(A−B)=0 —— 实测 0"
    },
    {
      "id": "MH3",
      "kind": "must-hit",
      "ok": true,
      "detail": "figma-sync/audit-no-hardcoded-design-tokens.mjs ∈ B ∧ ∉ A（方向锚；⛔ 按解析后的 .mjs 路径，不是 npm key）"
    },
    {
      "id": "MN1",
      "kind": "must-not-hit",
      "ok": true,
      "detail": "集合元素 ⛔ 不是 npm key（若出现 audit: 前缀 ⇒ 我的单位假设又错了）"
    },
    {
      "id": "MN2",
      "kind": "must-not-hit",
      "ok": true,
      "detail": "反向差集既非空也非全集（空=方向算反了 / 全集=A 侧塌了）—— 实测 22/74"
    }
  ],
  "controlsPassed": true
}
