{
  "schema": "lab.convergenceProbe/1",
  "generatedAt": "2026-08-25T10:23:18.675Z",
  "step": "第二轮第 11 步 · 档 B（convergence 探针 —— ⛔ 点估计，无地板）",
  "isProbeNotGauge": true,
  "baselineKey": {
    "subjectSha": "4a68e02d3d695cee3c39d255ea5d20f7f2bf9b8c",
    "modelId": "claude-opus-5",
    "promptTemplateVersion": "pt-v1"
  },
  "taskId": "GT-002",
  "promptHash": "7d1255217ed1bdb90bca3b0181d61afb119f3fc663edef979748f3d18ae6da28",
  "N": 5,
  "inputSurface": {
    "kind": "product HTML",
    "filesRead": 10,
    "excluded": "contextManifest（E32）"
  },
  "componentSurface": {
    "denominator": 28,
    "denominatorName": "src/components 口径",
    "resolvedSignatures": 28
  },
  "perRun": [
    {
      "runId": "r007",
      "wide": [],
      "strict": [],
      "wideCount": 0,
      "strictCount": 0
    },
    {
      "runId": "r008",
      "wide": [
        "Button",
        "FormItem",
        "Radio",
        "Select",
        "TopBar"
      ],
      "strict": [
        "FormItem",
        "Radio",
        "Select",
        "TopBar"
      ],
      "wideCount": 5,
      "strictCount": 4
    },
    {
      "runId": "r009",
      "wide": [
        "Button",
        "Radio",
        "Select"
      ],
      "strict": [
        "Radio",
        "Select"
      ],
      "wideCount": 3,
      "strictCount": 2
    },
    {
      "runId": "r010",
      "wide": [
        "Button",
        "FormItem",
        "Pill",
        "Radio",
        "Select",
        "Switch",
        "TopBar"
      ],
      "strict": [
        "FormItem",
        "Pill",
        "Radio",
        "Select",
        "Switch",
        "TopBar"
      ],
      "wideCount": 7,
      "strictCount": 6
    },
    {
      "runId": "r011",
      "wide": [],
      "strict": [],
      "wideCount": 0,
      "strictCount": 0
    }
  ],
  "componentDiff": {
    "wideUnion": [
      "Button",
      "FormItem",
      "Pill",
      "Radio",
      "Select",
      "Switch",
      "TopBar"
    ],
    "strictUnion": [
      "FormItem",
      "Pill",
      "Radio",
      "Select",
      "Switch",
      "TopBar"
    ],
    "wideOnlyNotStrict": [
      "Button"
    ],
    "wideOnlyNotStrictCaveat": "⛔ 不得读作「手搓 class」。先排除边界 ②ⓒ：修饰类走 :class 动态绑定的组件，严口径签名抓不到（实证 Button：字面只有 class=\"btn\"，产物用的 btn--m/btn--ghost 来自 :class）。⇒ 严口径是「偏向静态 class 风格组件的另一个量」，不是「更严格的同一个量」。",
    "presentInEveryRun": [],
    "varyingAcrossRuns": [
      "Button",
      "FormItem",
      "Pill",
      "Radio",
      "Select",
      "Switch",
      "TopBar"
    ]
  },
  "zeroHitAttribution": {
    "minClassTokensForNonEmpty": 10,
    "handrolledRuns": [
      {
        "runId": "r007",
        "classTokens": 82,
        "verdict": "真手搓（边界 ②ⓑ）—— 合法读数，⛔ 不是装置故障"
      },
      {
        "runId": "r011",
        "classTokens": 68,
        "verdict": "真手搓（边界 ②ⓑ）—— 合法读数，⛔ 不是装置故障"
      }
    ],
    "brokenDetectorRuns": [],
    "note": "原 MH3 把「0 命中」钉成单一解释「检测器坏了不是产物变了」，被 GT-002 的 r007/r011 推翻（勘误 lab:E42）"
  },
  "taskEra": {
    "taskId": "GT-002",
    "baselineEstablishing": false,
    "facts": {
      "buttonWideAll": false,
      "buttonStrictNone": true,
      "handrolledRunIds": [
        "r007",
        "r011"
      ],
      "source": "区分度实验实证（lab:E42）：r007/r011 真手搓整套 BEM（82/68 个自有 class token、零动态绑定迹象、零 DS 根 class）⇒ Button 未全中。这是边界 ②ⓑ 首次被实证"
    },
    "note": "✅ 已建档，MN6 按该档具名事实断言（⛔ 分档不是放松，每档都断言）"
  },
  "pairs": [
    {
      "a": "r007",
      "b": "r008",
      "componentWide": 1,
      "componentStrict": 1,
      "structureTV": 0.3764
    },
    {
      "a": "r007",
      "b": "r009",
      "componentWide": 1,
      "componentStrict": 1,
      "structureTV": 0.3197
    },
    {
      "a": "r007",
      "b": "r010",
      "componentWide": 1,
      "componentStrict": 1,
      "structureTV": 0.3984
    },
    {
      "a": "r007",
      "b": "r011",
      "componentWide": 0,
      "componentStrict": 0,
      "structureTV": 0.3357
    },
    {
      "a": "r008",
      "b": "r009",
      "componentWide": 0.4,
      "componentStrict": 0.5,
      "structureTV": 0.4919
    },
    {
      "a": "r008",
      "b": "r010",
      "componentWide": 0.2857,
      "componentStrict": 0.3333,
      "structureTV": 0.3439
    },
    {
      "a": "r008",
      "b": "r011",
      "componentWide": 1,
      "componentStrict": 1,
      "structureTV": 0.4293
    },
    {
      "a": "r009",
      "b": "r010",
      "componentWide": 0.5714,
      "componentStrict": 0.6667,
      "structureTV": 0.3362
    },
    {
      "a": "r009",
      "b": "r011",
      "componentWide": 1,
      "componentStrict": 1,
      "structureTV": 0.3106
    },
    {
      "a": "r010",
      "b": "r011",
      "componentWide": 1,
      "componentStrict": 1,
      "structureTV": 0.2824
    }
  ],
  "summary": {
    "组件面·宽口径（根 class 命中）": {
      "face": "componentWide",
      "pairCount": 10,
      "meanDistance": 0.7257,
      "min": 0,
      "max": 1,
      "allZero": false,
      "verdict": "点估计：平均两两距离 0.7257。⛔ 无地板 ⇒ 不得用于改善判定（需 K 组 × N 的嵌套设计）"
    },
    "组件面·严口径（根 + 子 class 都命中）": {
      "face": "componentStrict",
      "pairCount": 10,
      "meanDistance": 0.75,
      "min": 0,
      "max": 1,
      "allZero": false,
      "verdict": "点估计：平均两两距离 0.75。⛔ 无地板 ⇒ 不得用于改善判定（需 K 组 × N 的嵌套设计）"
    },
    "结构面（归一化 tag 频谱总变差）": {
      "face": "structureTV",
      "pairCount": 10,
      "meanDistance": 0.3624,
      "min": 0.2824,
      "max": 0.4919,
      "allZero": false,
      "verdict": "点估计：平均两两距离 0.3624。⛔ 无地板 ⇒ 不得用于改善判定（需 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 订正）—— 实测宽口径命中 [0,5,3,7,0]；其中 0 命中 2 个 ⇒ 真手搓 2 个（r007:82个class r011:68个class） · 装置坏 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-002 档的具名事实必须仍成立 —— 期望 宽全中=false 严全无=true 真手搓=[r007,r011]；实测 宽全中=false 严全无=true 真手搓=[r007,r011]。⚠️ 这条炸了不代表产物变好，先回去重读边界 ②ⓑ/②ⓒ。出处：区分度实验实证（lab:E42）：r007/r011 真手搓整套 BEM（82/68 个自有 class token、零动态绑定迹象、零 DS 根 class）⇒ Button 未全中。这是边界 ②ⓑ 首次被实证"
    }
  ],
  "t2Half": {
    "delivered": false,
    "reason": "§6.1 铁律 1（三票异构）严口径本机不可得"
  }
}