{
  "scorer": "run_fixtures/3",
  "tool": "yesbut_check.js",
  "tool_sha256": "48ae833e0dd852b1114ed921945dbd294a082d9479d2674348ec18d554954f71",
  "fixture_file": "fixtures_heldout.jsonl",
  "fixture_sha256": "976985b9e6c95ad0e7676ec461d99e75a05ff0de67fb77b9bd411a8836b1bbaa",
  "scored_at": "2026-10-01T21:41:05.100Z",
  "states": {
    "fixture_conformance": {
      "scored_cases": 13,
      "passed": 13,
      "pass_rate": 1,
      "unresolved_excluded": 0
    },
    "labeling_provenance": {
      "claimed_kind": "heldout_author",
      "description": "author-labeled, unblinded — held-out but same author wrote tool and labels",
      "attestation_status": "UNVERIFIED — a --kind flag cannot establish rater independence, blinding, or protocol adherence; requires a bound reviewer report",
      "reviewer_report_sha256": null
    },
    "construct_validity": "NOT_ESTABLISHED — author-labeled set measures conformance, not construct validity"
  },
  "claimed_kind": "heldout_author",
  "total": 13,
  "passed": 13,
  "pass_rate": 1,
  "confusion": {
    "QUALIFIED_ACK": {
      "QUALIFIED_ACK": 4
    },
    "BARE_SUFFICIENT": {
      "BARE_SUFFICIENT": 6
    },
    "AMBIGUOUS_ACK": {
      "AMBIGUOUS_ACK": 2
    },
    "NO_ACK_FOUND": {
      "NO_ACK_FOUND": 1
    }
  },
  "disagreements": [],
  "unresolved": [],
  "cases": [
    {
      "id": "H1",
      "expect": "QUALIFIED_ACK",
      "actual": "QUALIFIED_ACK",
      "cue_expect": "except",
      "cue_actual": "except",
      "ack_span": [
        0,
        77
      ],
      "ack_text": "Yes, the suite is green — except the two integration cases, which never ran",
      "pass": true,
      "note": "contrast clause is load-bearing: bare yes would assert a false premise"
    },
    {
      "id": "H2",
      "expect": "BARE_SUFFICIENT",
      "actual": "BARE_SUFFICIENT",
      "cue_expect": null,
      "cue_actual": null,
      "ack_span": [
        0,
        28
      ],
      "ack_text": "Yes, the report is submitted",
      "pass": true,
      "note": "though-clause is padding; counted as remainder, never folded into the ack"
    },
    {
      "id": "H3",
      "expect": "QUALIFIED_ACK",
      "actual": "QUALIFIED_ACK",
      "cue_expect": "only",
      "cue_actual": "only",
      "ack_span": [
        0,
        54
      ],
      "ack_text": "Yes, I can join — but only after the deploy finishes",
      "pass": true,
      "note": "'only after X' narrows the commitment window"
    },
    {
      "id": "H4",
      "expect": "BARE_SUFFICIENT",
      "actual": "BARE_SUFFICIENT",
      "cue_expect": null,
      "cue_actual": null,
      "ack_span": [
        0,
        3
      ],
      "ack_text": "Yes",
      "pass": true,
      "note": "bare yes, zero surplus"
    },
    {
      "id": "H5",
      "expect": "BARE_SUFFICIENT",
      "actual": "BARE_SUFFICIENT",
      "cue_expect": null,
      "cue_actual": null,
      "ack_span": [
        0,
        21
      ],
      "ack_text": "Yes, the hash matches",
      "pass": true,
      "note": "however-clause is a caveat cue, not a scope restriction — counted not folded"
    },
    {
      "id": "H6",
      "expect": "AMBIGUOUS_ACK",
      "actual": "AMBIGUOUS_ACK",
      "cue_expect": null,
      "cue_actual": null,
      "ack_span": [
        0,
        17
      ],
      "ack_text": "Yes it compiles,",
      "pass": true,
      "note": "two binders, distinct cues (provided vs unless) — keep full draft"
    },
    {
      "id": "H7",
      "expect": "BARE_SUFFICIENT",
      "actual": "BARE_SUFFICIENT",
      "cue_expect": null,
      "cue_actual": null,
      "ack_span": [
        0,
        36
      ],
      "ack_text": "Yes, it covers not only the summary",
      "pass": true,
      "note": "'not only ... but' correlative — neither side narrows"
    },
    {
      "id": "H8",
      "expect": "BARE_SUFFICIENT",
      "actual": "BARE_SUFFICIENT",
      "cue_expect": null,
      "cue_actual": null,
      "ack_span": [
        0,
        15
      ],
      "ack_text": "Yes, signed off",
      "pass": true,
      "note": "trailing clause maps to no function bin — must surface as UNMAPPED, not silently dropped"
    },
    {
      "id": "H9",
      "expect": "NO_ACK_FOUND",
      "actual": "NO_ACK_FOUND",
      "cue_expect": null,
      "cue_actual": null,
      "ack_span": null,
      "ack_text": null,
      "pass": true,
      "note": "no agreement token anywhere"
    },
    {
      "id": "H10",
      "expect": "BARE_SUFFICIENT",
      "actual": "BARE_SUFFICIENT",
      "cue_expect": null,
      "cue_actual": null,
      "ack_span": [
        0,
        5
      ],
      "ack_text": "Yes,",
      "pass": true,
      "note": "yes-but insurance hedging — padding not premise-correction (pair with H1/H11)"
    },
    {
      "id": "H11",
      "expect": "QUALIFIED_ACK",
      "actual": "QUALIFIED_ACK",
      "cue_expect": "only",
      "cue_actual": "only",
      "ack_span": [
        0,
        36
      ],
      "ack_text": "Yes, but only the anonymized extract",
      "pass": true,
      "note": "'but only X' — contrast marker carrying a scope restriction; stripping loses the commitment"
    },
    {
      "id": "H12",
      "expect": "QUALIFIED_ACK",
      "actual": "QUALIFIED_ACK",
      "cue_expect": "only",
      "cue_actual": "only",
      "ack_span": [
        0,
        66
      ],
      "ack_text": "Yes — only if the kit is frozen, and only when the auditor signs",
      "pass": true,
      "note": "one clause, conjunctive same-cue restriction: qualified not ambiguous"
    },
    {
      "id": "H13",
      "expect": "AMBIGUOUS_ACK",
      "actual": "AMBIGUOUS_ACK",
      "cue_expect": null,
      "cue_actual": null,
      "ack_span": [
        0,
        22
      ],
      "ack_text": "Yes, the run can start",
      "pass": true,
      "note": "two clauses still bind the target (same cue): spec's second ambiguity branch"
    }
  ]
}
