{
 "collected_at": "2026-08-23 05:51:03Z",
 "is_a_recording": true,
 "recording_note": "This page serves a recorded campaign. It is not a live query and never was. The ClickHouse Cloud trial that held the ledger ends around Sep 21 2026; this page is designed to keep telling the truth after that service is switched off, so it carries the timestamp of the run it is reporting rather than pretending to be current.",
 "run": {
  "started": "2026-08-22 20:50:19Z",
  "period": "2026-08-13T00:00:03.098492 .. 2026-08-14T00:00:02.907424",
  "scoped_on": "listened_at",
  "dump": "listenbrainz-listens-dump-2627-20260814-000002-incremental",
  "path": "mcp-clickhouse -> ClickHouse Cloud",
  "statement_lines": 508
 },
 "run_file": "run_20260822T205019Z.json",
 "summary": {
  "detectors": {
   "D1_identifier_gap": {
    "finding": 51
   },
   "D2_underreported": {
    "no_finding": 496,
    "finding": 12
   },
   "D3_phantom": {
    "no_finding": 500,
    "finding": 8
   },
   "D4_rate_misapplied": {
    "no_finding": 498,
    "finding": 10
   },
   "D5_payability": {
    "finding": 1,
    "unmeasurable": 508
   }
  },
  "claims_total": 2084,
  "queries_run": 6,
  "queries_unmeasured": 0
 },
 "period": "2026-08-13T00:00:03.098492 .. 2026-08-14T00:00:02.907424",
 "d5_window": {
  "detector": "D5_payability",
  "verdict": "finding",
  "subject": {
   "scope": "statement window"
  },
  "evidence": {
   "plays": 1174697,
   "payable": 1220,
   "not_payable": 5,
   "unmeasurable": 1173427,
   "incoherent": 45,
   "card_needs": "played_ms >= 30000",
   "unmeasurable_under_this_card": {
    "part": 1173427,
    "of": 1174697,
    "of_what": "plays in the window; the card reads played_ms, so a row without one is unmeasurable",
    "pct": 99.8919
   },
   "carry_neither_quantity": {
    "part": 451818,
    "of": 1174697,
    "of_what": "plays in the window; a structural fact about the data, independent of any rate card",
    "pct": 38.4625
   },
   "no_played_ms": {
    "part": 1173427,
    "of": 1174697,
    "of_what": "plays in the window",
    "pct": 99.8919
   },
   "no_track_length_ms": {
    "part": 451818,
    "of": 1174697,
    "of_what": "plays in the window",
    "pct": 38.4625
   }
  },
  "denominator": {
   "part": 1173427,
   "of": 1174697,
   "of_what": "plays in the statement window",
   "pct": 99.8919
  },
  "missing_field": "played_ms",
  "period": {
   "start": "2026-08-13T00:00:03.098492",
   "end": "2026-08-14T00:00:02.907424",
   "scoped_on": "listened_at",
   "dump": "listenbrainz-listens-dump-2627-20260814-000002-incremental"
  },
  "note": "unmeasurable_under_this_card and carry_neither_quantity measure DIFFERENT things and must never be quoted as one number.",
  "proof_sql": [
   "SELECT count() AS plays,\n       countIf(multiIf(track_length_ms IS NOT NULL AND played_ms IS NOT NULL AND played_ms > track_length_ms, 'incoherent', played_ms IS NULL, 'unmeasurable', played_ms >= 30000, 'payable', 'not_payable') = 'payable')      AS payable,\n       countIf(multiIf(track_length_ms IS NOT NULL AND played_ms IS NOT NULL AND played_ms > track_length_ms, 'incoherent', played_ms IS NULL, 'unmeasurable', played_ms >= 30000, 'payable', 'not_payable') = 'not_payable')  AS not_payable,\n       countIf(multiIf(track_length_ms IS NOT NULL AND played_ms IS NOT NULL AND played_ms > track_length_ms, 'incoherent', played_ms IS NULL, 'unmeasurable', played_ms >= 30000, 'payable', 'not_payable') = 'unmeasurable') AS unmeasurable,\n       countIf(multiIf(track_length_ms IS NOT NULL AND played_ms IS NOT NULL AND played_ms > track_length_ms, 'incoherent', played_ms IS NULL, 'unmeasurable', played_ms >= 30000, 'payable', 'not_payable') = 'incoherent')   AS incoherent,\n       countIf(played_ms IS NULL)                             AS no_played,\n       countIf(track_length_ms IS NULL)                       AS no_length,\n       countIf(played_ms IS NULL AND track_length_ms IS NULL) AS neither_qty\nFROM recoup.listens\nWHERE listened_at >= (toDateTime('2026-08-13 00:00:03') + INTERVAL 1 SECOND) AND listened_at <= toDateTime('2026-08-14 00:00:02')\nLIMIT 2"
  ]
 },
 "d1_window": {
  "detector": "D1_identifier_gap",
  "verdict": "finding",
  "subject": {
   "scope": "statement window"
  },
  "evidence": {
   "plays": 1174697,
   "no_identifier": 838837,
   "has_recording_mbid": 126702,
   "has_isrc": 217911
  },
  "denominator": {
   "part": 838837,
   "of": 1174697,
   "of_what": "plays in the statement window",
   "pct": 71.4088
  },
  "missing_field": "recording_mbid and isrc",
  "period": {
   "start": "2026-08-13T00:00:03.098492",
   "end": "2026-08-14T00:00:02.907424",
   "scoped_on": "listened_at",
   "dump": "listenbrainz-listens-dump-2627-20260814-000002-incremental"
  },
  "note": "Plays carrying NEITHER recording_mbid NOR isrc cannot be tied to a work. This is the rate at which submitting clients include an identifier. It is NOT any DSP's or CMO's match rate.",
  "proof_sql": [
   "SELECT count() AS plays,\n       countIf(recording_mbid IS NULL AND isrc IS NULL) AS no_identifier,\n       countIf(recording_mbid IS NOT NULL) AS has_recording_mbid,\n       countIf(isrc IS NOT NULL) AS has_isrc\nFROM recoup.listens\nWHERE listened_at >= (toDateTime('2026-08-13 00:00:03') + INTERVAL 1 SECOND) AND listened_at <= toDateTime('2026-08-14 00:00:02')\nLIMIT 2"
  ]
 },
 "scoreboard": {
  "D2_underreported": {
   "planted": 12,
   "planted_unmeasured": 0,
   "planted_evaluable": 12,
   "true_positives": 12,
   "true_positives_with_wrong_evidence": 0,
   "false_positives": 0,
   "false_negatives": 0,
   "claims_unmeasured": 0,
   "recall": {
    "part": 12,
    "of": 12,
    "of_what": "planted defects this run could evaluate; 0 more were unmeasured and are excluded",
    "pct": 100.0
   },
   "recall_clean": {
    "part": 12,
    "of": 12,
    "of_what": "planted defects this run could evaluate, counting only hits whose evidence matched the plant",
    "pct": 100.0
   },
   "precision": {
    "part": 12,
    "of": 12,
    "of_what": "findings this detector made, excluding unmeasured",
    "pct": 100.0
   }
  },
  "D3_phantom": {
   "planted": 8,
   "planted_unmeasured": 0,
   "planted_evaluable": 8,
   "true_positives": 8,
   "true_positives_with_wrong_evidence": 0,
   "false_positives": 0,
   "false_negatives": 0,
   "claims_unmeasured": 0,
   "recall": {
    "part": 8,
    "of": 8,
    "of_what": "planted defects this run could evaluate; 0 more were unmeasured and are excluded",
    "pct": 100.0
   },
   "recall_clean": {
    "part": 8,
    "of": 8,
    "of_what": "planted defects this run could evaluate, counting only hits whose evidence matched the plant",
    "pct": 100.0
   },
   "precision": {
    "part": 8,
    "of": 8,
    "of_what": "findings this detector made, excluding unmeasured",
    "pct": 100.0
   }
  },
  "D4_rate_misapplied": {
   "planted": 10,
   "planted_unmeasured": 0,
   "planted_evaluable": 10,
   "true_positives": 10,
   "true_positives_with_wrong_evidence": 0,
   "false_positives": 0,
   "false_negatives": 0,
   "claims_unmeasured": 0,
   "recall": {
    "part": 10,
    "of": 10,
    "of_what": "planted defects this run could evaluate; 0 more were unmeasured and are excluded",
    "pct": 100.0
   },
   "recall_clean": {
    "part": 10,
    "of": 10,
    "of_what": "planted defects this run could evaluate, counting only hits whose evidence matched the plant",
    "pct": 100.0
   },
   "precision": {
    "part": 10,
    "of": 10,
    "of_what": "findings this detector made, excluding unmeasured",
    "pct": 100.0
   }
  },
  "D1_identifier_gap": {
   "scoreable": false,
   "reason": "measures real identifier coverage; nothing was injected, so there is no denominator to score against",
   "claims": 51
  },
  "D5_payability": {
   "scoreable": false,
   "reason": "classifies real rows against the declared card; nothing was injected, so there is no denominator to score against",
   "claims": 509
  }
 },
 "scoreboard_evidence_mismatches": [],
 "coverage": {
  "generated": "2026-08-22 21:09:17Z",
  "source": "dump 2627, 2026-08-14, one day of submissions",
  "rows": 3820939,
  "listened_at_min": "2005-02-13 23:59:31",
  "listened_at_max": "2026-08-14 00:20:40",
  "by_year": [
   {
    "year": 2005,
    "rows": 29,
    "played_time": "0.00%",
    "track_length": "0.00%",
    "isrc": "0.00%",
    "recording_mbid": "0.00%"
   },
   {
    "year": 2006,
    "rows": 11886,
    "played_time": "0.00%",
    "track_length": "0.00%",
    "isrc": "0.00%",
    "recording_mbid": "0.00%"
   },
   {
    "year": 2007,
    "rows": 3263,
    "played_time": "0.00%",
    "track_length": "0.00%",
    "isrc": "0.00%",
    "recording_mbid": "0.00%"
   },
   {
    "year": 2008,
    "rows": 20971,
    "played_time": "0.00%",
    "track_length": "0.00%",
    "isrc": "0.00%",
    "recording_mbid": "0.00%"
   },
   {
    "year": 2009,
    "rows": 12398,
    "played_time": "0.00%",
    "track_length": "0.00%",
    "isrc": "0.00%",
    "recording_mbid": "0.00%"
   },
   {
    "year": 2010,
    "rows": 15973,
    "played_time": "0.00%",
    "track_length": "0.00%",
    "isrc": "0.00%",
    "recording_mbid": "0.00%"
   },
   {
    "year": 2011,
    "rows": 11316,
    "played_time": "0.00%",
    "track_length": "0.00%",
    "isrc": "0.00%",
    "recording_mbid": "0.00%"
   },
   {
    "year": 2012,
    "rows": 11058,
    "played_time": "0.00%",
    "track_length": "0.00%",
    "isrc": "0.00%",
    "recording_mbid": "0.00%"
   },
   {
    "year": 2013,
    "rows": 23715,
    "played_time": "0.00%",
    "track_length": "13.07%",
    "isrc": "0.00%",
    "recording_mbid": "0.00%"
   },
   {
    "year": 2014,
    "rows": 31462,
    "played_time": "0.00%",
    "track_length": "1.11%",
    "isrc": "0.00%",
    "recording_mbid": "0.00%"
   },
   {
    "year": 2015,
    "rows": 50432,
    "played_time": "0.00%",
    "track_length": "0.35%",
    "isrc": "0.00%",
    "recording_mbid": "0.00%"
   },
   {
    "year": 2016,
    "rows": 43730,
    "played_time": "15.27%",
    "track_length": "15.71%",
    "isrc": "0.00%",
    "recording_mbid": "0.00%"
   },
   {
    "year": 2017,
    "rows": 74954,
    "played_time": "39.40%",
    "track_length": "41.10%",
    "isrc": "0.00%",
    "recording_mbid": "0.00%"
   },
   {
    "year": 2018,
    "rows": 84313,
    "played_time": "52.31%",
    "track_length": "52.42%",
    "isrc": "0.00%",
    "recording_mbid": "0.00%"
   },
   {
    "year": 2019,
    "rows": 117805,
    "played_time": "51.19%",
    "track_length": "51.19%",
    "isrc": "0.00%",
    "recording_mbid": "0.00%"
   },
   {
    "year": 2020,
    "rows": 153890,
    "played_time": "48.00%",
    "track_length": "48.00%",
    "isrc": "0.00%",
    "recording_mbid": "0.00%"
   },
   {
    "year": 2021,
    "rows": 240367,
    "played_time": "37.54%",
    "track_length": "37.54%",
    "isrc": "0.00%",
    "recording_mbid": "0.00%"
   },
   {
    "year": 2022,
    "rows": 244614,
    "played_time": "38.00%",
    "track_length": "39.40%",
    "isrc": "0.00%",
    "recording_mbid": "0.00%"
   },
   {
    "year": 2023,
    "rows": 231449,
    "played_time": "50.68%",
    "track_length": "52.74%",
    "isrc": "0.00%",
    "recording_mbid": "0.00%"
   },
   {
    "year": 2024,
    "rows": 288706,
    "played_time": "45.23%",
    "track_length": "46.94%",
    "isrc": "0.00%",
    "recording_mbid": "0.00%"
   },
   {
    "year": 2025,
    "rows": 506308,
    "played_time": "29.29%",
    "track_length": "29.96%",
    "isrc": "0.00%",
    "recording_mbid": "0.00%"
   },
   {
    "year": 2026,
    "rows": 1642300,
    "played_time": "13.53%",
    "track_length": "58.32%",
    "isrc": "13.58%",
    "recording_mbid": "8.02%"
   }
  ],
  "by_month_2025_on": [
   {
    "month": "2025-01",
    "rows": 110411,
    "played_time": "7.82%",
    "track_length": "7.94%",
    "isrc": "0.00%",
    "recording_mbid": "0.00%"
   },
   {
    "month": "2025-02",
    "rows": 72393,
    "played_time": "11.43%",
    "track_length": "11.69%",
    "isrc": "0.00%",
    "recording_mbid": "0.00%"
   },
   {
    "month": "2025-03",
    "rows": 26516,
    "played_time": "34.60%",
    "track_length": "35.68%",
    "isrc": "0.00%",
    "recording_mbid": "0.00%"
   },
   {
    "month": "2025-04",
    "rows": 25801,
    "played_time": "42.53%",
    "track_length": "43.90%",
    "isrc": "0.00%",
    "recording_mbid": "0.00%"
   },
   {
    "month": "2025-05",
    "rows": 29795,
    "played_time": "34.27%",
    "track_length": "35.08%",
    "isrc": "0.00%",
    "recording_mbid": "0.00%"
   },
   {
    "month": "2025-06",
    "rows": 25297,
    "played_time": "32.40%",
    "track_length": "33.89%",
    "isrc": "0.00%",
    "recording_mbid": "0.00%"
   },
   {
    "month": "2025-07",
    "rows": 26228,
    "played_time": "34.06%",
    "track_length": "35.10%",
    "isrc": "0.00%",
    "recording_mbid": "0.00%"
   },
   {
    "month": "2025-08",
    "rows": 30612,
    "played_time": "41.75%",
    "track_length": "43.19%",
    "isrc": "0.00%",
    "recording_mbid": "0.00%"
   },
   {
    "month": "2025-09",
    "rows": 42388,
    "played_time": "50.71%",
    "track_length": "51.35%",
    "isrc": "0.00%",
    "recording_mbid": "0.00%"
   },
   {
    "month": "2025-10",
    "rows": 41989,
    "played_time": "49.78%",
    "track_length": "50.43%",
    "isrc": "0.00%",
    "recording_mbid": "0.00%"
   },
   {
    "month": "2025-11",
    "rows": 39179,
    "played_time": "44.83%",
    "track_length": "45.53%",
    "isrc": "0.00%",
    "recording_mbid": "0.00%"
   },
   {
    "month": "2025-12",
    "rows": 35699,
    "played_time": "31.22%",
    "track_length": "32.03%",
    "isrc": "0.00%",
    "recording_mbid": "0.00%"
   },
   {
    "month": "2026-01",
    "rows": 31155,
    "played_time": "35.37%",
    "track_length": "36.13%",
    "isrc": "0.00%",
    "recording_mbid": "0.00%"
   },
   {
    "month": "2026-02",
    "rows": 44585,
    "played_time": "50.04%",
    "track_length": "50.73%",
    "isrc": "0.00%",
    "recording_mbid": "0.00%"
   },
   {
    "month": "2026-03",
    "rows": 61939,
    "played_time": "55.04%",
    "track_length": "55.82%",
    "isrc": "0.00%",
    "recording_mbid": "0.00%"
   },
   {
    "month": "2026-04",
    "rows": 62199,
    "played_time": "62.04%",
    "track_length": "62.41%",
    "isrc": "0.00%",
    "recording_mbid": "0.00%"
   },
   {
    "month": "2026-05",
    "rows": 71988,
    "played_time": "52.52%",
    "track_length": "52.65%",
    "isrc": "0.00%",
    "recording_mbid": "0.00%"
   },
   {
    "month": "2026-06",
    "rows": 67691,
    "played_time": "49.98%",
    "track_length": "50.06%",
    "isrc": "0.00%",
    "recording_mbid": "0.07%"
   },
   {
    "month": "2026-07",
    "rows": 68993,
    "played_time": "51.01%",
    "track_length": "51.55%",
    "isrc": "0.00%",
    "recording_mbid": "1.96%"
   },
   {
    "month": "2026-08",
    "rows": 1233750,
    "played_time": "0.75%",
    "track_length": "60.23%",
    "isrc": "18.08%",
    "recording_mbid": "10.56%"
   }
  ],
  "by_client": [
   {
    "client": "ListenBrainz lastfm importer v2",
    "rows": 1708954,
    "years_spanned": 22,
    "played_time": "0.00%",
    "track_length": "0.00%",
    "isrc": "0.00%",
    "recording_mbid": "0.00%"
   },
   {
    "client": "ListenBrainz Archive Importer",
    "rows": 1021723,
    "years_spanned": 11,
    "played_time": "99.29%",
    "track_length": "99.30%",
    "isrc": "0.00%",
    "recording_mbid": "0.00%"
   },
   {
    "client": "listenbrainz",
    "rows": 212630,
    "years_spanned": 1,
    "played_time": "0.00%",
    "track_length": "100.00%",
    "isrc": "99.83%",
    "recording_mbid": "0.00%"
   },
   {
    "client": "navidrome",
    "rows": 169096,
    "years_spanned": 1,
    "played_time": "0.00%",
    "track_length": "99.72%",
    "isrc": "0.00%",
    "recording_mbid": "58.39%"
   },
   {
    "client": "takeout-analysis",
    "rows": 158225,
    "years_spanned": 13,
    "played_time": "0.00%",
    "track_length": "0.00%",
    "isrc": "0.00%",
    "recording_mbid": "0.00%"
   },
   {
    "client": "Pano Scrobbler",
    "rows": 112876,
    "years_spanned": 1,
    "played_time": "0.00%",
    "track_length": "97.61%",
    "isrc": "0.00%",
    "recording_mbid": "0.00%"
   },
   {
    "client": "(absent)",
    "rows": 93645,
    "years_spanned": 3,
    "played_time": "1.52%",
    "track_length": "10.55%",
    "isrc": "0.15%",
    "recording_mbid": "9.04%"
   },
   {
    "client": "Web Scrobbler",
    "rows": 67926,
    "years_spanned": 1,
    "played_time": "0.00%",
    "track_length": "97.68%",
    "isrc": "0.00%",
    "recording_mbid": "0.00%"
   },
   {
    "client": "ListenBrainz Android",
    "rows": 65439,
    "years_spanned": 1,
    "played_time": "0.00%",
    "track_length": "98.77%",
    "isrc": "0.00%",
    "recording_mbid": "0.00%"
   },
   {
    "client": "uthyr-migration",
    "rows": 26574,
    "years_spanned": 6,
    "played_time": "0.00%",
    "track_length": "0.00%",
    "isrc": "0.00%",
    "recording_mbid": "0.00%"
   },
   {
    "client": "nightops-spotify-import",
    "rows": 22509,
    "years_spanned": 11,
    "played_time": "0.00%",
    "track_length": "100.00%",
    "isrc": "0.00%",
    "recording_mbid": "0.00%"
   },
   {
    "client": "scotty",
    "rows": 22432,
    "years_spanned": 2,
    "played_time": "0.00%",
    "track_length": "0.00%",
    "isrc": "0.00%",
    "recording_mbid": "0.00%"
   }
  ],
  "archive_importer_by_year": [
   {
    "year": 2016,
    "rows": 6679,
    "played_time": "100.00%"
   },
   {
    "year": 2017,
    "rows": 29535,
    "played_time": "100.00%"
   },
   {
    "year": 2018,
    "rows": 44105,
    "played_time": "100.00%"
   },
   {
    "year": 2019,
    "rows": 60309,
    "played_time": "100.00%"
   },
   {
    "year": 2020,
    "rows": 73872,
    "played_time": "100.00%"
   },
   {
    "year": 2021,
    "rows": 90223,
    "played_time": "100.00%"
   },
   {
    "year": 2022,
    "rows": 92959,
    "played_time": "100.00%"
   },
   {
    "year": 2023,
    "rows": 117299,
    "played_time": "100.00%"
   },
   {
    "year": 2024,
    "rows": 130585,
    "played_time": "100.00%"
   },
   {
    "year": 2025,
    "rows": 151831,
    "played_time": "97.66%"
   },
   {
    "year": 2026,
    "rows": 224326,
    "played_time": "98.33%"
   }
  ],
  "mix_test": [
   {
    "year": 2005,
    "rows": 29,
    "played_actual": 0.0,
    "played_predicted": 0.0,
    "length_actual": 0.0,
    "length_predicted": 0.0
   },
   {
    "year": 2006,
    "rows": 11886,
    "played_actual": 0.0,
    "played_predicted": 0.0,
    "length_actual": 0.0,
    "length_predicted": 0.0
   },
   {
    "year": 2007,
    "rows": 3263,
    "played_actual": 0.0,
    "played_predicted": 0.0,
    "length_actual": 0.0,
    "length_predicted": 0.0
   },
   {
    "year": 2008,
    "rows": 20971,
    "played_actual": 0.0,
    "played_predicted": 0.0,
    "length_actual": 0.0,
    "length_predicted": 0.0
   },
   {
    "year": 2009,
    "rows": 12398,
    "played_actual": 0.0,
    "played_predicted": 0.0,
    "length_actual": 0.0,
    "length_predicted": 0.0
   },
   {
    "year": 2010,
    "rows": 15973,
    "played_actual": 0.0,
    "played_predicted": 0.0,
    "length_actual": 0.0,
    "length_predicted": 0.0
   },
   {
    "year": 2011,
    "rows": 11316,
    "played_actual": 0.0,
    "played_predicted": 0.0,
    "length_actual": 0.0,
    "length_predicted": 0.0
   },
   {
    "year": 2012,
    "rows": 11058,
    "played_actual": 0.0,
    "played_predicted": 0.0,
    "length_actual": 0.0,
    "length_predicted": 0.0
   },
   {
    "year": 2013,
    "rows": 23715,
    "played_actual": 0.0,
    "played_predicted": 0.0,
    "length_actual": 13.0677,
    "length_predicted": 13.0677
   },
   {
    "year": 2014,
    "rows": 31462,
    "played_actual": 0.0,
    "played_predicted": 0.0,
    "length_actual": 1.1061,
    "length_predicted": 1.1061
   },
   {
    "year": 2015,
    "rows": 50432,
    "played_actual": 0.0,
    "played_predicted": 0.0,
    "length_actual": 0.353,
    "length_predicted": 0.353
   },
   {
    "year": 2016,
    "rows": 43730,
    "played_actual": 15.2733,
    "played_predicted": 15.1642,
    "length_actual": 15.7055,
    "length_predicted": 15.5986
   },
   {
    "year": 2017,
    "rows": 74954,
    "played_actual": 39.4042,
    "played_predicted": 39.1228,
    "length_actual": 41.1012,
    "length_predicted": 40.8375
   },
   {
    "year": 2018,
    "rows": 84313,
    "played_actual": 52.311,
    "played_predicted": 51.9375,
    "length_actual": 52.4201,
    "length_predicted": 52.0553
   },
   {
    "year": 2019,
    "rows": 117805,
    "played_actual": 51.1939,
    "played_predicted": 50.8284,
    "length_actual": 51.1939,
    "length_predicted": 50.8357
   },
   {
    "year": 2020,
    "rows": 153890,
    "played_actual": 48.0031,
    "played_predicted": 47.6604,
    "length_actual": 48.0031,
    "length_predicted": 47.6672
   },
   {
    "year": 2021,
    "rows": 240367,
    "played_actual": 37.5355,
    "played_predicted": 37.2675,
    "length_actual": 37.5355,
    "length_predicted": 37.2729
   },
   {
    "year": 2022,
    "rows": 244614,
    "played_actual": 38.0023,
    "played_predicted": 37.731,
    "length_actual": 39.4004,
    "length_predicted": 39.1345
   },
   {
    "year": 2023,
    "rows": 231449,
    "played_actual": 50.6803,
    "played_predicted": 50.3184,
    "length_actual": 52.736,
    "length_predicted": 52.3814
   },
   {
    "year": 2024,
    "rows": 288706,
    "played_actual": 45.2311,
    "played_predicted": 44.9526,
    "length_actual": 46.9429,
    "length_predicted": 46.9353
   },
   {
    "year": 2025,
    "rows": 506308,
    "played_actual": 29.2859,
    "played_predicted": 29.8652,
    "length_actual": 29.9577,
    "length_predicted": 31.0856
   },
   {
    "year": 2026,
    "rows": 1642300,
    "played_actual": 13.5271,
    "played_predicted": 13.6213,
    "length_actual": 58.3165,
    "length_predicted": 58.1889
   }
  ],
  "mix_test_informative_on": {
   "rows": 3080113,
   "of": 3820939,
   "of_what": "rows belonging to clients spanning more than one year"
  },
  "max_gap_pp": {
   "played": 0.5793,
   "length": 1.128
  },
  "archive_importer_played_range_pct": [
   97.66,
   100.0
  ],
  "pre_2026": {
   "rows": 2178639,
   "isrc": 0,
   "recording_mbid": 2
  }
 },
 "readonly": {
  "verdict": {
   "control_passed": true,
   "agent_write_probes": 18,
   "agent_writes_executed": 0,
   "agent_writes_executed_under_adversarial_config": 0,
   "agent_probes_inconclusive": 0,
   "inconclusive_probes": [],
   "contrast_writes_executed_as_admin": 9,
   "contrast_probes_executed": [
    "alter_delete",
    "create_table",
    "drop_database",
    "drop_table",
    "insert_after_set",
    "insert_probe_table",
    "insert_real_ledger_zero_rows",
    "set_readonly_off",
    "truncate_table"
   ],
   "fixture_teardown": "CLEAN",
   "claim_licensed": true,
   "claim": "The agent cannot write. Enforced by ClickHouse grants on a SELECT-only user, not by the agent declining to try, and not by a client-side environment variable -- flipping that variable changes nothing, which is what the adversarial configuration tests."
  },
  "when": "2026-08-23 05:45:15Z",
  "agent_user": "a SELECT-only ClickHouse user with readonly = 1 CONST",
  "probes": [
   {
    "config": "deployed",
    "probe": "control_select",
    "kind": "must SUCCEED or the proof is void",
    "sql": "SELECT 1 AS ok",
    "outcome": "EXECUTED",
    "detail": ""
   },
   {
    "config": "deployed",
    "probe": "insert_probe_table",
    "kind": "write",
    "sql": "INSERT INTO __recoup_probe_db.__probe VALUES (2)",
    "outcome": "BLOCKED_BY_GRANT",
    "detail": "ToolError: Query execution failed: Received ClickHouse exception, code: 497, server response: Code: 497. DB::Exception: the read-only user: Not enough privileges. To execute this query, it's necessary to have the grant INSERT(x) ON __recoup_probe_db.__probe. (ACCESS_DENIED) (for url https://[redacted clickhouse host].europe-west4.gcp."
   },
   {
    "config": "deployed",
    "probe": "insert_real_ledger_zero_rows",
    "kind": "write against the REAL ledger, zero rows even if permitted",
    "sql": "INSERT INTO recoup.listens SELECT * FROM recoup.listens WHERE 1 = 0",
    "outcome": "BLOCKED_BY_GRANT",
    "detail": "ToolError: Query execution failed: Received ClickHouse exception, code: 497, server response: Code: 497. DB::Exception: the read-only user: Not enough privileges. To execute this query, it's necessary to have the grant INSERT(listened_at, submitted_at, dump_id, source, ingested_from, info_key_spelling, user_id, user_na"
   },
   {
    "config": "deployed",
    "probe": "create_table",
    "kind": "ddl",
    "sql": "CREATE TABLE __recoup_probe_db.__probe2 (x UInt8) ENGINE = Memory",
    "outcome": "BLOCKED_BY_GRANT",
    "detail": "ToolError: Query execution failed: Received ClickHouse exception, code: 497, server response: Code: 497. DB::Exception: the read-only user: Not enough privileges. To execute this query, it's necessary to have the grant CREATE TABLE ON __recoup_probe_db.__probe2. (ACCESS_DENIED) (for url https://[redacted clickhouse host].europe-west4."
   },
   {
    "config": "deployed",
    "probe": "alter_delete",
    "kind": "mutation",
    "sql": "ALTER TABLE __recoup_probe_db.__probe DELETE WHERE 1 = 0",
    "outcome": "BLOCKED_BY_GRANT",
    "detail": "ToolError: Query execution failed: Received ClickHouse exception, code: 497, server response: Code: 497. DB::Exception: the read-only user: Not enough privileges. To execute this query, it's necessary to have the grant ALTER DELETE ON __recoup_probe_db.__probe. (ACCESS_DENIED) (for url https://[redacted clickhouse host].europe-west4.g"
   },
   {
    "config": "deployed",
    "probe": "truncate_table",
    "kind": "destructive",
    "sql": "TRUNCATE TABLE __recoup_probe_db.__probe",
    "outcome": "BLOCKED_BY_GRANT",
    "detail": "ToolError: Query execution failed: Received ClickHouse exception, code: 497, server response: Code: 497. DB::Exception: the read-only user: Not enough privileges. To execute this query, it's necessary to have the grant TRUNCATE ON __recoup_probe_db.__probe. (ACCESS_DENIED) (for url https://[redacted clickhouse host].europe-west4.gcp.c"
   },
   {
    "config": "deployed",
    "probe": "drop_table",
    "kind": "destructive",
    "sql": "DROP TABLE __recoup_probe_db.__probe",
    "outcome": "BLOCKED_BY_GRANT",
    "detail": "ToolError: Query execution failed: Received ClickHouse exception, code: 497, server response: Code: 497. DB::Exception: the read-only user: Not enough privileges. To execute this query, it's necessary to have the grant DROP TABLE ON __recoup_probe_db.__probe. (ACCESS_DENIED) (for url https://[redacted clickhouse host].europe-west4.gcp"
   },
   {
    "config": "deployed",
    "probe": "drop_database",
    "kind": "destructive",
    "sql": "DROP DATABASE __recoup_probe_db",
    "outcome": "BLOCKED_BY_GRANT",
    "detail": "ToolError: Query execution failed: Received ClickHouse exception, code: 497, server response: Code: 497. DB::Exception: the read-only user: Not enough privileges. To execute this query, it's necessary to have the grant DROP DATABASE ON __recoup_probe_db.*. (ACCESS_DENIED) (for url https://[redacted clickhouse host].europe-west4.gcp.cl"
   },
   {
    "config": "deployed",
    "probe": "set_readonly_off",
    "kind": "attempt to disarm the guard",
    "sql": "SET readonly = 0",
    "outcome": "BLOCKED_READONLY",
    "detail": "ToolError: Query execution failed: Received ClickHouse exception, code: 164, server response: Code: 164. DB::Exception: Cannot modify 'readonly' setting in readonly mode. (READONLY) (for url https://[redacted clickhouse host]:8443)"
   },
   {
    "config": "deployed",
    "probe": "insert_after_set",
    "kind": "write retried after attempting to disarm the guard",
    "sql": "INSERT INTO recoup.listens SELECT * FROM recoup.listens WHERE 1 = 0",
    "outcome": "BLOCKED_BY_GRANT",
    "detail": "ToolError: Query execution failed: Received ClickHouse exception, code: 497, server response: Code: 497. DB::Exception: the read-only user: Not enough privileges. To execute this query, it's necessary to have the grant INSERT(listened_at, submitted_at, dump_id, source, ingested_from, info_key_spelling, user_id, user_na"
   },
   {
    "config": "adversarial",
    "probe": "control_select",
    "kind": "must SUCCEED or the proof is void",
    "sql": "SELECT 1 AS ok",
    "outcome": "EXECUTED",
    "detail": ""
   },
   {
    "config": "adversarial",
    "probe": "insert_probe_table",
    "kind": "write",
    "sql": "INSERT INTO __recoup_probe_db.__probe VALUES (2)",
    "outcome": "BLOCKED_BY_GRANT",
    "detail": "ToolError: Query execution failed: Received ClickHouse exception, code: 497, server response: Code: 497. DB::Exception: the read-only user: Not enough privileges. To execute this query, it's necessary to have the grant INSERT(x) ON __recoup_probe_db.__probe. (ACCESS_DENIED) (for url https://[redacted clickhouse host].europe-west4.gcp."
   },
   {
    "config": "adversarial",
    "probe": "insert_real_ledger_zero_rows",
    "kind": "write against the REAL ledger, zero rows even if permitted",
    "sql": "INSERT INTO recoup.listens SELECT * FROM recoup.listens WHERE 1 = 0",
    "outcome": "BLOCKED_BY_GRANT",
    "detail": "ToolError: Query execution failed: Received ClickHouse exception, code: 497, server response: Code: 497. DB::Exception: the read-only user: Not enough privileges. To execute this query, it's necessary to have the grant INSERT(listened_at, submitted_at, dump_id, source, ingested_from, info_key_spelling, user_id, user_na"
   },
   {
    "config": "adversarial",
    "probe": "create_table",
    "kind": "ddl",
    "sql": "CREATE TABLE __recoup_probe_db.__probe2 (x UInt8) ENGINE = Memory",
    "outcome": "BLOCKED_BY_GRANT",
    "detail": "ToolError: Query execution failed: Received ClickHouse exception, code: 497, server response: Code: 497. DB::Exception: the read-only user: Not enough privileges. To execute this query, it's necessary to have the grant CREATE TABLE ON __recoup_probe_db.__probe2. (ACCESS_DENIED) (for url https://[redacted clickhouse host].europe-west4."
   },
   {
    "config": "adversarial",
    "probe": "alter_delete",
    "kind": "mutation",
    "sql": "ALTER TABLE __recoup_probe_db.__probe DELETE WHERE 1 = 0",
    "outcome": "BLOCKED_BY_GRANT",
    "detail": "ToolError: Query execution failed: Received ClickHouse exception, code: 497, server response: Code: 497. DB::Exception: the read-only user: Not enough privileges. To execute this query, it's necessary to have the grant ALTER DELETE ON __recoup_probe_db.__probe. (ACCESS_DENIED) (for url https://[redacted clickhouse host].europe-west4.g"
   },
   {
    "config": "adversarial",
    "probe": "truncate_table",
    "kind": "destructive",
    "sql": "TRUNCATE TABLE __recoup_probe_db.__probe",
    "outcome": "BLOCKED_BY_GRANT",
    "detail": "ToolError: Query execution failed: Received ClickHouse exception, code: 497, server response: Code: 497. DB::Exception: the read-only user: Not enough privileges. To execute this query, it's necessary to have the grant TRUNCATE ON __recoup_probe_db.__probe. (ACCESS_DENIED) (for url https://[redacted clickhouse host].europe-west4.gcp.c"
   },
   {
    "config": "adversarial",
    "probe": "drop_table",
    "kind": "destructive",
    "sql": "DROP TABLE __recoup_probe_db.__probe",
    "outcome": "BLOCKED_BY_GRANT",
    "detail": "ToolError: Query execution failed: Received ClickHouse exception, code: 497, server response: Code: 497. DB::Exception: the read-only user: Not enough privileges. To execute this query, it's necessary to have the grant DROP TABLE ON __recoup_probe_db.__probe. (ACCESS_DENIED) (for url https://[redacted clickhouse host].europe-west4.gcp"
   },
   {
    "config": "adversarial",
    "probe": "drop_database",
    "kind": "destructive",
    "sql": "DROP DATABASE __recoup_probe_db",
    "outcome": "BLOCKED_BY_GRANT",
    "detail": "ToolError: Query execution failed: Received ClickHouse exception, code: 497, server response: Code: 497. DB::Exception: the read-only user: Not enough privileges. To execute this query, it's necessary to have the grant DROP DATABASE ON __recoup_probe_db.*. (ACCESS_DENIED) (for url https://[redacted clickhouse host].europe-west4.gcp.cl"
   },
   {
    "config": "adversarial",
    "probe": "set_readonly_off",
    "kind": "attempt to disarm the guard",
    "sql": "SET readonly = 0",
    "outcome": "BLOCKED_READONLY",
    "detail": "ToolError: Query execution failed: Received ClickHouse exception, code: 164, server response: Code: 164. DB::Exception: Cannot modify 'readonly' setting in readonly mode. (READONLY) (for url https://[redacted clickhouse host]:8443)"
   },
   {
    "config": "adversarial",
    "probe": "insert_after_set",
    "kind": "write retried after attempting to disarm the guard",
    "sql": "INSERT INTO recoup.listens SELECT * FROM recoup.listens WHERE 1 = 0",
    "outcome": "BLOCKED_BY_GRANT",
    "detail": "ToolError: Query execution failed: Received ClickHouse exception, code: 497, server response: Code: 497. DB::Exception: the read-only user: Not enough privileges. To execute this query, it's necessary to have the grant INSERT(listened_at, submitted_at, dump_id, source, ingested_from, info_key_spelling, user_id, user_na"
   },
   {
    "config": "admin_contrast",
    "probe": "control_select",
    "kind": "must SUCCEED or the proof is void",
    "sql": "SELECT 1 AS ok",
    "outcome": "EXECUTED",
    "detail": ""
   },
   {
    "config": "admin_contrast",
    "probe": "insert_probe_table",
    "kind": "write",
    "sql": "INSERT INTO __recoup_probe_db.__probe VALUES (2)",
    "outcome": "EXECUTED",
    "detail": ""
   },
   {
    "config": "admin_contrast",
    "probe": "insert_real_ledger_zero_rows",
    "kind": "write against the REAL ledger, zero rows even if permitted",
    "sql": "INSERT INTO recoup.listens SELECT * FROM recoup.listens WHERE 1 = 0",
    "outcome": "EXECUTED",
    "detail": ""
   },
   {
    "config": "admin_contrast",
    "probe": "create_table",
    "kind": "ddl",
    "sql": "CREATE TABLE __recoup_probe_db.__probe2 (x UInt8) ENGINE = Memory",
    "outcome": "EXECUTED",
    "detail": ""
   },
   {
    "config": "admin_contrast",
    "probe": "alter_delete",
    "kind": "mutation",
    "sql": "ALTER TABLE __recoup_probe_db.__probe DELETE WHERE 1 = 0",
    "outcome": "EXECUTED",
    "detail": ""
   },
   {
    "config": "admin_contrast",
    "probe": "truncate_table",
    "kind": "destructive",
    "sql": "TRUNCATE TABLE __recoup_probe_db.__probe",
    "outcome": "EXECUTED",
    "detail": ""
   },
   {
    "config": "admin_contrast",
    "probe": "drop_table",
    "kind": "destructive",
    "sql": "DROP TABLE __recoup_probe_db.__probe",
    "outcome": "EXECUTED",
    "detail": ""
   },
   {
    "config": "admin_contrast",
    "probe": "drop_database",
    "kind": "destructive",
    "sql": "DROP DATABASE __recoup_probe_db",
    "outcome": "EXECUTED",
    "detail": ""
   },
   {
    "config": "admin_contrast",
    "probe": "set_readonly_off",
    "kind": "attempt to disarm the guard",
    "sql": "SET readonly = 0",
    "outcome": "EXECUTED",
    "detail": ""
   },
   {
    "config": "admin_contrast",
    "probe": "insert_after_set",
    "kind": "write retried after attempting to disarm the guard",
    "sql": "INSERT INTO recoup.listens SELECT * FROM recoup.listens WHERE 1 = 0",
    "outcome": "EXECUTED",
    "detail": ""
   }
  ]
 },
 "corpus": {
  "rows": 3820939,
  "listened_at_min": "2005-02-13 23:59:31",
  "listened_at_max": "2026-08-14 00:20:40",
  "identifier_gap_pct": 90.9469,
  "identifier_gap_rows": 3475027,
  "carry_neither_quantity_pct": 53.5903,
  "carry_neither_quantity_rows": 2047655,
  "incoherent_rows": 144445,
  "of_what": "all rows in dump 2627, listened_at spanning 2005-2026"
 }
}
