{
  "generator": "ai-ds-lab/metrics/golden-set-freeze.mjs",
  "mode": "verify",
  "subject": "tvu-ds",
  "pin": "/Users/nancy/.ai-ds-lab/pins/tvu-ds-4a68e02d",
  "setDir": "/Users/nancy/Documents/AICoding/VS_Code/ai-ds-lab/tasks/tvu-ds/v1",
  "taskSetVersion": "v1",
  "frozenAgainstSha": "4a68e02d3d695cee3c39d255ea5d20f7f2bf9b8c",
  "promptTemplateVersion": "pt-v1",
  "caliper": {
    "upper": {
      "name": "目录口径（gt-*.json 文件数）",
      "value": 3
    },
    "lower": {
      "name": "登记口径（manifest.tasks[] 条数）",
      "value": 3
    },
    "diffOnlyOnDisk": [],
    "diffOnlyRegistered": []
  },
  "tasks": [
    {
      "taskId": "GT-001",
      "archetype": "list-console",
      "file": "gt-001-live-source-console.json",
      "sha256": "fdbaf08cc4155e7983d5ba60a1cef1ba73d440ccfa1a9ca79bbbe5fc6f35bff9"
    },
    {
      "taskId": "GT-002",
      "archetype": "form-flow",
      "file": "gt-002-ndi-source-type-form.json",
      "sha256": "6676e5ca0cdf68f99abbe32c52adb398969457cec9c5ce401959da4613c98a1f"
    },
    {
      "taskId": "GT-003",
      "archetype": "data-viz",
      "file": "gt-003-cost-per-token-trend.json",
      "sha256": "583e27f61d545c65a8a7f4fd0b549a0b3b2fa878e7fc42db56ea00f2ce7b3ad1"
    }
  ],
  "citationHits": [
    {
      "taskId": "GT-001",
      "path": "docs/internal/_plans/2026-07-24-p0-systematic-gap-fixes.md",
      "line": 4,
      "mustContain": "直播源管理"
    },
    {
      "taskId": "GT-001",
      "path": "docs/internal/_plans/2026-07-24-p0-systematic-gap-fixes.md",
      "line": 22,
      "mustContain": "行内状态 pill + 行内操作按钮"
    },
    {
      "taskId": "GT-002",
      "path": "docs/_archive/_design-kickoffs/v4-1827-ndi-into-ipsource.md",
      "line": 11,
      "mustContain": "V4-1827"
    },
    {
      "taskId": "GT-002",
      "path": "docs/_archive/_design-kickoffs/v4-1827-ndi-into-ipsource.md",
      "line": 23,
      "mustContain": "Baseline / Delta Contract"
    },
    {
      "taskId": "GT-003",
      "path": "docs/internal/_metrics/phase0-ledger.md",
      "line": 45,
      "mustContain": "Cost per Token Trend"
    },
    {
      "taskId": "GT-003",
      "path": "docs/internal/_metrics/phase0-ledger.md",
      "line": 45,
      "mustContain": "chart primitives 不在 library scope"
    }
  ],
  "graderHits": [
    {
      "taskId": "GT-001",
      "id": "ds-html-conformance",
      "script": "scripts/audit-mockup-html-conformance.mjs",
      "judgeSource": "DS gate"
    },
    {
      "taskId": "GT-001",
      "id": "lab-escape-rate",
      "script": "metrics/escape-rate.mjs",
      "judgeSource": "lab 自写"
    },
    {
      "taskId": "GT-002",
      "id": "ds-html-conformance",
      "script": "scripts/audit-mockup-html-conformance.mjs",
      "judgeSource": "DS gate"
    },
    {
      "taskId": "GT-002",
      "id": "lab-escape-rate",
      "script": "metrics/escape-rate.mjs",
      "judgeSource": "lab 自写"
    },
    {
      "taskId": "GT-003",
      "id": "ds-html-conformance",
      "script": "scripts/audit-mockup-html-conformance.mjs",
      "judgeSource": "DS gate"
    },
    {
      "taskId": "GT-003",
      "id": "lab-escape-rate",
      "script": "metrics/escape-rate.mjs",
      "judgeSource": "lab 自写"
    }
  ],
  "controls": [
    {
      "id": "MH1",
      "kind": "must-hit",
      "ok": true,
      "detail": "GT-001 的「直播源管理」应在 _plans/2026-07-24-p0-systematic-gap-fixes.md 命中（DS 3-way 实验用的同一条任务）"
    },
    {
      "id": "MH2",
      "kind": "must-hit",
      "ok": true,
      "detail": "GT-002 的「V4-1827」应在 _archive/_design-kickoffs/v4-1827-ndi-into-ipsource.md 命中"
    },
    {
      "id": "MH3",
      "kind": "must-hit",
      "ok": true,
      "detail": "GT-003 的「chart primitives 不在 library scope」应在 _metrics/phase0-ledger.md 命中"
    },
    {
      "id": "MH4",
      "kind": "must-hit",
      "ok": true,
      "detail": "pin 上必须有 scripts/audit-mockup-html-conformance.mjs —— 三条 task 全绑它"
    },
    {
      "id": "MH5",
      "kind": "must-hit",
      "ok": true,
      "detail": "archetype 应恰好 = [data-viz, form-flow, list-console]（DS P2 段的「列表台/表单流/数据可视化」），实测 [\"data-viz\",\"form-flow\",\"list-console\"]"
    },
    {
      "id": "MN1",
      "kind": "must-not-hit",
      "ok": true,
      "detail": "prompt.text 里不得出现 DS 具名组件 —— 给了组件名就变成「照抄指令」，测不出「AI 知不知道何时用哪个组件」（3-way 实验的原问题）。实测泄漏：[]"
    },
    {
      "id": "MN2",
      "kind": "must-not-hit",
      "ok": true,
      "detail": "citations[].path 不得指向 scratch/ —— 上次 3-way 实验的留档 scratch/ux-test/ 在 pin 上 tracked=0、工作树不存在，是不可复现语料。实测：[]"
    },
    {
      "id": "MN3",
      "kind": "must-not-hit",
      "ok": true,
      "detail": "不得把 docs/internal/_demos/*.html 当出处或产出落点 —— P0-2 linter 的校准硬线逐字要求「对现有 2 个 _demos/*.html 必须 PASS」⇒ 它们是该 grader 的过拟合面，不能同时当测试集。实测：[]"
    },
    {
      "id": "MN4",
      "kind": "must-not-hit",
      "ok": true,
      "detail": "prompt.text 不得含 Figma node id（\\d{3,}:\\d+）—— 给了就变成「照着节点抄」。实测：[]"
    }
  ],
  "failures": [],
  "verdict": "frozen-and-verified"
}
