{
  "schema": "lab.convergenceProbe/1",
  "generatedAt": "2026-08-26T02:07:15.152Z",
  "step": "第二轮第 11 步 · 档 B（convergence 探针 —— ⛔ 点估计，无地板）",
  "isProbeNotGauge": true,
  "baselineKey": {
    "subjectSha": "4a68e02d3d695cee3c39d255ea5d20f7f2bf9b8c",
    "modelId": "claude-opus-5",
    "promptTemplateVersion": "pt-v1"
  },
  "taskId": "GT-003",
  "promptHash": "f96b13a7cc7a2da327a494e2bb33b047915113c61b8343bb227d31c29e212a50",
  "N": 5,
  "inputSurface": {
    "kind": "product HTML",
    "filesRead": 10,
    "excluded": "contextManifest（E32）"
  },
  "componentSurface": {
    "denominator": 28,
    "denominatorName": "src/components 口径",
    "resolvedSignatures": 28
  },
  "perRun": [
    {
      "runId": "r012",
      "wide": [
        "Button",
        "Chart",
        "Icon",
        "Tooltip",
        "TopBar"
      ],
      "strict": [
        "Tooltip",
        "TopBar"
      ],
      "wideCount": 5,
      "strictCount": 2
    },
    {
      "runId": "r013",
      "wide": [
        "Badge",
        "Button"
      ],
      "strict": [],
      "wideCount": 2,
      "strictCount": 0
    },
    {
      "runId": "r014",
      "wide": [
        "Button",
        "Chart",
        "Icon"
      ],
      "strict": [
        "Chart"
      ],
      "wideCount": 3,
      "strictCount": 1
    },
    {
      "runId": "r015",
      "wide": [
        "Button",
        "Chart",
        "Pill",
        "TopBar"
      ],
      "strict": [
        "Chart",
        "TopBar"
      ],
      "wideCount": 4,
      "strictCount": 2
    },
    {
      "runId": "r017",
      "wide": [
        "Badge",
        "Table",
        "TopBar"
      ],
      "strict": [
        "Table",
        "TopBar"
      ],
      "wideCount": 3,
      "strictCount": 2
    }
  ],
  "componentDiff": {
    "wideUnion": [
      "Badge",
      "Button",
      "Chart",
      "Icon",
      "Pill",
      "Table",
      "Tooltip",
      "TopBar"
    ],
    "strictUnion": [
      "Chart",
      "Table",
      "Tooltip",
      "TopBar"
    ],
    "wideOnlyNotStrict": [
      "Badge",
      "Button",
      "Icon",
      "Pill"
    ],
    "wideOnlyNotStrictCaveat": "⛔ 不得读作「手搓 class」。先排除边界 ②ⓒ：修饰类走 :class 动态绑定的组件，严口径签名抓不到（实证 Button：字面只有 class=\"btn\"，产物用的 btn--m/btn--ghost 来自 :class）。⇒ 严口径是「偏向静态 class 风格组件的另一个量」，不是「更严格的同一个量」。",
    "presentInEveryRun": [],
    "varyingAcrossRuns": [
      "Badge",
      "Button",
      "Chart",
      "Icon",
      "Pill",
      "Table",
      "Tooltip",
      "TopBar"
    ]
  },
  "zeroHitAttribution": {
    "minClassTokensForNonEmpty": 10,
    "handrolledRuns": [],
    "brokenDetectorRuns": [],
    "note": "原 MH3 把「0 命中」钉成单一解释「检测器坏了不是产物变了」，被 GT-002 的 r007/r011 推翻（勘误 lab:E42）"
  },
  "taskEra": {
    "taskId": "GT-003",
    "baselineEstablishing": false,
    "facts": {
      "buttonWideAll": false,
      "buttonStrictNone": true,
      "handrolledRunIds": [],
      "source": "区分度实验实证：宽口径命中 [5,2,3,4,3]，无 0 命中 run ⇒ 无真手搓；Button 未全中（部分 run 用 tvu-chart 而非按钮）"
    },
    "note": "✅ 已建档，MN6 按该档具名事实断言（⛔ 分档不是放松，每档都断言）"
  },
  "pairs": [
    {
      "a": "r012",
      "b": "r013",
      "componentWide": 0.8333,
      "componentStrict": 1,
      "structureTV": 0.322
    },
    {
      "a": "r012",
      "b": "r014",
      "componentWide": 0.4,
      "componentStrict": 1,
      "structureTV": 0.2626
    },
    {
      "a": "r012",
      "b": "r015",
      "componentWide": 0.5,
      "componentStrict": 0.6667,
      "structureTV": 0.2954
    },
    {
      "a": "r012",
      "b": "r017",
      "componentWide": 0.8571,
      "componentStrict": 0.6667,
      "structureTV": 0.2921
    },
    {
      "a": "r013",
      "b": "r014",
      "componentWide": 0.75,
      "componentStrict": 1,
      "structureTV": 0.3331
    },
    {
      "a": "r013",
      "b": "r015",
      "componentWide": 0.8,
      "componentStrict": 1,
      "structureTV": 0.3433
    },
    {
      "a": "r013",
      "b": "r017",
      "componentWide": 0.75,
      "componentStrict": 1,
      "structureTV": 0.4048
    },
    {
      "a": "r014",
      "b": "r015",
      "componentWide": 0.6,
      "componentStrict": 0.5,
      "structureTV": 0.3655
    },
    {
      "a": "r014",
      "b": "r017",
      "componentWide": 1,
      "componentStrict": 1,
      "structureTV": 0.3999
    },
    {
      "a": "r015",
      "b": "r017",
      "componentWide": 0.8333,
      "componentStrict": 0.6667,
      "structureTV": 0.4201
    }
  ],
  "summary": {
    "组件面·宽口径（根 class 命中）": {
      "face": "componentWide",
      "pairCount": 10,
      "meanDistance": 0.7324,
      "min": 0.4,
      "max": 1,
      "allZero": false,
      "verdict": "点估计：平均两两距离 0.7324。⛔ 无地板 ⇒ 不得用于改善判定（需 K 组 × N 的嵌套设计）"
    },
    "组件面·严口径（根 + 子 class 都命中）": {
      "face": "componentStrict",
      "pairCount": 10,
      "meanDistance": 0.85,
      "min": 0.5,
      "max": 1,
      "allZero": false,
      "verdict": "点估计：平均两两距离 0.85。⛔ 无地板 ⇒ 不得用于改善判定（需 K 组 × N 的嵌套设计）"
    },
    "结构面（归一化 tag 频谱总变差）": {
      "face": "structureTV",
      "pairCount": 10,
      "meanDistance": 0.3439,
      "min": 0.2626,
      "max": 0.4201,
      "allZero": false,
      "verdict": "点估计：平均两两距离 0.3439。⛔ 无地板 ⇒ 不得用于改善判定（需 K 组 × N 的嵌套设计）"
    }
  },
  "nestedDesign": {
    "whyNested": "convergence 是散布量 ⇒ 它的地板要「多组 N」而不是「更大的 N」",
    "sdRelativeStandardError": {
      "atN5": 0.3536,
      "atN10": 0.2357,
      "atN20": 0.1622,
      "atN51": 0.1
    },
    "nToReach10pct": 51,
    "costFormula": "K 组 × N 个 run × 单 run 成本；6′ 实测单 run 均值 9.20 M token（CV 32.7%、极差 2.85 倍 ⇒ 按区间读）",
    "exampleK2N5": {
      "runs": 10,
      "pointEstimateTokens": "~92 M",
      "intervalTokens": "~44–125 M"
    },
    "warning": "⛔ 上面是「同一 task 的两组」。要判「DS 改了规则后 convergence 变好」，两组必须跨改动前后 ⇒ 还要 re-pin"
  },
  "controls": [
    {
      "id": "MH1",
      "ok": true,
      "detail": "组件面分母必须是 28（src/components 口径，具名）—— 实测 28"
    },
    {
      "id": "MH2",
      "ok": true,
      "detail": "至少 25 个组件必须能从自己的 .vue 抽出 class 签名（⛔ 不许大面积抽空）—— 实测 28/28"
    },
    {
      "id": "MH3",
      "ok": true,
      "detail": "0 命中必须先证装置再归因（§3.9，lab:E42 订正）—— 实测宽口径命中 [5,2,3,4,3]；其中 0 命中 0 个 ⇒ 真手搓 0 个 · 装置坏 0 个"
    },
    {
      "id": "MH4",
      "ok": true,
      "detail": "§5.2 三元组主键必须齐全非空 —— 实测 4a68e02d3d695cee3c39d255ea5d20f7f2bf9b8c|claude-opus-5|pt-v1"
    },
    {
      "id": "MH5",
      "ok": true,
      "detail": "两两对数必须 ≡ C(N,2) = 10 —— 实测 10"
    },
    {
      "id": "MN1",
      "ok": true,
      "detail": "⛔ 探针不得输出任何地板/MDE 字段（那会被当成可判定用）—— 实测泄漏 0 个"
    },
    {
      "id": "MN2",
      "ok": true,
      "detail": "⛔ 输入面不得读 contextManifest（E32：L2 整层都是被测量）—— 实测读了 10 个文件，无一命中"
    },
    {
      "id": "MN3",
      "ok": true,
      "detail": "所有距离必须在 [0,1] —— 实测 10 对全部合法"
    },
    {
      "id": "MN4",
      "ok": true,
      "detail": "严口径命中集必须是宽口径的子集（双向夹逼自洽，§3.7）—— 实测逐 run 成立"
    },
    {
      "id": "MN5",
      "ok": true,
      "detail": "距离全 0 的面必须显式带「不得读作完全收敛」（AGENTS §2.7）—— 实测 0 个面全 0，警告齐全"
    },
    {
      "id": "MN6",
      "ok": true,
      "detail": "GT-003 档的具名事实必须仍成立 —— 期望 宽全中=false 严全无=true 真手搓=[]；实测 宽全中=false 严全无=true 真手搓=[]。⚠️ 这条炸了不代表产物变好，先回去重读边界 ②ⓑ/②ⓒ。出处：区分度实验实证：宽口径命中 [5,2,3,4,3]，无 0 命中 run ⇒ 无真手搓；Button 未全中（部分 run 用 tvu-chart 而非按钮）"
    }
  ],
  "t2Half": {
    "delivered": false,
    "reason": "§6.1 铁律 1（三票异构）严口径本机不可得"
  }
}