{
  "generated_from": "data/*/*.json via tools/build-index.mjs",
  "schema": "schema/run.schema.json",
  "facts_schema": "schema/facts.schema.json",
  "libraries": [
    "better-auth",
    "langchain",
    "next.js",
    "prisma",
    "tailwindcss",
    "valibot",
    "zod"
  ],
  "models": [
    "claude-fable-5",
    "claude-fable-5-1",
    "claude-haiku-4-5",
    "claude-haiku-4-5-20251001",
    "claude-opus-5",
    "claude-sonnet-5"
  ],
  "counts": {
    "runs": 152,
    "runs_eliciting_code": 138,
    "runs_instrument": 14,
    "findings": 162,
    "chargeable_findings": 155,
    "by_severity_all": {
      "S1": 33,
      "S2": 83,
      "S3": 23,
      "S4": 23
    },
    "by_severity_chargeable": {
      "S1": 33,
      "S2": 76,
      "S3": 23,
      "S4": 23
    },
    "withdrawn_findings": 3
  },
  "cutoff_lag": [
    {
      "run_id": "better-auth--claude-fable-5--v1--2026-09-01",
      "library": "better-auth",
      "model": "Claude Fable 5",
      "stated_cutoff": "2026-01",
      "knowledge_stops_at_version": "1.3.0",
      "knowledge_stops_on": "2025-07-19",
      "knowledge_gap_starts_at_version": "1.4.0",
      "knowledge_gap_starts_on": "2025-11-22",
      "lag_months": 6
    },
    {
      "run_id": "better-auth--claude-fable-5--v2-a--2026-09-02",
      "library": "better-auth",
      "model": "Claude Fable 5",
      "stated_cutoff": "2026-01",
      "knowledge_stops_at_version": "1.3.0",
      "knowledge_stops_on": "2025-07-19",
      "knowledge_gap_starts_at_version": "1.4.0",
      "knowledge_gap_starts_on": "2025-11-22",
      "lag_months": 6
    },
    {
      "run_id": "better-auth--claude-fable-5--v2-b--2026-09-02",
      "library": "better-auth",
      "model": "Claude Fable 5",
      "stated_cutoff": "2026-01",
      "knowledge_stops_at_version": "1.3.0",
      "knowledge_stops_on": "2025-07-19",
      "knowledge_gap_starts_at_version": "1.4.0",
      "knowledge_gap_starts_on": "2025-11-22",
      "lag_months": 6
    },
    {
      "run_id": "better-auth--claude-fable-5--v3-d--2026-09-03",
      "library": "better-auth",
      "model": "Claude Fable 5",
      "stated_cutoff": "2026-01",
      "knowledge_stops_at_version": "1.3.0",
      "knowledge_stops_on": "2025-07-19",
      "knowledge_gap_starts_at_version": "1.4.0",
      "knowledge_gap_starts_on": "2025-11-22",
      "lag_months": 18
    },
    {
      "run_id": "better-auth--claude-fable-5--v4-e--2026-09-03",
      "library": "better-auth",
      "model": "Claude Fable 5",
      "stated_cutoff": "2026-01",
      "knowledge_stops_at_version": "1.3.0",
      "knowledge_stops_on": "2025-07-19",
      "knowledge_gap_starts_at_version": "1.4.0",
      "knowledge_gap_starts_on": "2025-11-22",
      "lag_months": 18
    },
    {
      "run_id": "better-auth--claude-fable-5--v4-f--2026-09-03",
      "library": "better-auth",
      "model": "Claude Fable 5",
      "stated_cutoff": "2026-01",
      "knowledge_stops_at_version": "1.3.0",
      "knowledge_stops_on": "2025-07-19",
      "knowledge_gap_starts_at_version": "1.4.0",
      "knowledge_gap_starts_on": "2025-11-22",
      "lag_months": 18
    },
    {
      "run_id": "better-auth--claude-fable-5--v5-d--2026-09-03",
      "library": "better-auth",
      "model": "Claude Fable 5",
      "stated_cutoff": "2026-01",
      "knowledge_stops_at_version": "1.3.0",
      "knowledge_stops_on": "2025-07-19",
      "knowledge_gap_starts_at_version": "1.4.0",
      "knowledge_gap_starts_on": null,
      "lag_months": 6
    },
    {
      "run_id": "langchain--claude-fable-5--v1--2026-08-31",
      "library": "langchain",
      "model": "Claude Fable 5",
      "stated_cutoff": "2026-01",
      "knowledge_stops_at_version": "1.0.0",
      "knowledge_stops_on": "2025-10-17",
      "knowledge_gap_starts_at_version": "1.1.0",
      "knowledge_gap_starts_on": "2025-11-24",
      "lag_months": 3
    },
    {
      "run_id": "next.js--claude-fable-5--v1--2026-08-31",
      "library": "next.js",
      "model": "Claude Fable 5",
      "stated_cutoff": "2026-01",
      "knowledge_stops_at_version": "16.0.0",
      "knowledge_stops_on": "2025-10-22",
      "knowledge_gap_starts_at_version": "16.1.0",
      "knowledge_gap_starts_on": "2025-12-18",
      "lag_months": 3
    },
    {
      "run_id": "next.js--claude-fable-5--v2-d--2026-09-02",
      "library": "next.js",
      "model": "Claude Fable 5",
      "stated_cutoff": "2026-01",
      "knowledge_stops_at_version": "16.0.0",
      "knowledge_stops_on": "2025-10-22",
      "knowledge_gap_starts_at_version": "16.1.0",
      "knowledge_gap_starts_on": "2025-12-18",
      "lag_months": 3
    },
    {
      "run_id": "next.js--claude-fable-5--v3-c--2026-09-02",
      "library": "next.js",
      "model": "Claude Fable 5",
      "stated_cutoff": "2026-01",
      "knowledge_stops_at_version": "16.0.0",
      "knowledge_stops_on": "2025-10-22",
      "knowledge_gap_starts_at_version": "16.1.0",
      "knowledge_gap_starts_on": "2025-12-18",
      "lag_months": 3
    },
    {
      "run_id": "next.js--claude-fable-5--v3-d--2026-09-02",
      "library": "next.js",
      "model": "Claude Fable 5",
      "stated_cutoff": "2026-01",
      "knowledge_stops_at_version": "16.0.0",
      "knowledge_stops_on": "2025-10-22",
      "knowledge_gap_starts_at_version": "16.1.0",
      "knowledge_gap_starts_on": "2025-12-18",
      "lag_months": 3
    },
    {
      "run_id": "prisma--claude-fable-5--v1--2026-08-31",
      "library": "prisma",
      "model": "Claude Fable 5",
      "stated_cutoff": "2026-01",
      "knowledge_stops_at_version": "6.7.0",
      "knowledge_stops_on": "2025-04-29",
      "knowledge_gap_starts_at_version": "6.8.0",
      "knowledge_gap_starts_on": "2025-05-15",
      "lag_months": 8
    },
    {
      "run_id": "prisma--claude-fable-5--v2-d--2026-09-05",
      "library": "prisma",
      "model": "Claude Fable 5",
      "stated_cutoff": "2026-01",
      "knowledge_stops_at_version": "6.7.0",
      "knowledge_stops_on": "2025-04-29",
      "knowledge_gap_starts_at_version": "6.8.0",
      "knowledge_gap_starts_on": "2025-05-15",
      "lag_months": 8
    },
    {
      "run_id": "tailwindcss--claude-fable-5--v1--2026-08-31",
      "library": "tailwindcss",
      "model": "Claude Fable 5",
      "stated_cutoff": "2026-01",
      "knowledge_stops_at_version": "4.1.0",
      "knowledge_stops_on": "2025-04-01",
      "knowledge_gap_starts_at_version": "4.2.0",
      "knowledge_gap_starts_on": "2026-02-18",
      "lag_months": 9
    },
    {
      "run_id": "tailwindcss--claude-fable-5--v2-d--2026-09-03",
      "library": "tailwindcss",
      "model": "Claude Fable 5",
      "stated_cutoff": "2026-01",
      "knowledge_stops_at_version": "4.1.0",
      "knowledge_stops_on": "2025-04-01",
      "knowledge_gap_starts_at_version": "4.2.0",
      "knowledge_gap_starts_on": "2026-02-18",
      "lag_months": 9
    },
    {
      "run_id": "valibot--claude-fable-5--v1--2026-09-01",
      "library": "valibot",
      "model": "Claude Fable 5",
      "stated_cutoff": "2026-01",
      "knowledge_stops_at_version": "1.1.0",
      "knowledge_stops_on": "2025-05-06",
      "knowledge_gap_starts_at_version": "1.2.0",
      "knowledge_gap_starts_on": "2025-11-24",
      "lag_months": 8
    },
    {
      "run_id": "valibot--claude-fable-5--v2-e--2026-09-02",
      "library": "valibot",
      "model": "Claude Fable 5",
      "stated_cutoff": "2026-01",
      "knowledge_stops_at_version": "1.1.0",
      "knowledge_stops_on": "2025-05-06",
      "knowledge_gap_starts_at_version": "1.2.0",
      "knowledge_gap_starts_on": "2025-11-24",
      "lag_months": 8
    },
    {
      "run_id": "valibot--claude-fable-5--v2-f--2026-09-02",
      "library": "valibot",
      "model": "Claude Fable 5",
      "stated_cutoff": "2026-01",
      "knowledge_stops_at_version": "1.1.0",
      "knowledge_stops_on": "2025-05-06",
      "knowledge_gap_starts_at_version": "1.2.0",
      "knowledge_gap_starts_on": "2025-11-24",
      "lag_months": 8
    },
    {
      "run_id": "zod--claude-fable-5--v1--2026-08-29",
      "library": "zod",
      "model": "Claude Fable 5",
      "stated_cutoff": "2026-01",
      "knowledge_stops_at_version": "4.1.0",
      "knowledge_stops_on": "2025-08-23",
      "knowledge_gap_starts_at_version": "4.2.0",
      "knowledge_gap_starts_on": "2025-12-15",
      "lag_months": 5
    },
    {
      "run_id": "zod--claude-fable-5--v2--2026-08-29",
      "library": "zod",
      "model": "Claude Fable 5",
      "stated_cutoff": "2026-01",
      "knowledge_stops_at_version": "4.1.0",
      "knowledge_stops_on": "2025-08-23",
      "knowledge_gap_starts_at_version": "4.2.0",
      "knowledge_gap_starts_on": "2025-12-15",
      "lag_months": 5
    },
    {
      "run_id": "zod--claude-fable-5--v3-d--2026-09-02",
      "library": "zod",
      "model": "Claude Fable 5",
      "stated_cutoff": "2026-01",
      "knowledge_stops_at_version": "4.1.0",
      "knowledge_stops_on": "2025-08-23",
      "knowledge_gap_starts_at_version": "4.2.0",
      "knowledge_gap_starts_on": "2025-12-15",
      "lag_months": 5
    },
    {
      "run_id": "zod--claude-fable-5--v4-a--2026-09-02",
      "library": "zod",
      "model": "Claude Fable 5",
      "stated_cutoff": "2026-01",
      "knowledge_stops_at_version": "4.1.0",
      "knowledge_stops_on": "2025-08-23",
      "knowledge_gap_starts_at_version": "4.2.0",
      "knowledge_gap_starts_on": "2025-12-15",
      "lag_months": 5
    },
    {
      "run_id": "zod--claude-fable-5--v4-b--2026-09-02",
      "library": "zod",
      "model": "Claude Fable 5",
      "stated_cutoff": "2026-01",
      "knowledge_stops_at_version": "4.1.0",
      "knowledge_stops_on": "2025-08-23",
      "knowledge_gap_starts_at_version": "4.2.0",
      "knowledge_gap_starts_on": "2025-12-15",
      "lag_months": 5
    },
    {
      "run_id": "better-auth--claude-fable-5-1--v6--2026-09-06",
      "library": "better-auth",
      "model": "Claude Fable 5.1",
      "stated_cutoff": "2026-06",
      "knowledge_stops_at_version": "1.3.0",
      "knowledge_stops_on": "2025-07-19",
      "knowledge_gap_starts_at_version": "1.4.0",
      "knowledge_gap_starts_on": "2025-11-22",
      "lag_months": 11
    },
    {
      "run_id": "better-auth--claude-fable-5-1--v7-c--2026-09-06",
      "library": "better-auth",
      "model": "Claude Fable 5.1",
      "stated_cutoff": "2026-06",
      "knowledge_stops_at_version": "1.4.0",
      "knowledge_stops_on": "2025-11-22",
      "knowledge_gap_starts_at_version": "1.5.0",
      "knowledge_gap_starts_on": "2026-03-01",
      "lag_months": 7
    },
    {
      "run_id": "better-auth--claude-fable-5-1--v7-d--2026-09-06",
      "library": "better-auth",
      "model": "Claude Fable 5.1",
      "stated_cutoff": "2026-06",
      "knowledge_stops_at_version": "1.3.0",
      "knowledge_stops_on": "2025-07-19",
      "knowledge_gap_starts_at_version": "1.4.0",
      "knowledge_gap_starts_on": "2025-11-22",
      "lag_months": 11
    },
    {
      "run_id": "langchain--claude-fable-5-1--v4--2026-09-06",
      "library": "langchain",
      "model": "Claude Fable 5.1",
      "stated_cutoff": "2026-06",
      "knowledge_stops_at_version": "1.0.0",
      "knowledge_stops_on": "2025-10-17",
      "knowledge_gap_starts_at_version": "1.1.0",
      "knowledge_gap_starts_on": "2025-11-24",
      "lag_months": 8
    },
    {
      "run_id": "langchain--claude-fable-5-1--v5-a--2026-09-06",
      "library": "langchain",
      "model": "Claude Fable 5.1",
      "stated_cutoff": "2026-06",
      "knowledge_stops_at_version": "1.1.0",
      "knowledge_stops_on": "2025-11-24",
      "knowledge_gap_starts_at_version": "1.2.0",
      "knowledge_gap_starts_on": "2025-12-15",
      "lag_months": 6
    },
    {
      "run_id": "langchain--claude-fable-5-1--v5-b--2026-09-06",
      "library": "langchain",
      "model": "Claude Fable 5.1",
      "stated_cutoff": "2026-06",
      "knowledge_stops_at_version": "1.1.0",
      "knowledge_stops_on": "2025-11-24",
      "knowledge_gap_starts_at_version": "1.2.0",
      "knowledge_gap_starts_on": "2025-12-15",
      "lag_months": 6
    },
    {
      "run_id": "langchain--claude-fable-5-1--v6-e--2026-09-06",
      "library": "langchain",
      "model": "Claude Fable 5.1",
      "stated_cutoff": "2026-06",
      "knowledge_stops_at_version": "1.2.0",
      "knowledge_stops_on": "2025-12-15",
      "knowledge_gap_starts_at_version": "1.3.0",
      "knowledge_gap_starts_on": "2026-05-12",
      "lag_months": 6
    },
    {
      "run_id": "next.js--claude-fable-5-1--v4-a--2026-09-05",
      "library": "next.js",
      "model": "Claude Fable 5.1",
      "stated_cutoff": "2026-06",
      "knowledge_stops_at_version": "16.1.0",
      "knowledge_stops_on": "2025-12-18",
      "knowledge_gap_starts_at_version": "16.2.0",
      "knowledge_gap_starts_on": "2026-03-18",
      "lag_months": 6
    },
    {
      "run_id": "next.js--claude-fable-5-1--v4-b--2026-09-05",
      "library": "next.js",
      "model": "Claude Fable 5.1",
      "stated_cutoff": "2026-06",
      "knowledge_stops_at_version": "16.1.0",
      "knowledge_stops_on": "2025-12-18",
      "knowledge_gap_starts_at_version": "16.2.0",
      "knowledge_gap_starts_on": "2026-03-18",
      "lag_months": 6
    },
    {
      "run_id": "next.js--claude-fable-5-1--v4-c--2026-09-05",
      "library": "next.js",
      "model": "Claude Fable 5.1",
      "stated_cutoff": "2026-06",
      "knowledge_stops_at_version": "16.1.0",
      "knowledge_stops_on": "2025-12-18",
      "knowledge_gap_starts_at_version": "16.2.0",
      "knowledge_gap_starts_on": "2026-03-18",
      "lag_months": 6
    },
    {
      "run_id": "next.js--claude-fable-5-1--v4-d--2026-09-05",
      "library": "next.js",
      "model": "Claude Fable 5.1",
      "stated_cutoff": "2026-06",
      "knowledge_stops_at_version": "16.1.0",
      "knowledge_stops_on": "2025-12-18",
      "knowledge_gap_starts_at_version": "16.2.0",
      "knowledge_gap_starts_on": "2026-03-18",
      "lag_months": 6
    },
    {
      "run_id": "prisma--claude-fable-5-1--v4-c--2026-09-06",
      "library": "prisma",
      "model": "Claude Fable 5.1",
      "stated_cutoff": "2026-06",
      "knowledge_stops_at_version": "7.0.0",
      "knowledge_stops_on": "2025-11-19",
      "knowledge_gap_starts_at_version": "7.1.0",
      "knowledge_gap_starts_on": "2025-12-03",
      "lag_months": 7
    },
    {
      "run_id": "prisma--claude-fable-5-1--v4-d--2026-09-06",
      "library": "prisma",
      "model": "Claude Fable 5.1",
      "stated_cutoff": "2026-06",
      "knowledge_stops_at_version": "7.0.0",
      "knowledge_stops_on": "2025-11-19",
      "knowledge_gap_starts_at_version": "7.1.0",
      "knowledge_gap_starts_on": "2025-12-03",
      "lag_months": 7
    },
    {
      "run_id": "prisma--claude-fable-5-1--v5-e--2026-09-06",
      "library": "prisma",
      "model": "Claude Fable 5.1",
      "stated_cutoff": "2026-06",
      "knowledge_stops_at_version": "7.0.0",
      "knowledge_stops_on": "2025-11-19",
      "knowledge_gap_starts_at_version": "7.1.0",
      "knowledge_gap_starts_on": "2025-12-03",
      "lag_months": 7
    },
    {
      "run_id": "prisma--claude-fable-5-1--v5-f--2026-09-06",
      "library": "prisma",
      "model": "Claude Fable 5.1",
      "stated_cutoff": "2026-06",
      "knowledge_stops_at_version": "7.2.0",
      "knowledge_stops_on": "2025-12-17",
      "knowledge_gap_starts_at_version": "7.3.0",
      "knowledge_gap_starts_on": "2026-01-21",
      "lag_months": 6
    },
    {
      "run_id": "tailwindcss--claude-fable-5-1--v3-a--2026-09-06",
      "library": "tailwindcss",
      "model": "Claude Fable 5.1",
      "stated_cutoff": "2026-06",
      "knowledge_stops_at_version": "4.1.0",
      "knowledge_stops_on": "2025-04-01",
      "knowledge_gap_starts_at_version": "4.2.0",
      "knowledge_gap_starts_on": "2026-02-18",
      "lag_months": 14
    },
    {
      "run_id": "tailwindcss--claude-fable-5-1--v3-b--2026-09-06",
      "library": "tailwindcss",
      "model": "Claude Fable 5.1",
      "stated_cutoff": "2026-06",
      "knowledge_stops_at_version": "4.1.0",
      "knowledge_stops_on": "2025-04-01",
      "knowledge_gap_starts_at_version": "4.2.0",
      "knowledge_gap_starts_on": "2026-02-18",
      "lag_months": 14
    },
    {
      "run_id": "valibot--claude-fable-5-1--v4-a--2026-09-06",
      "library": "valibot",
      "model": "Claude Fable 5.1",
      "stated_cutoff": "2026-06",
      "knowledge_stops_at_version": "1.1.0",
      "knowledge_stops_on": "2025-05-06",
      "knowledge_gap_starts_at_version": "1.2.0",
      "knowledge_gap_starts_on": "2025-11-24",
      "lag_months": 13
    },
    {
      "run_id": "valibot--claude-fable-5-1--v4-b--2026-09-06",
      "library": "valibot",
      "model": "Claude Fable 5.1",
      "stated_cutoff": "2026-06",
      "knowledge_stops_at_version": "1.1.0",
      "knowledge_stops_on": "2025-05-06",
      "knowledge_gap_starts_at_version": "1.2.0",
      "knowledge_gap_starts_on": "2025-11-24",
      "lag_months": 13
    },
    {
      "run_id": "zod--claude-fable-5-1--v5--2026-09-06",
      "library": "zod",
      "model": "Claude Fable 5.1",
      "stated_cutoff": "2026-06",
      "knowledge_stops_at_version": "4.1.0",
      "knowledge_stops_on": "2025-08-23",
      "knowledge_gap_starts_at_version": "4.2.0",
      "knowledge_gap_starts_on": "2025-12-15",
      "lag_months": 10
    },
    {
      "run_id": "langchain--claude-haiku-4-5--v5-e--2026-09-06",
      "library": "langchain",
      "model": "Claude Haiku 4.5",
      "stated_cutoff": "2025-02",
      "knowledge_stops_at_version": "0.3.0",
      "knowledge_stops_on": "2024-09-13",
      "knowledge_gap_starts_at_version": "1.0.0",
      "knowledge_gap_starts_on": "2025-10-17",
      "lag_months": 5
    },
    {
      "run_id": "langchain--claude-haiku-4-5--v6-f--2026-09-06",
      "library": "langchain",
      "model": "Claude Haiku 4.5",
      "stated_cutoff": "2025-02",
      "knowledge_stops_at_version": "0.2.0",
      "knowledge_stops_on": "2024-05-20",
      "knowledge_gap_starts_at_version": "0.3.0",
      "knowledge_gap_starts_on": "2024-09-13",
      "lag_months": 9
    },
    {
      "run_id": "better-auth--claude-opus-5--v1--2026-09-01",
      "library": "better-auth",
      "model": "Claude Opus 5",
      "stated_cutoff": "2026-05",
      "knowledge_stops_at_version": "1.3.0",
      "knowledge_stops_on": "2025-07-19",
      "knowledge_gap_starts_at_version": "1.4.0",
      "knowledge_gap_starts_on": "2025-11-22",
      "lag_months": 10
    },
    {
      "run_id": "better-auth--claude-opus-5--v1r-a--2026-09-01",
      "library": "better-auth",
      "model": "Claude Opus 5",
      "stated_cutoff": "2026-05",
      "knowledge_stops_at_version": "1.3.0",
      "knowledge_stops_on": "2025-07-19",
      "knowledge_gap_starts_at_version": "1.4.0",
      "knowledge_gap_starts_on": "2025-11-22",
      "lag_months": 10
    },
    {
      "run_id": "better-auth--claude-opus-5--v1r-b--2026-09-01",
      "library": "better-auth",
      "model": "Claude Opus 5",
      "stated_cutoff": "2026-05",
      "knowledge_stops_at_version": "1.3.0",
      "knowledge_stops_on": "2025-07-19",
      "knowledge_gap_starts_at_version": "1.4.0",
      "knowledge_gap_starts_on": "2025-11-22",
      "lag_months": 10
    },
    {
      "run_id": "better-auth--claude-opus-5--v2-a--2026-09-02",
      "library": "better-auth",
      "model": "Claude Opus 5",
      "stated_cutoff": "2026-05",
      "knowledge_stops_at_version": "1.3.0",
      "knowledge_stops_on": "2025-07-19",
      "knowledge_gap_starts_at_version": "1.4.0",
      "knowledge_gap_starts_on": "2025-11-22",
      "lag_months": 10
    },
    {
      "run_id": "better-auth--claude-opus-5--v2-b--2026-09-02",
      "library": "better-auth",
      "model": "Claude Opus 5",
      "stated_cutoff": "2026-05",
      "knowledge_stops_at_version": "1.3.0",
      "knowledge_stops_on": "2025-07-19",
      "knowledge_gap_starts_at_version": "1.4.0",
      "knowledge_gap_starts_on": "2025-11-22",
      "lag_months": 10
    },
    {
      "run_id": "better-auth--claude-opus-5--v3-a--2026-09-03",
      "library": "better-auth",
      "model": "Claude Opus 5",
      "stated_cutoff": "2026-05",
      "knowledge_stops_at_version": "1.2.0",
      "knowledge_stops_on": "2025-03-01",
      "knowledge_gap_starts_at_version": "1.3.0",
      "knowledge_gap_starts_on": "2025-07-19",
      "lag_months": 22
    },
    {
      "run_id": "better-auth--claude-opus-5--v3-b--2026-09-03",
      "library": "better-auth",
      "model": "Claude Opus 5",
      "stated_cutoff": "2026-05",
      "knowledge_stops_at_version": "1.2.0",
      "knowledge_stops_on": "2025-03-01",
      "knowledge_gap_starts_at_version": "1.3.0",
      "knowledge_gap_starts_on": "2025-07-19",
      "lag_months": 22
    },
    {
      "run_id": "better-auth--claude-opus-5--v4-c--2026-09-03",
      "library": "better-auth",
      "model": "Claude Opus 5",
      "stated_cutoff": "2026-05",
      "knowledge_stops_at_version": "1.2.0",
      "knowledge_stops_on": "2025-03-01",
      "knowledge_gap_starts_at_version": "1.3.0",
      "knowledge_gap_starts_on": "2025-07-19",
      "lag_months": 22
    },
    {
      "run_id": "better-auth--claude-opus-5--v4-d--2026-09-03",
      "library": "better-auth",
      "model": "Claude Opus 5",
      "stated_cutoff": "2026-05",
      "knowledge_stops_at_version": "1.2.0",
      "knowledge_stops_on": "2025-03-01",
      "knowledge_gap_starts_at_version": "1.3.0",
      "knowledge_gap_starts_on": "2025-07-19",
      "lag_months": 22
    },
    {
      "run_id": "better-auth--claude-opus-5--v5-a--2026-09-03",
      "library": "better-auth",
      "model": "Claude Opus 5",
      "stated_cutoff": "2026-05",
      "knowledge_stops_at_version": "1.2.0",
      "knowledge_stops_on": "2025-03-01",
      "knowledge_gap_starts_at_version": "1.3.0",
      "knowledge_gap_starts_on": "2025-07-19",
      "lag_months": 22
    },
    {
      "run_id": "better-auth--claude-opus-5--v5-b--2026-09-03",
      "library": "better-auth",
      "model": "Claude Opus 5",
      "stated_cutoff": "2026-05",
      "knowledge_stops_at_version": "1.2.0",
      "knowledge_stops_on": "2025-03-01",
      "knowledge_gap_starts_at_version": "1.3.0",
      "knowledge_gap_starts_on": "2025-07-19",
      "lag_months": 22
    },
    {
      "run_id": "better-auth--claude-opus-5--v7-a--2026-09-06",
      "library": "better-auth",
      "model": "Claude Opus 5",
      "stated_cutoff": "2026-05",
      "knowledge_stops_at_version": "1.2.0",
      "knowledge_stops_on": "2025-03-01",
      "knowledge_gap_starts_at_version": "1.3.0",
      "knowledge_gap_starts_on": "2025-07-19",
      "lag_months": 26
    },
    {
      "run_id": "better-auth--claude-opus-5--v7-b--2026-09-06",
      "library": "better-auth",
      "model": "Claude Opus 5",
      "stated_cutoff": "2026-05",
      "knowledge_stops_at_version": "1.2.0",
      "knowledge_stops_on": "2025-03-01",
      "knowledge_gap_starts_at_version": "1.3.0",
      "knowledge_gap_starts_on": "2025-07-19",
      "lag_months": 26
    },
    {
      "run_id": "langchain--claude-opus-5--v1--2026-08-31",
      "library": "langchain",
      "model": "Claude Opus 5",
      "stated_cutoff": "2026-05",
      "knowledge_stops_at_version": "1.0.0",
      "knowledge_stops_on": "2025-10-17",
      "knowledge_gap_starts_at_version": "1.1.0",
      "knowledge_gap_starts_on": "2025-11-24",
      "lag_months": 7
    },
    {
      "run_id": "langchain--claude-opus-5--v5-c--2026-09-06",
      "library": "langchain",
      "model": "Claude Opus 5",
      "stated_cutoff": "2026-05",
      "knowledge_stops_at_version": "1.0.0",
      "knowledge_stops_on": "2025-10-17",
      "knowledge_gap_starts_at_version": "1.1.0",
      "knowledge_gap_starts_on": "2025-11-24",
      "lag_months": 7
    },
    {
      "run_id": "langchain--claude-opus-5--v6-a--2026-09-06",
      "library": "langchain",
      "model": "Claude Opus 5",
      "stated_cutoff": "2026-05",
      "knowledge_stops_at_version": "1.0.0",
      "knowledge_stops_on": "2025-10-17",
      "knowledge_gap_starts_at_version": "1.1.0",
      "knowledge_gap_starts_on": "2025-11-24",
      "lag_months": 7
    },
    {
      "run_id": "langchain--claude-opus-5--v6-b--2026-09-06",
      "library": "langchain",
      "model": "Claude Opus 5",
      "stated_cutoff": "2026-05",
      "knowledge_stops_at_version": "1.0.0",
      "knowledge_stops_on": "2025-10-17",
      "knowledge_gap_starts_at_version": "1.1.0",
      "knowledge_gap_starts_on": "2025-11-24",
      "lag_months": 7
    },
    {
      "run_id": "next.js--claude-opus-5--v1--2026-08-31",
      "library": "next.js",
      "model": "Claude Opus 5",
      "stated_cutoff": "2026-05",
      "knowledge_stops_at_version": "16.0.0",
      "knowledge_stops_on": "2025-10-22",
      "knowledge_gap_starts_at_version": "16.1.0",
      "knowledge_gap_starts_on": "2025-12-18",
      "lag_months": 7
    },
    {
      "run_id": "next.js--claude-opus-5--v2-a--2026-09-02",
      "library": "next.js",
      "model": "Claude Opus 5",
      "stated_cutoff": "2026-05",
      "knowledge_stops_at_version": "16.0.0",
      "knowledge_stops_on": "2025-10-22",
      "knowledge_gap_starts_at_version": "16.1.0",
      "knowledge_gap_starts_on": "2025-12-18",
      "lag_months": 7
    },
    {
      "run_id": "next.js--claude-opus-5--v2-b--2026-09-02",
      "library": "next.js",
      "model": "Claude Opus 5",
      "stated_cutoff": "2026-05",
      "knowledge_stops_at_version": "16.0.0",
      "knowledge_stops_on": "2025-10-22",
      "knowledge_gap_starts_at_version": "16.1.0",
      "knowledge_gap_starts_on": "2025-12-18",
      "lag_months": 7
    },
    {
      "run_id": "next.js--claude-opus-5--v3-e--2026-09-02",
      "library": "next.js",
      "model": "Claude Opus 5",
      "stated_cutoff": "2026-05",
      "knowledge_stops_at_version": "16.0.0",
      "knowledge_stops_on": "2025-10-22",
      "knowledge_gap_starts_at_version": "16.1.0",
      "knowledge_gap_starts_on": "2025-12-18",
      "lag_months": 7
    },
    {
      "run_id": "next.js--claude-opus-5--v3-f--2026-09-02",
      "library": "next.js",
      "model": "Claude Opus 5",
      "stated_cutoff": "2026-05",
      "knowledge_stops_at_version": "16.0.0",
      "knowledge_stops_on": "2025-10-22",
      "knowledge_gap_starts_at_version": "16.1.0",
      "knowledge_gap_starts_on": "2025-12-18",
      "lag_months": 7
    },
    {
      "run_id": "next.js--claude-opus-5--v4-e--2026-09-05",
      "library": "next.js",
      "model": "Claude Opus 5",
      "stated_cutoff": "2026-05",
      "knowledge_stops_at_version": "16.0.0",
      "knowledge_stops_on": "2025-10-22",
      "knowledge_gap_starts_at_version": "16.1.0",
      "knowledge_gap_starts_on": "2025-12-18",
      "lag_months": 7
    },
    {
      "run_id": "next.js--claude-opus-5--v4-f--2026-09-05",
      "library": "next.js",
      "model": "Claude Opus 5",
      "stated_cutoff": "2026-05",
      "knowledge_stops_at_version": "16.0.0",
      "knowledge_stops_on": "2025-10-22",
      "knowledge_gap_starts_at_version": "16.1.0",
      "knowledge_gap_starts_on": "2025-12-18",
      "lag_months": 7
    },
    {
      "run_id": "prisma--claude-opus-5--v1--2026-08-31",
      "library": "prisma",
      "model": "Claude Opus 5",
      "stated_cutoff": "2026-05",
      "knowledge_stops_at_version": "7.0.0",
      "knowledge_stops_on": "2025-11-19",
      "knowledge_gap_starts_at_version": "7.1.0",
      "knowledge_gap_starts_on": "2025-12-03",
      "lag_months": 5
    },
    {
      "run_id": "prisma--claude-opus-5--v1r-a--2026-09-01",
      "library": "prisma",
      "model": "Claude Opus 5",
      "stated_cutoff": "2026-05",
      "knowledge_stops_at_version": "7.0.0",
      "knowledge_stops_on": "2025-11-19",
      "knowledge_gap_starts_at_version": "7.1.0",
      "knowledge_gap_starts_on": "2025-12-03",
      "lag_months": 5
    },
    {
      "run_id": "prisma--claude-opus-5--v1r-b--2026-09-01",
      "library": "prisma",
      "model": "Claude Opus 5",
      "stated_cutoff": "2026-05",
      "knowledge_stops_at_version": "6.7.0",
      "knowledge_stops_on": "2025-04-29",
      "knowledge_gap_starts_at_version": "6.9.0",
      "knowledge_gap_starts_on": "2025-06-03",
      "lag_months": 12
    },
    {
      "run_id": "prisma--claude-opus-5--v2-a--2026-09-05",
      "library": "prisma",
      "model": "Claude Opus 5",
      "stated_cutoff": "2026-05",
      "knowledge_stops_at_version": "6.7.0",
      "knowledge_stops_on": "2025-04-29",
      "knowledge_gap_starts_at_version": "6.8.0",
      "knowledge_gap_starts_on": "2025-05-15",
      "lag_months": 12
    },
    {
      "run_id": "prisma--claude-opus-5--v2-b--2026-09-05",
      "library": "prisma",
      "model": "Claude Opus 5",
      "stated_cutoff": "2026-05",
      "knowledge_stops_at_version": "7.0.0",
      "knowledge_stops_on": "2025-11-19",
      "knowledge_gap_starts_at_version": "7.1.0",
      "knowledge_gap_starts_on": "2025-12-03",
      "lag_months": 5
    },
    {
      "run_id": "prisma--claude-opus-5--v3-a--2026-09-05",
      "library": "prisma",
      "model": "Claude Opus 5",
      "stated_cutoff": "2026-05",
      "knowledge_stops_at_version": "6.8.0",
      "knowledge_stops_on": "2025-05-15",
      "knowledge_gap_starts_at_version": "6.9.0",
      "knowledge_gap_starts_on": "2025-06-03",
      "lag_months": 12
    },
    {
      "run_id": "prisma--claude-opus-5--v3-b--2026-09-05",
      "library": "prisma",
      "model": "Claude Opus 5",
      "stated_cutoff": "2026-05",
      "knowledge_stops_at_version": "6.10.0",
      "knowledge_stops_on": "2025-06-17",
      "knowledge_gap_starts_at_version": "6.11.0",
      "knowledge_gap_starts_on": "2025-07-01",
      "lag_months": 11
    },
    {
      "run_id": "prisma--claude-opus-5--v3-c--2026-09-05",
      "library": "prisma",
      "model": "Claude Opus 5",
      "stated_cutoff": "2026-05",
      "knowledge_stops_at_version": "7.0.0",
      "knowledge_stops_on": "2025-11-19",
      "knowledge_gap_starts_at_version": "7.1.0",
      "knowledge_gap_starts_on": "2025-12-03",
      "lag_months": 6
    },
    {
      "run_id": "prisma--claude-opus-5--v3-d--2026-09-05",
      "library": "prisma",
      "model": "Claude Opus 5",
      "stated_cutoff": "2026-05",
      "knowledge_stops_at_version": "6.15.0",
      "knowledge_stops_on": "2025-08-27",
      "knowledge_gap_starts_at_version": "6.16.0",
      "knowledge_gap_starts_on": "2025-09-10",
      "lag_months": 9
    },
    {
      "run_id": "prisma--claude-opus-5--v3-e--2026-09-05",
      "library": "prisma",
      "model": "Claude Opus 5",
      "stated_cutoff": "2026-05",
      "knowledge_stops_at_version": "7.0.0",
      "knowledge_stops_on": "2025-11-19",
      "knowledge_gap_starts_at_version": "7.1.0",
      "knowledge_gap_starts_on": "2025-12-03",
      "lag_months": 6
    },
    {
      "run_id": "prisma--claude-opus-5--v5-c--2026-09-06",
      "library": "prisma",
      "model": "Claude Opus 5",
      "stated_cutoff": "2026-05",
      "knowledge_stops_at_version": "6.7.0",
      "knowledge_stops_on": "2025-04-29",
      "knowledge_gap_starts_at_version": "6.8.0",
      "knowledge_gap_starts_on": "2025-05-15",
      "lag_months": 13
    },
    {
      "run_id": "prisma--claude-opus-5--v5-d--2026-09-06",
      "library": "prisma",
      "model": "Claude Opus 5",
      "stated_cutoff": "2026-05",
      "knowledge_stops_at_version": "7.0.0",
      "knowledge_stops_on": "2025-11-19",
      "knowledge_gap_starts_at_version": "7.1.0",
      "knowledge_gap_starts_on": "2025-12-03",
      "lag_months": 6
    },
    {
      "run_id": "tailwindcss--claude-opus-5--v1--2026-08-31",
      "library": "tailwindcss",
      "model": "Claude Opus 5",
      "stated_cutoff": "2026-05",
      "knowledge_stops_at_version": "4.1.0",
      "knowledge_stops_on": "2025-04-01",
      "knowledge_gap_starts_at_version": "4.2.0",
      "knowledge_gap_starts_on": "2026-02-18",
      "lag_months": 13
    },
    {
      "run_id": "tailwindcss--claude-opus-5--v2-a--2026-09-03",
      "library": "tailwindcss",
      "model": "Claude Opus 5",
      "stated_cutoff": "2026-05",
      "knowledge_stops_at_version": "4.1.0",
      "knowledge_stops_on": "2025-04-01",
      "knowledge_gap_starts_at_version": "4.2.0",
      "knowledge_gap_starts_on": "2026-02-18",
      "lag_months": 13
    },
    {
      "run_id": "tailwindcss--claude-opus-5--v2-b--2026-09-03",
      "library": "tailwindcss",
      "model": "Claude Opus 5",
      "stated_cutoff": "2026-05",
      "knowledge_stops_at_version": "4.1.0",
      "knowledge_stops_on": "2025-04-01",
      "knowledge_gap_starts_at_version": "4.2.0",
      "knowledge_gap_starts_on": "2026-02-18",
      "lag_months": 13
    },
    {
      "run_id": "tailwindcss--claude-opus-5--v3-c--2026-09-06",
      "library": "tailwindcss",
      "model": "Claude Opus 5",
      "stated_cutoff": "2026-05",
      "knowledge_stops_at_version": "4.1.0",
      "knowledge_stops_on": "2025-04-01",
      "knowledge_gap_starts_at_version": "4.2.0",
      "knowledge_gap_starts_on": "2026-02-18",
      "lag_months": 13
    },
    {
      "run_id": "valibot--claude-opus-5--v1--2026-09-01",
      "library": "valibot",
      "model": "Claude Opus 5",
      "stated_cutoff": "2026-05",
      "knowledge_stops_at_version": "1.1.0",
      "knowledge_stops_on": "2025-05-06",
      "knowledge_gap_starts_at_version": "1.2.0",
      "knowledge_gap_starts_on": "2025-11-24",
      "lag_months": 12
    },
    {
      "run_id": "valibot--claude-opus-5--v1r-a--2026-09-01",
      "library": "valibot",
      "model": "Claude Opus 5",
      "stated_cutoff": "2026-05",
      "knowledge_stops_at_version": "1.0.0",
      "knowledge_stops_on": "2025-03-19",
      "knowledge_gap_starts_at_version": "1.1.0",
      "knowledge_gap_starts_on": "2025-05-06",
      "lag_months": 14
    },
    {
      "run_id": "valibot--claude-opus-5--v1r-b--2026-09-01",
      "library": "valibot",
      "model": "Claude Opus 5",
      "stated_cutoff": "2026-05",
      "knowledge_stops_at_version": "1.0.0",
      "knowledge_stops_on": "2025-03-19",
      "knowledge_gap_starts_at_version": "1.1.0",
      "knowledge_gap_starts_on": "2025-05-06",
      "lag_months": 14
    },
    {
      "run_id": "valibot--claude-opus-5--v2-a--2026-09-02",
      "library": "valibot",
      "model": "Claude Opus 5",
      "stated_cutoff": "2026-05",
      "knowledge_stops_at_version": "1.0.0",
      "knowledge_stops_on": "2025-03-19",
      "knowledge_gap_starts_at_version": "1.1.0",
      "knowledge_gap_starts_on": "2025-05-06",
      "lag_months": 14
    },
    {
      "run_id": "valibot--claude-opus-5--v2-b--2026-09-02",
      "library": "valibot",
      "model": "Claude Opus 5",
      "stated_cutoff": "2026-05",
      "knowledge_stops_at_version": "1.1.0",
      "knowledge_stops_on": "2025-05-06",
      "knowledge_gap_starts_at_version": "1.2.0",
      "knowledge_gap_starts_on": "2025-11-24",
      "lag_months": 12
    },
    {
      "run_id": "valibot--claude-opus-5--v3-c--2026-09-05",
      "library": "valibot",
      "model": "Claude Opus 5",
      "stated_cutoff": "2026-05",
      "knowledge_stops_at_version": "1.1.0",
      "knowledge_stops_on": "2025-05-06",
      "knowledge_gap_starts_at_version": "1.2.0",
      "knowledge_gap_starts_on": "2025-11-24",
      "lag_months": 12
    },
    {
      "run_id": "valibot--claude-opus-5--v3-d--2026-09-05",
      "library": "valibot",
      "model": "Claude Opus 5",
      "stated_cutoff": "2026-05",
      "knowledge_stops_at_version": "1.1.0",
      "knowledge_stops_on": "2025-05-06",
      "knowledge_gap_starts_at_version": "1.2.0",
      "knowledge_gap_starts_on": "2025-11-24",
      "lag_months": 12
    },
    {
      "run_id": "valibot--claude-opus-5--v4-c--2026-09-06",
      "library": "valibot",
      "model": "Claude Opus 5",
      "stated_cutoff": "2026-05",
      "knowledge_stops_at_version": "1.1.0",
      "knowledge_stops_on": "2025-05-06",
      "knowledge_gap_starts_at_version": "1.2.0",
      "knowledge_gap_starts_on": "2025-11-24",
      "lag_months": 12
    },
    {
      "run_id": "zod--claude-opus-5--v1--2026-08-29",
      "library": "zod",
      "model": "Claude Opus 5",
      "stated_cutoff": "2026-05",
      "knowledge_stops_at_version": "4.1.0",
      "knowledge_stops_on": "2025-08-23",
      "knowledge_gap_starts_at_version": "4.2.0",
      "knowledge_gap_starts_on": "2025-12-15",
      "lag_months": 9
    },
    {
      "run_id": "zod--claude-opus-5--v2--2026-08-29",
      "library": "zod",
      "model": "Claude Opus 5",
      "stated_cutoff": "2026-05",
      "knowledge_stops_at_version": "4.1.0",
      "knowledge_stops_on": "2025-08-23",
      "knowledge_gap_starts_at_version": "4.2.0",
      "knowledge_gap_starts_on": "2025-12-15",
      "lag_months": 9
    },
    {
      "run_id": "zod--claude-opus-5--v2r-a--2026-09-01",
      "library": "zod",
      "model": "Claude Opus 5",
      "stated_cutoff": "2026-05",
      "knowledge_stops_at_version": "4.1.0",
      "knowledge_stops_on": "2025-08-23",
      "knowledge_gap_starts_at_version": "4.2.0",
      "knowledge_gap_starts_on": "2025-12-15",
      "lag_months": 9
    },
    {
      "run_id": "zod--claude-opus-5--v2r-b--2026-09-01",
      "library": "zod",
      "model": "Claude Opus 5",
      "stated_cutoff": "2026-05",
      "knowledge_stops_at_version": "4.1.0",
      "knowledge_stops_on": "2025-08-23",
      "knowledge_gap_starts_at_version": "4.2.0",
      "knowledge_gap_starts_on": "2025-12-15",
      "lag_months": 9
    },
    {
      "run_id": "zod--claude-opus-5--v3-a--2026-09-02",
      "library": "zod",
      "model": "Claude Opus 5",
      "stated_cutoff": "2026-05",
      "knowledge_stops_at_version": "4.1.0",
      "knowledge_stops_on": "2025-08-23",
      "knowledge_gap_starts_at_version": "4.2.0",
      "knowledge_gap_starts_on": "2025-12-15",
      "lag_months": 9
    },
    {
      "run_id": "zod--claude-opus-5--v3-b--2026-09-02",
      "library": "zod",
      "model": "Claude Opus 5",
      "stated_cutoff": "2026-05",
      "knowledge_stops_at_version": "4.1.0",
      "knowledge_stops_on": "2025-08-23",
      "knowledge_gap_starts_at_version": "4.2.0",
      "knowledge_gap_starts_on": "2025-12-15",
      "lag_months": 9
    },
    {
      "run_id": "better-auth--claude-sonnet-5--v1--2026-09-01",
      "library": "better-auth",
      "model": "Claude Sonnet 5",
      "stated_cutoff": "2026-01",
      "knowledge_stops_at_version": "1.0.0",
      "knowledge_stops_on": "2024-11-23",
      "knowledge_gap_starts_at_version": "1.1.0",
      "knowledge_gap_starts_on": "2024-12-20",
      "lag_months": 13
    },
    {
      "run_id": "better-auth--claude-sonnet-5--v2--2026-09-02",
      "library": "better-auth",
      "model": "Claude Sonnet 5",
      "stated_cutoff": "2026-01",
      "knowledge_stops_at_version": "1.0.0",
      "knowledge_stops_on": "2024-11-23",
      "knowledge_gap_starts_at_version": "1.1.0",
      "knowledge_gap_starts_on": "2024-12-20",
      "lag_months": 13
    },
    {
      "run_id": "better-auth--claude-sonnet-5--v3-c--2026-09-03",
      "library": "better-auth",
      "model": "Claude Sonnet 5",
      "stated_cutoff": "2026-01",
      "knowledge_stops_at_version": "1.2.0",
      "knowledge_stops_on": "2025-03-01",
      "knowledge_gap_starts_at_version": "1.3.0",
      "knowledge_gap_starts_on": "2025-07-19",
      "lag_months": 18
    },
    {
      "run_id": "better-auth--claude-sonnet-5--v4-b--2026-09-03",
      "library": "better-auth",
      "model": "Claude Sonnet 5",
      "stated_cutoff": "2026-01",
      "knowledge_stops_at_version": "1.0.0",
      "knowledge_stops_on": "2024-11-23",
      "knowledge_gap_starts_at_version": "1.1.0",
      "knowledge_gap_starts_on": "2024-12-20",
      "lag_months": 13
    },
    {
      "run_id": "better-auth--claude-sonnet-5--v5-c--2026-09-03",
      "library": "better-auth",
      "model": "Claude Sonnet 5",
      "stated_cutoff": "2026-01",
      "knowledge_stops_at_version": "1.1.0",
      "knowledge_stops_on": "2024-12-01",
      "knowledge_gap_starts_at_version": "1.2.0",
      "knowledge_gap_starts_on": "2025-03-01",
      "lag_months": 13
    },
    {
      "run_id": "better-auth--claude-sonnet-5--v7-e--2026-09-06",
      "library": "better-auth",
      "model": "Claude Sonnet 5",
      "stated_cutoff": "2026-01",
      "knowledge_stops_at_version": "1.0.0",
      "knowledge_stops_on": "2024-11-23",
      "knowledge_gap_starts_at_version": "1.1.0",
      "knowledge_gap_starts_on": "2024-12-20",
      "lag_months": 14
    },
    {
      "run_id": "langchain--claude-sonnet-5--v1--2026-08-31",
      "library": "langchain",
      "model": "Claude Sonnet 5",
      "stated_cutoff": "2026-01",
      "knowledge_stops_at_version": "0.3.0",
      "knowledge_stops_on": "2024-09-13",
      "knowledge_gap_starts_at_version": "1.0.0",
      "knowledge_gap_starts_on": "2025-10-17",
      "lag_months": 16
    },
    {
      "run_id": "langchain--claude-sonnet-5--v1r-a--2026-09-01",
      "library": "langchain",
      "model": "Claude Sonnet 5",
      "stated_cutoff": "2026-01",
      "knowledge_stops_at_version": "1.0.0",
      "knowledge_stops_on": "2025-10-17",
      "knowledge_gap_starts_at_version": "1.1.0",
      "knowledge_gap_starts_on": "2025-11-24",
      "lag_months": 3
    },
    {
      "run_id": "langchain--claude-sonnet-5--v1r-b--2026-09-01",
      "library": "langchain",
      "model": "Claude Sonnet 5",
      "stated_cutoff": "2026-01",
      "knowledge_stops_at_version": "0.3.0",
      "knowledge_stops_on": "2024-09-13",
      "knowledge_gap_starts_at_version": "1.0.0",
      "knowledge_gap_starts_on": "2025-10-17",
      "lag_months": 16
    },
    {
      "run_id": "langchain--claude-sonnet-5--v5-d--2026-09-06",
      "library": "langchain",
      "model": "Claude Sonnet 5",
      "stated_cutoff": "2026-01",
      "knowledge_stops_at_version": "1.0.0",
      "knowledge_stops_on": "2025-10-17",
      "knowledge_gap_starts_at_version": "1.1.0",
      "knowledge_gap_starts_on": "2025-11-24",
      "lag_months": 3
    },
    {
      "run_id": "langchain--claude-sonnet-5--v6-c--2026-09-06",
      "library": "langchain",
      "model": "Claude Sonnet 5",
      "stated_cutoff": "2026-01",
      "knowledge_stops_at_version": "0.3.0",
      "knowledge_stops_on": "2024-09-13",
      "knowledge_gap_starts_at_version": "1.0.0",
      "knowledge_gap_starts_on": "2025-10-17",
      "lag_months": 16
    },
    {
      "run_id": "langchain--claude-sonnet-5--v6-d--2026-09-06",
      "library": "langchain",
      "model": "Claude Sonnet 5",
      "stated_cutoff": "2026-01",
      "knowledge_stops_at_version": "0.3.0",
      "knowledge_stops_on": "2024-09-13",
      "knowledge_gap_starts_at_version": "1.0.0",
      "knowledge_gap_starts_on": "2025-10-17",
      "lag_months": 16
    },
    {
      "run_id": "next.js--claude-sonnet-5--v1--2026-08-31",
      "library": "next.js",
      "model": "Claude Sonnet 5",
      "stated_cutoff": "2026-01",
      "knowledge_stops_at_version": "15.0.0",
      "knowledge_stops_on": "2024-10-21",
      "knowledge_gap_starts_at_version": "15.1.0",
      "knowledge_gap_starts_on": "2024-12-10",
      "lag_months": 15
    },
    {
      "run_id": "next.js--claude-sonnet-5--v2-c--2026-09-02",
      "library": "next.js",
      "model": "Claude Sonnet 5",
      "stated_cutoff": "2026-01",
      "knowledge_stops_at_version": "15.0.0",
      "knowledge_stops_on": "2024-10-21",
      "knowledge_gap_starts_at_version": "15.1.0",
      "knowledge_gap_starts_on": "2024-12-10",
      "lag_months": 15
    },
    {
      "run_id": "next.js--claude-sonnet-5--v3-a--2026-09-02",
      "library": "next.js",
      "model": "Claude Sonnet 5",
      "stated_cutoff": "2026-01",
      "knowledge_stops_at_version": "15.3.0",
      "knowledge_stops_on": "2025-04-09",
      "knowledge_gap_starts_at_version": "15.4.0",
      "knowledge_gap_starts_on": "2025-05-30",
      "lag_months": 9
    },
    {
      "run_id": "next.js--claude-sonnet-5--v3-b--2026-09-02",
      "library": "next.js",
      "model": "Claude Sonnet 5",
      "stated_cutoff": "2025-06",
      "knowledge_stops_at_version": "15.5.0",
      "knowledge_stops_on": "2025-08-20",
      "knowledge_gap_starts_at_version": "16.0.0",
      "knowledge_gap_starts_on": "2025-10-22",
      "lag_months": 0
    },
    {
      "run_id": "prisma--claude-sonnet-5--v1--2026-08-31",
      "library": "prisma",
      "model": "Claude Sonnet 5",
      "stated_cutoff": "2026-01",
      "knowledge_stops_at_version": "6.0.0",
      "knowledge_stops_on": "2024-11-28",
      "knowledge_gap_starts_at_version": "6.1.0",
      "knowledge_gap_starts_on": "2024-12-17",
      "lag_months": 14
    },
    {
      "run_id": "prisma--claude-sonnet-5--v2-c--2026-09-05",
      "library": "prisma",
      "model": "Claude Sonnet 5",
      "stated_cutoff": "2026-01",
      "knowledge_stops_at_version": "6.0.0",
      "knowledge_stops_on": "2024-11-28",
      "knowledge_gap_starts_at_version": "6.1.0",
      "knowledge_gap_starts_on": "2024-12-17",
      "lag_months": 14
    },
    {
      "run_id": "prisma--claude-sonnet-5--v5-a--2026-09-06",
      "library": "prisma",
      "model": "Claude Sonnet 5",
      "stated_cutoff": "2026-01",
      "knowledge_stops_at_version": "6.0.0",
      "knowledge_stops_on": "2024-11-28",
      "knowledge_gap_starts_at_version": "6.1.0",
      "knowledge_gap_starts_on": "2024-12-17",
      "lag_months": 14
    },
    {
      "run_id": "prisma--claude-sonnet-5--v5-b--2026-09-06",
      "library": "prisma",
      "model": "Claude Sonnet 5",
      "stated_cutoff": "2026-01",
      "knowledge_stops_at_version": "6.0.0",
      "knowledge_stops_on": "2024-11-28",
      "knowledge_gap_starts_at_version": "6.1.0",
      "knowledge_gap_starts_on": "2024-12-17",
      "lag_months": 14
    },
    {
      "run_id": "tailwindcss--claude-sonnet-5--v1--2026-08-31",
      "library": "tailwindcss",
      "model": "Claude Sonnet 5",
      "stated_cutoff": "2026-01",
      "knowledge_stops_at_version": "4.1.0",
      "knowledge_stops_on": "2025-04-01",
      "knowledge_gap_starts_at_version": "4.2.0",
      "knowledge_gap_starts_on": "2026-02-18",
      "lag_months": 9
    },
    {
      "run_id": "tailwindcss--claude-sonnet-5--v2-c--2026-09-03",
      "library": "tailwindcss",
      "model": "Claude Sonnet 5",
      "stated_cutoff": "2026-01",
      "knowledge_stops_at_version": "4.1.0",
      "knowledge_stops_on": "2025-04-01",
      "knowledge_gap_starts_at_version": "4.2.0",
      "knowledge_gap_starts_on": "2026-02-18",
      "lag_months": 9
    },
    {
      "run_id": "tailwindcss--claude-sonnet-5--v3-d--2026-09-06",
      "library": "tailwindcss",
      "model": "Claude Sonnet 5",
      "stated_cutoff": "2026-01",
      "knowledge_stops_at_version": "4.1.0",
      "knowledge_stops_on": "2025-04-01",
      "knowledge_gap_starts_at_version": "4.2.0",
      "knowledge_gap_starts_on": "2026-02-18",
      "lag_months": 9
    },
    {
      "run_id": "valibot--claude-sonnet-5--v1--2026-09-01",
      "library": "valibot",
      "model": "Claude Sonnet 5",
      "stated_cutoff": "2026-01",
      "knowledge_stops_at_version": "1.0.0",
      "knowledge_stops_on": "2025-03-19",
      "knowledge_gap_starts_at_version": "1.1.0",
      "knowledge_gap_starts_on": "2025-05-06",
      "lag_months": 9.5
    },
    {
      "run_id": "valibot--claude-sonnet-5--v2-c--2026-09-02",
      "library": "valibot",
      "model": "Claude Sonnet 5",
      "stated_cutoff": "2026-01",
      "knowledge_stops_at_version": "1.0.0",
      "knowledge_stops_on": "2025-03-19",
      "knowledge_gap_starts_at_version": "1.1.0",
      "knowledge_gap_starts_on": "2025-05-06",
      "lag_months": 10
    },
    {
      "run_id": "valibot--claude-sonnet-5--v2-d--2026-09-02",
      "library": "valibot",
      "model": "Claude Sonnet 5",
      "stated_cutoff": "2026-01",
      "knowledge_stops_at_version": "1.0.0",
      "knowledge_stops_on": "2025-03-19",
      "knowledge_gap_starts_at_version": "1.1.0",
      "knowledge_gap_starts_on": "2025-05-06",
      "lag_months": 10
    },
    {
      "run_id": "valibot--claude-sonnet-5--v3-e--2026-09-05",
      "library": "valibot",
      "model": "Claude Sonnet 5",
      "stated_cutoff": "2026-01",
      "knowledge_stops_at_version": "1.0.0",
      "knowledge_stops_on": "2025-03-19",
      "knowledge_gap_starts_at_version": "1.1.0",
      "knowledge_gap_starts_on": "2025-05-06",
      "lag_months": 10
    },
    {
      "run_id": "zod--claude-sonnet-5--v2--2026-08-29",
      "library": "zod",
      "model": "Claude Sonnet 5",
      "stated_cutoff": "2026-01",
      "knowledge_stops_at_version": "4.0.0",
      "knowledge_stops_on": "2025-07-10",
      "knowledge_gap_starts_at_version": "4.1.0",
      "knowledge_gap_starts_on": "2025-08-23",
      "lag_months": 6
    },
    {
      "run_id": "zod--claude-sonnet-5--v4-b--2026-09-02",
      "library": "zod",
      "model": "Claude Sonnet 5",
      "stated_cutoff": "2026-01",
      "knowledge_stops_at_version": "4.0.0",
      "knowledge_stops_on": "2025-07-10",
      "knowledge_gap_starts_at_version": "4.1.0",
      "knowledge_gap_starts_on": "2025-08-23",
      "lag_months": 6
    }
  ],
  "knowledge_boundary": [
    {
      "model": "Claude Fable 5",
      "model_id": "claude-fable-5",
      "model_ids": [
        {
          "value": "claude-fable-5",
          "runs": 25,
          "run_ids": [
            "better-auth--claude-fable-5--v1--2026-09-01",
            "better-auth--claude-fable-5--v2-a--2026-09-02",
            "better-auth--claude-fable-5--v2-b--2026-09-02",
            "better-auth--claude-fable-5--v3-d--2026-09-03",
            "better-auth--claude-fable-5--v4-e--2026-09-03",
            "better-auth--claude-fable-5--v4-f--2026-09-03",
            "better-auth--claude-fable-5--v5-d--2026-09-03",
            "langchain--claude-fable-5--v1--2026-08-31",
            "langchain--claude-fable-5--v2--2026-09-01",
            "langchain--claude-fable-5--v3--2026-09-01",
            "next.js--claude-fable-5--v1--2026-08-31",
            "next.js--claude-fable-5--v2-d--2026-09-02",
            "next.js--claude-fable-5--v3-c--2026-09-02",
            "next.js--claude-fable-5--v3-d--2026-09-02",
            "prisma--claude-fable-5--v1--2026-08-31",
            "prisma--claude-fable-5--v2-d--2026-09-05",
            "tailwindcss--claude-fable-5--v1--2026-08-31",
            "tailwindcss--claude-fable-5--v2-d--2026-09-03",
            "valibot--claude-fable-5--v1--2026-09-01",
            "valibot--claude-fable-5--v2-e--2026-09-02",
            "valibot--claude-fable-5--v2-f--2026-09-02",
            "zod--claude-fable-5--v2--2026-08-29",
            "zod--claude-fable-5--v3-d--2026-09-02",
            "zod--claude-fable-5--v4-a--2026-09-02",
            "zod--claude-fable-5--v4-b--2026-09-02"
          ]
        }
      ],
      "stated_cutoff": "2026-01",
      "stated_cutoffs": [
        {
          "value": "2026-01",
          "runs": 25,
          "run_ids": [
            "better-auth--claude-fable-5--v1--2026-09-01",
            "better-auth--claude-fable-5--v2-a--2026-09-02",
            "better-auth--claude-fable-5--v2-b--2026-09-02",
            "better-auth--claude-fable-5--v3-d--2026-09-03",
            "better-auth--claude-fable-5--v4-e--2026-09-03",
            "better-auth--claude-fable-5--v4-f--2026-09-03",
            "better-auth--claude-fable-5--v5-d--2026-09-03",
            "langchain--claude-fable-5--v1--2026-08-31",
            "langchain--claude-fable-5--v2--2026-09-01",
            "langchain--claude-fable-5--v3--2026-09-01",
            "next.js--claude-fable-5--v1--2026-08-31",
            "next.js--claude-fable-5--v2-d--2026-09-02",
            "next.js--claude-fable-5--v3-c--2026-09-02",
            "next.js--claude-fable-5--v3-d--2026-09-02",
            "prisma--claude-fable-5--v1--2026-08-31",
            "prisma--claude-fable-5--v2-d--2026-09-05",
            "tailwindcss--claude-fable-5--v1--2026-08-31",
            "tailwindcss--claude-fable-5--v2-d--2026-09-03",
            "valibot--claude-fable-5--v1--2026-09-01",
            "valibot--claude-fable-5--v2-e--2026-09-02",
            "valibot--claude-fable-5--v2-f--2026-09-02",
            "zod--claude-fable-5--v2--2026-08-29",
            "zod--claude-fable-5--v3-d--2026-09-02",
            "zod--claude-fable-5--v4-a--2026-09-02",
            "zod--claude-fable-5--v4-b--2026-09-02"
          ]
        }
      ],
      "intervals": [
        {
          "library": "better-auth",
          "run_id": "better-auth--claude-fable-5--v2-a--2026-09-02",
          "last_describable_version": "1.3.0",
          "last_describable_on": "2025-07-19",
          "first_undescribable_version": "1.4.0",
          "first_undescribable_on": "2025-11-22",
          "replicate_of": null,
          "battery": "better-auth/v2-a",
          "prompt_file": "prompts/sent/better-auth-v2.txt"
        },
        {
          "library": "better-auth",
          "run_id": "better-auth--claude-fable-5--v2-b--2026-09-02",
          "last_describable_version": "1.3.0",
          "last_describable_on": "2025-07-19",
          "first_undescribable_version": "1.4.0",
          "first_undescribable_on": "2025-11-22",
          "replicate_of": "better-auth--claude-fable-5--v2-a--2026-09-02",
          "battery": "better-auth/v2-b",
          "prompt_file": "prompts/sent/better-auth-v2.txt"
        },
        {
          "library": "better-auth",
          "run_id": "better-auth--claude-fable-5--v3-d--2026-09-03",
          "last_describable_version": "1.3.0",
          "last_describable_on": "2025-07-19",
          "first_undescribable_version": "1.4.0",
          "first_undescribable_on": "2025-11-22",
          "replicate_of": null,
          "battery": "better-auth/v3-d",
          "prompt_file": "prompts/sent/better-auth-v3.txt"
        },
        {
          "library": "better-auth",
          "run_id": "better-auth--claude-fable-5--v4-e--2026-09-03",
          "last_describable_version": "1.3.0",
          "last_describable_on": "2025-07-19",
          "first_undescribable_version": "1.4.0",
          "first_undescribable_on": "2025-11-22",
          "replicate_of": null,
          "battery": "better-auth/v4-e",
          "prompt_file": "prompts/sent/better-auth-v4.txt"
        },
        {
          "library": "better-auth",
          "run_id": "better-auth--claude-fable-5--v4-f--2026-09-03",
          "last_describable_version": "1.3.0",
          "last_describable_on": "2025-07-19",
          "first_undescribable_version": "1.4.0",
          "first_undescribable_on": "2025-11-22",
          "replicate_of": "better-auth--claude-fable-5--v4-e--2026-09-03",
          "battery": "better-auth/v4-f",
          "prompt_file": "prompts/sent/better-auth-v4.txt"
        },
        {
          "library": "better-auth",
          "run_id": "better-auth--claude-fable-5--v1--2026-09-01",
          "last_describable_version": "1.3.0",
          "last_describable_on": "2025-07-19",
          "first_undescribable_version": "1.4.0",
          "first_undescribable_on": "2025-11-22",
          "replicate_of": null,
          "battery": "better-auth/v1",
          "prompt_file": null
        },
        {
          "library": "langchain",
          "run_id": "langchain--claude-fable-5--v1--2026-08-31",
          "last_describable_version": "1.0.0",
          "last_describable_on": "2025-10-17",
          "first_undescribable_version": "1.1.0",
          "first_undescribable_on": "2025-11-24",
          "replicate_of": null,
          "battery": "langchain/v1",
          "prompt_file": null
        },
        {
          "library": "next.js",
          "run_id": "next.js--claude-fable-5--v2-d--2026-09-02",
          "last_describable_version": "16.0.0",
          "last_describable_on": "2025-10-22",
          "first_undescribable_version": "16.1.0",
          "first_undescribable_on": "2025-12-18",
          "replicate_of": null,
          "battery": "next.js/v2-d",
          "prompt_file": "prompts/sent/nextjs-v2.txt"
        },
        {
          "library": "next.js",
          "run_id": "next.js--claude-fable-5--v3-c--2026-09-02",
          "last_describable_version": "16.0.0",
          "last_describable_on": "2025-10-22",
          "first_undescribable_version": "16.1.0",
          "first_undescribable_on": "2025-12-18",
          "replicate_of": null,
          "battery": "next.js/v3-c",
          "prompt_file": "prompts/sent/nextjs-v3.txt"
        },
        {
          "library": "next.js",
          "run_id": "next.js--claude-fable-5--v3-d--2026-09-02",
          "last_describable_version": "16.0.0",
          "last_describable_on": "2025-10-22",
          "first_undescribable_version": "16.1.0",
          "first_undescribable_on": "2025-12-18",
          "replicate_of": "next.js--claude-fable-5--v3-c--2026-09-02",
          "battery": "next.js/v3-d",
          "prompt_file": "prompts/sent/nextjs-v3.txt"
        },
        {
          "library": "next.js",
          "run_id": "next.js--claude-fable-5--v1--2026-08-31",
          "last_describable_version": "16.0.0",
          "last_describable_on": "2025-10-22",
          "first_undescribable_version": "16.1.0",
          "first_undescribable_on": "2025-12-18",
          "replicate_of": null,
          "battery": "next.js/v1",
          "prompt_file": null
        },
        {
          "library": "prisma",
          "run_id": "prisma--claude-fable-5--v2-d--2026-09-05",
          "last_describable_version": "6.7.0",
          "last_describable_on": "2025-04-29",
          "first_undescribable_version": "6.8.0",
          "first_undescribable_on": "2025-05-15",
          "replicate_of": null,
          "battery": "prisma/v2-d",
          "prompt_file": "prompts/sent/prisma-v2.txt"
        },
        {
          "library": "prisma",
          "run_id": "prisma--claude-fable-5--v1--2026-08-31",
          "last_describable_version": "6.7.0",
          "last_describable_on": "2025-04-29",
          "first_undescribable_version": "6.8.0",
          "first_undescribable_on": "2025-05-15",
          "replicate_of": null,
          "battery": "prisma/v1",
          "prompt_file": null
        },
        {
          "library": "tailwindcss",
          "run_id": "tailwindcss--claude-fable-5--v2-d--2026-09-03",
          "last_describable_version": "4.1.0",
          "last_describable_on": "2025-04-01",
          "first_undescribable_version": "4.2.0",
          "first_undescribable_on": "2026-02-18",
          "replicate_of": null,
          "battery": "tailwindcss/v2-d",
          "prompt_file": "prompts/sent/tailwindcss-v2.txt"
        },
        {
          "library": "tailwindcss",
          "run_id": "tailwindcss--claude-fable-5--v1--2026-08-31",
          "last_describable_version": "4.1.0",
          "last_describable_on": "2025-04-01",
          "first_undescribable_version": "4.2.0",
          "first_undescribable_on": "2026-02-18",
          "replicate_of": null,
          "battery": "tailwindcss/v1",
          "prompt_file": null
        },
        {
          "library": "valibot",
          "run_id": "valibot--claude-fable-5--v2-e--2026-09-02",
          "last_describable_version": "1.1.0",
          "last_describable_on": "2025-05-06",
          "first_undescribable_version": "1.2.0",
          "first_undescribable_on": "2025-11-24",
          "replicate_of": null,
          "battery": "valibot/v2-e",
          "prompt_file": "prompts/sent/valibot-v2.txt"
        },
        {
          "library": "valibot",
          "run_id": "valibot--claude-fable-5--v2-f--2026-09-02",
          "last_describable_version": "1.1.0",
          "last_describable_on": "2025-05-06",
          "first_undescribable_version": "1.2.0",
          "first_undescribable_on": "2025-11-24",
          "replicate_of": "valibot--claude-fable-5--v2-e--2026-09-02",
          "battery": "valibot/v2-f",
          "prompt_file": "prompts/sent/valibot-v2.txt"
        },
        {
          "library": "valibot",
          "run_id": "valibot--claude-fable-5--v1--2026-09-01",
          "last_describable_version": "1.1.0",
          "last_describable_on": "2025-05-06",
          "first_undescribable_version": "1.2.0",
          "first_undescribable_on": "2025-11-24",
          "replicate_of": null,
          "battery": "valibot/v1",
          "prompt_file": null
        },
        {
          "library": "zod",
          "run_id": "zod--claude-fable-5--v2--2026-08-29",
          "last_describable_version": "4.1.0",
          "last_describable_on": "2025-08-23",
          "first_undescribable_version": "4.2.0",
          "first_undescribable_on": "2025-12-15",
          "replicate_of": null,
          "battery": "zod/v2",
          "prompt_file": null
        },
        {
          "library": "zod",
          "run_id": "zod--claude-fable-5--v3-d--2026-09-02",
          "last_describable_version": "4.1.0",
          "last_describable_on": "2025-08-23",
          "first_undescribable_version": "4.2.0",
          "first_undescribable_on": "2025-12-15",
          "replicate_of": null,
          "battery": "zod/v3-d",
          "prompt_file": "prompts/sent/zod-v3.txt"
        },
        {
          "library": "zod",
          "run_id": "zod--claude-fable-5--v4-a--2026-09-02",
          "last_describable_version": "4.1.0",
          "last_describable_on": "2025-08-23",
          "first_undescribable_version": "4.2.0",
          "first_undescribable_on": "2025-12-15",
          "replicate_of": null,
          "battery": "zod/v4-a",
          "prompt_file": "prompts/sent/zod-v4.txt"
        },
        {
          "library": "zod",
          "run_id": "zod--claude-fable-5--v4-b--2026-09-02",
          "last_describable_version": "4.1.0",
          "last_describable_on": "2025-08-23",
          "first_undescribable_version": "4.2.0",
          "first_undescribable_on": "2025-12-15",
          "replicate_of": "zod--claude-fable-5--v4-a--2026-09-02",
          "battery": "zod/v4-b",
          "prompt_file": "prompts/sent/zod-v4.txt"
        }
      ],
      "unbounded": [
        {
          "library": "better-auth",
          "run_id": "better-auth--claude-fable-5--v5-d--2026-09-03",
          "last_describable_version": "1.3.0",
          "last_describable_on": "2025-07-19",
          "first_undescribable_version": "1.4.0",
          "first_undescribable_on": null,
          "replicate_of": null,
          "battery": "better-auth/v5-d",
          "prompt_file": "prompts/sent/better-auth-v5.txt",
          "reason": "one end of the interval was not established in this run"
        },
        {
          "library": "langchain",
          "run_id": "langchain--claude-fable-5--v2--2026-09-01",
          "last_describable_version": null,
          "last_describable_on": null,
          "first_undescribable_version": null,
          "first_undescribable_on": null,
          "replicate_of": null,
          "battery": "langchain/v2",
          "prompt_file": null,
          "reason": "one end of the interval was not established in this run"
        },
        {
          "library": "langchain",
          "run_id": "langchain--claude-fable-5--v3--2026-09-01",
          "last_describable_version": null,
          "last_describable_on": null,
          "first_undescribable_version": null,
          "first_undescribable_on": null,
          "replicate_of": null,
          "battery": "langchain/v3",
          "prompt_file": null,
          "reason": "one end of the interval was not established in this run"
        }
      ],
      "stated_cutoff_varies": false,
      "model_id_varies": false,
      "libraries_measured": 7,
      "verdict": "no-single-date",
      "replication": {
        "libraries": [
          {
            "library": "better-auth",
            "measurements": 6,
            "distinct_answers": 1,
            "agree": true,
            "last_describable_on": [
              "2025-07-19"
            ],
            "spread_days": 0,
            "spread_releases": 0,
            "cadence_minors_12mo_to_cutoff": 3,
            "run_ids": [
              "better-auth--claude-fable-5--v1--2026-09-01",
              "better-auth--claude-fable-5--v2-a--2026-09-02",
              "better-auth--claude-fable-5--v2-b--2026-09-02",
              "better-auth--claude-fable-5--v3-d--2026-09-03",
              "better-auth--claude-fable-5--v4-e--2026-09-03",
              "better-auth--claude-fable-5--v4-f--2026-09-03"
            ],
            "identical_prompt": {
              "measurements": 2,
              "distinct_answers": 1,
              "agree": true,
              "last_describable_on": [
                "2025-07-19"
              ],
              "spread_days": 0,
              "spread_releases": 0,
              "run_ids": [
                "better-auth--claude-fable-5--v2-a--2026-09-02",
                "better-auth--claude-fable-5--v2-b--2026-09-02"
              ],
              "pair_shape": "born-duplicated",
              "prompt_file": "prompts/sent/better-auth-v2.txt",
              "original_run_id": null,
              "original_agrees": null
            },
            "identical_prompt_pairs": [
              {
                "measurements": 2,
                "distinct_answers": 1,
                "agree": true,
                "last_describable_on": [
                  "2025-07-19"
                ],
                "spread_days": 0,
                "spread_releases": 0,
                "run_ids": [
                  "better-auth--claude-fable-5--v2-a--2026-09-02",
                  "better-auth--claude-fable-5--v2-b--2026-09-02"
                ],
                "pair_shape": "born-duplicated",
                "prompt_file": "prompts/sent/better-auth-v2.txt",
                "original_run_id": null,
                "original_agrees": null
              },
              {
                "measurements": 2,
                "distinct_answers": 1,
                "agree": true,
                "last_describable_on": [
                  "2025-07-19"
                ],
                "spread_days": 0,
                "spread_releases": 0,
                "run_ids": [
                  "better-auth--claude-fable-5--v4-e--2026-09-03",
                  "better-auth--claude-fable-5--v4-f--2026-09-03"
                ],
                "pair_shape": "born-duplicated",
                "prompt_file": "prompts/sent/better-auth-v4.txt",
                "original_run_id": null,
                "original_agrees": null
              }
            ]
          },
          {
            "library": "langchain",
            "measurements": 1,
            "distinct_answers": 1,
            "agree": true,
            "last_describable_on": [
              "2025-10-17"
            ],
            "spread_days": 0,
            "spread_releases": 0,
            "cadence_minors_12mo_to_cutoff": 3,
            "run_ids": [
              "langchain--claude-fable-5--v1--2026-08-31"
            ],
            "identical_prompt": null,
            "identical_prompt_pairs": []
          },
          {
            "library": "next.js",
            "measurements": 4,
            "distinct_answers": 1,
            "agree": true,
            "last_describable_on": [
              "2025-10-22"
            ],
            "spread_days": 0,
            "spread_releases": 0,
            "cadence_minors_12mo_to_cutoff": 6,
            "run_ids": [
              "next.js--claude-fable-5--v1--2026-08-31",
              "next.js--claude-fable-5--v2-d--2026-09-02",
              "next.js--claude-fable-5--v3-c--2026-09-02",
              "next.js--claude-fable-5--v3-d--2026-09-02"
            ],
            "identical_prompt": {
              "measurements": 2,
              "distinct_answers": 1,
              "agree": true,
              "last_describable_on": [
                "2025-10-22"
              ],
              "spread_days": 0,
              "spread_releases": 0,
              "run_ids": [
                "next.js--claude-fable-5--v3-c--2026-09-02",
                "next.js--claude-fable-5--v3-d--2026-09-02"
              ],
              "pair_shape": "born-duplicated",
              "prompt_file": "prompts/sent/nextjs-v3.txt",
              "original_run_id": null,
              "original_agrees": null
            },
            "identical_prompt_pairs": [
              {
                "measurements": 2,
                "distinct_answers": 1,
                "agree": true,
                "last_describable_on": [
                  "2025-10-22"
                ],
                "spread_days": 0,
                "spread_releases": 0,
                "run_ids": [
                  "next.js--claude-fable-5--v3-c--2026-09-02",
                  "next.js--claude-fable-5--v3-d--2026-09-02"
                ],
                "pair_shape": "born-duplicated",
                "prompt_file": "prompts/sent/nextjs-v3.txt",
                "original_run_id": null,
                "original_agrees": null
              }
            ]
          },
          {
            "library": "prisma",
            "measurements": 2,
            "distinct_answers": 1,
            "agree": true,
            "last_describable_on": [
              "2025-04-29"
            ],
            "spread_days": 0,
            "spread_releases": 0,
            "cadence_minors_12mo_to_cutoff": 21,
            "run_ids": [
              "prisma--claude-fable-5--v1--2026-08-31",
              "prisma--claude-fable-5--v2-d--2026-09-05"
            ],
            "identical_prompt": null,
            "identical_prompt_pairs": []
          },
          {
            "library": "tailwindcss",
            "measurements": 2,
            "distinct_answers": 1,
            "agree": true,
            "last_describable_on": [
              "2025-04-01"
            ],
            "spread_days": 0,
            "spread_releases": 0,
            "cadence_minors_12mo_to_cutoff": 2,
            "run_ids": [
              "tailwindcss--claude-fable-5--v1--2026-08-31",
              "tailwindcss--claude-fable-5--v2-d--2026-09-03"
            ],
            "identical_prompt": null,
            "identical_prompt_pairs": []
          },
          {
            "library": "valibot",
            "measurements": 3,
            "distinct_answers": 1,
            "agree": true,
            "last_describable_on": [
              "2025-05-06"
            ],
            "spread_days": 0,
            "spread_releases": 0,
            "cadence_minors_12mo_to_cutoff": 3,
            "run_ids": [
              "valibot--claude-fable-5--v1--2026-09-01",
              "valibot--claude-fable-5--v2-e--2026-09-02",
              "valibot--claude-fable-5--v2-f--2026-09-02"
            ],
            "identical_prompt": {
              "measurements": 2,
              "distinct_answers": 1,
              "agree": true,
              "last_describable_on": [
                "2025-05-06"
              ],
              "spread_days": 0,
              "spread_releases": 0,
              "run_ids": [
                "valibot--claude-fable-5--v2-e--2026-09-02",
                "valibot--claude-fable-5--v2-f--2026-09-02"
              ],
              "pair_shape": "born-duplicated",
              "prompt_file": "prompts/sent/valibot-v2.txt",
              "original_run_id": null,
              "original_agrees": null
            },
            "identical_prompt_pairs": [
              {
                "measurements": 2,
                "distinct_answers": 1,
                "agree": true,
                "last_describable_on": [
                  "2025-05-06"
                ],
                "spread_days": 0,
                "spread_releases": 0,
                "run_ids": [
                  "valibot--claude-fable-5--v2-e--2026-09-02",
                  "valibot--claude-fable-5--v2-f--2026-09-02"
                ],
                "pair_shape": "born-duplicated",
                "prompt_file": "prompts/sent/valibot-v2.txt",
                "original_run_id": null,
                "original_agrees": null
              }
            ]
          },
          {
            "library": "zod",
            "measurements": 4,
            "distinct_answers": 1,
            "agree": true,
            "last_describable_on": [
              "2025-08-23"
            ],
            "spread_days": 0,
            "spread_releases": 0,
            "cadence_minors_12mo_to_cutoff": 5,
            "run_ids": [
              "zod--claude-fable-5--v2--2026-08-29",
              "zod--claude-fable-5--v3-d--2026-09-02",
              "zod--claude-fable-5--v4-a--2026-09-02",
              "zod--claude-fable-5--v4-b--2026-09-02"
            ],
            "identical_prompt": {
              "measurements": 2,
              "distinct_answers": 1,
              "agree": true,
              "last_describable_on": [
                "2025-08-23"
              ],
              "spread_days": 0,
              "spread_releases": 0,
              "run_ids": [
                "zod--claude-fable-5--v4-a--2026-09-02",
                "zod--claude-fable-5--v4-b--2026-09-02"
              ],
              "pair_shape": "born-duplicated",
              "prompt_file": "prompts/sent/zod-v4.txt",
              "original_run_id": null,
              "original_agrees": null
            },
            "identical_prompt_pairs": [
              {
                "measurements": 2,
                "distinct_answers": 1,
                "agree": true,
                "last_describable_on": [
                  "2025-08-23"
                ],
                "spread_days": 0,
                "spread_releases": 0,
                "run_ids": [
                  "zod--claude-fable-5--v4-a--2026-09-02",
                  "zod--claude-fable-5--v4-b--2026-09-02"
                ],
                "pair_shape": "born-duplicated",
                "prompt_file": "prompts/sent/zod-v4.txt",
                "original_run_id": null,
                "original_agrees": null
              }
            ]
          }
        ],
        "libraries_measured_once": 1,
        "libraries_replicated": 6,
        "libraries_where_replicates_disagree": 0,
        "libraries_with_identical_prompt_pairs": 4,
        "libraries_where_identical_prompts_disagree": 0,
        "max_spread_days": 0,
        "max_spread_releases": 0,
        "max_spread_library": "better-auth",
        "max_identical_prompt_spread_days": 0,
        "max_identical_prompt_spread_releases": 0,
        "max_identical_prompt_spread_library": "better-auth",
        "verdict": "replicates-agree",
        "note": "Every boundary here is a self-report elicited by a battery. Where measurements is 1 the spread of that instrument is unknown for this model x library pair, so the date is a single draw and not a measured constant. See JOURNAL/023. Two readings are published per library: `spread_days` over every measurement, and `identical_prompt.spread_days` over only the concurrent blind draws that were sent the same stored prompt file. Where they differ, the wider one includes a run whose exact sent text was never stored, so part of that spread may be prompt reconstruction rather than the instrument. See JOURNAL/024. Every spread is also given in releases, counted from data/<library>/releases.json: a day-spread says how far the calendar moved between two answers, a release-spread says how many candidate answers the instrument slid across, and the two disagree about which measurement is worst. See JOURNAL/026."
      },
      "conflict_decomposition": {
        "within_library_conflicts": [],
        "cross_library_feasible_windows": [],
        "emptiness_source": "cross-library"
      },
      "intersection": null,
      "conflict": {
        "later_bound_library": "next.js",
        "later_bound_version": "16.0.0",
        "later_bound_on": "2025-10-22",
        "earlier_bound_library": "prisma",
        "earlier_bound_version": "6.8.0",
        "earlier_bound_on": "2025-05-15",
        "gap_days": 160
      }
    },
    {
      "model": "Claude Fable 5.1",
      "model_id": "claude-fable-5-1",
      "model_ids": [
        {
          "value": "claude-fable-5-1",
          "runs": 22,
          "run_ids": [
            "better-auth--claude-fable-5-1--v6--2026-09-06",
            "better-auth--claude-fable-5-1--v7-c--2026-09-06",
            "better-auth--claude-fable-5-1--v7-d--2026-09-06",
            "langchain--claude-fable-5-1--v4--2026-09-06",
            "langchain--claude-fable-5-1--v5-a--2026-09-06",
            "langchain--claude-fable-5-1--v5-b--2026-09-06",
            "langchain--claude-fable-5-1--v6-e--2026-09-06",
            "next.js--claude-fable-5-1--v4-a--2026-09-05",
            "next.js--claude-fable-5-1--v4-b--2026-09-05",
            "next.js--claude-fable-5-1--v4-c--2026-09-05",
            "next.js--claude-fable-5-1--v4-d--2026-09-05",
            "prisma--claude-fable-5-1--v4-c--2026-09-06",
            "prisma--claude-fable-5-1--v4-d--2026-09-06",
            "prisma--claude-fable-5-1--v5-e--2026-09-06",
            "prisma--claude-fable-5-1--v5-f--2026-09-06",
            "tailwindcss--claude-fable-5-1--v3-a--2026-09-06",
            "tailwindcss--claude-fable-5-1--v3-b--2026-09-06",
            "valibot--claude-fable-5-1--v3-a--2026-09-05",
            "valibot--claude-fable-5-1--v3-b--2026-09-05",
            "valibot--claude-fable-5-1--v4-a--2026-09-06",
            "valibot--claude-fable-5-1--v4-b--2026-09-06",
            "zod--claude-fable-5-1--v5--2026-09-06"
          ]
        }
      ],
      "stated_cutoff": "2026-06",
      "stated_cutoffs": [
        {
          "value": "2026-06",
          "runs": 20,
          "run_ids": [
            "better-auth--claude-fable-5-1--v6--2026-09-06",
            "better-auth--claude-fable-5-1--v7-c--2026-09-06",
            "better-auth--claude-fable-5-1--v7-d--2026-09-06",
            "langchain--claude-fable-5-1--v4--2026-09-06",
            "langchain--claude-fable-5-1--v5-a--2026-09-06",
            "langchain--claude-fable-5-1--v5-b--2026-09-06",
            "langchain--claude-fable-5-1--v6-e--2026-09-06",
            "next.js--claude-fable-5-1--v4-a--2026-09-05",
            "next.js--claude-fable-5-1--v4-b--2026-09-05",
            "next.js--claude-fable-5-1--v4-c--2026-09-05",
            "next.js--claude-fable-5-1--v4-d--2026-09-05",
            "prisma--claude-fable-5-1--v4-c--2026-09-06",
            "prisma--claude-fable-5-1--v4-d--2026-09-06",
            "prisma--claude-fable-5-1--v5-e--2026-09-06",
            "prisma--claude-fable-5-1--v5-f--2026-09-06",
            "tailwindcss--claude-fable-5-1--v3-a--2026-09-06",
            "tailwindcss--claude-fable-5-1--v3-b--2026-09-06",
            "valibot--claude-fable-5-1--v4-a--2026-09-06",
            "valibot--claude-fable-5-1--v4-b--2026-09-06",
            "zod--claude-fable-5-1--v5--2026-09-06"
          ]
        },
        {
          "value": null,
          "runs": 2,
          "run_ids": [
            "valibot--claude-fable-5-1--v3-a--2026-09-05",
            "valibot--claude-fable-5-1--v3-b--2026-09-05"
          ]
        }
      ],
      "intervals": [
        {
          "library": "better-auth",
          "run_id": "better-auth--claude-fable-5-1--v6--2026-09-06",
          "last_describable_version": "1.3.0",
          "last_describable_on": "2025-07-19",
          "first_undescribable_version": "1.4.0",
          "first_undescribable_on": "2025-11-22",
          "replicate_of": null,
          "battery": "better-auth/v6",
          "prompt_file": "prompts/sent/better-auth-v6.txt"
        },
        {
          "library": "better-auth",
          "run_id": "better-auth--claude-fable-5-1--v7-c--2026-09-06",
          "last_describable_version": "1.4.0",
          "last_describable_on": "2025-11-22",
          "first_undescribable_version": "1.5.0",
          "first_undescribable_on": "2026-03-01",
          "replicate_of": null,
          "battery": "better-auth/v7-c",
          "prompt_file": "prompts/sent/better-auth-v7.txt"
        },
        {
          "library": "better-auth",
          "run_id": "better-auth--claude-fable-5-1--v7-d--2026-09-06",
          "last_describable_version": "1.3.0",
          "last_describable_on": "2025-07-19",
          "first_undescribable_version": "1.4.0",
          "first_undescribable_on": "2025-11-22",
          "replicate_of": null,
          "battery": "better-auth/v7-d",
          "prompt_file": "prompts/sent/better-auth-v7.txt"
        },
        {
          "library": "langchain",
          "run_id": "langchain--claude-fable-5-1--v4--2026-09-06",
          "last_describable_version": "1.0.0",
          "last_describable_on": "2025-10-17",
          "first_undescribable_version": "1.1.0",
          "first_undescribable_on": "2025-11-24",
          "replicate_of": null,
          "battery": "langchain/v4",
          "prompt_file": "prompts/sent/langchain-v4.txt"
        },
        {
          "library": "langchain",
          "run_id": "langchain--claude-fable-5-1--v5-a--2026-09-06",
          "last_describable_version": "1.1.0",
          "last_describable_on": "2025-11-24",
          "first_undescribable_version": "1.2.0",
          "first_undescribable_on": "2025-12-15",
          "replicate_of": null,
          "battery": "langchain/v5-a",
          "prompt_file": "prompts/sent/langchain-v5.txt"
        },
        {
          "library": "langchain",
          "run_id": "langchain--claude-fable-5-1--v5-b--2026-09-06",
          "last_describable_version": "1.1.0",
          "last_describable_on": "2025-11-24",
          "first_undescribable_version": "1.2.0",
          "first_undescribable_on": "2025-12-15",
          "replicate_of": null,
          "battery": "langchain/v5-b",
          "prompt_file": "prompts/sent/langchain-v5.txt"
        },
        {
          "library": "langchain",
          "run_id": "langchain--claude-fable-5-1--v6-e--2026-09-06",
          "last_describable_version": "1.2.0",
          "last_describable_on": "2025-12-15",
          "first_undescribable_version": "1.3.0",
          "first_undescribable_on": "2026-05-12",
          "replicate_of": null,
          "battery": "langchain/v6-e",
          "prompt_file": "prompts/sent/langchain-v6.txt"
        },
        {
          "library": "next.js",
          "run_id": "next.js--claude-fable-5-1--v4-a--2026-09-05",
          "last_describable_version": "16.1.0",
          "last_describable_on": "2025-12-18",
          "first_undescribable_version": "16.2.0",
          "first_undescribable_on": "2026-03-18",
          "replicate_of": null,
          "battery": "next.js/v4-a",
          "prompt_file": "prompts/sent/nextjs-v4-sc.txt"
        },
        {
          "library": "next.js",
          "run_id": "next.js--claude-fable-5-1--v4-b--2026-09-05",
          "last_describable_version": "16.1.0",
          "last_describable_on": "2025-12-18",
          "first_undescribable_version": "16.2.0",
          "first_undescribable_on": "2026-03-18",
          "replicate_of": "next.js--claude-fable-5-1--v4-a--2026-09-05",
          "battery": "next.js/v4-b",
          "prompt_file": "prompts/sent/nextjs-v4-sc.txt"
        },
        {
          "library": "next.js",
          "run_id": "next.js--claude-fable-5-1--v4-c--2026-09-05",
          "last_describable_version": "16.1.0",
          "last_describable_on": "2025-12-18",
          "first_undescribable_version": "16.2.0",
          "first_undescribable_on": "2026-03-18",
          "replicate_of": null,
          "battery": "next.js/v4-c",
          "prompt_file": "prompts/sent/nextjs-v4-cs.txt"
        },
        {
          "library": "next.js",
          "run_id": "next.js--claude-fable-5-1--v4-d--2026-09-05",
          "last_describable_version": "16.1.0",
          "last_describable_on": "2025-12-18",
          "first_undescribable_version": "16.2.0",
          "first_undescribable_on": "2026-03-18",
          "replicate_of": "next.js--claude-fable-5-1--v4-c--2026-09-05",
          "battery": "next.js/v4-d",
          "prompt_file": "prompts/sent/nextjs-v4-cs.txt"
        },
        {
          "library": "prisma",
          "run_id": "prisma--claude-fable-5-1--v4-c--2026-09-06",
          "last_describable_version": "7.0.0",
          "last_describable_on": "2025-11-19",
          "first_undescribable_version": "7.1.0",
          "first_undescribable_on": "2025-12-03",
          "replicate_of": null,
          "battery": "prisma/v4-c",
          "prompt_file": "prompts/sent/prisma-v4.txt"
        },
        {
          "library": "prisma",
          "run_id": "prisma--claude-fable-5-1--v4-d--2026-09-06",
          "last_describable_version": "7.0.0",
          "last_describable_on": "2025-11-19",
          "first_undescribable_version": "7.1.0",
          "first_undescribable_on": "2025-12-03",
          "replicate_of": null,
          "battery": "prisma/v4-d",
          "prompt_file": "prompts/sent/prisma-v4.txt"
        },
        {
          "library": "prisma",
          "run_id": "prisma--claude-fable-5-1--v5-e--2026-09-06",
          "last_describable_version": "7.0.0",
          "last_describable_on": "2025-11-19",
          "first_undescribable_version": "7.1.0",
          "first_undescribable_on": "2025-12-03",
          "replicate_of": null,
          "battery": "prisma/v5-e",
          "prompt_file": "prompts/sent/prisma-v5.txt"
        },
        {
          "library": "prisma",
          "run_id": "prisma--claude-fable-5-1--v5-f--2026-09-06",
          "last_describable_version": "7.2.0",
          "last_describable_on": "2025-12-17",
          "first_undescribable_version": "7.3.0",
          "first_undescribable_on": "2026-01-21",
          "replicate_of": "prisma--claude-fable-5-1--v5-e--2026-09-06",
          "battery": "prisma/v5-f",
          "prompt_file": "prompts/sent/prisma-v5.txt"
        },
        {
          "library": "tailwindcss",
          "run_id": "tailwindcss--claude-fable-5-1--v3-a--2026-09-06",
          "last_describable_version": "4.1.0",
          "last_describable_on": "2025-04-01",
          "first_undescribable_version": "4.2.0",
          "first_undescribable_on": "2026-02-18",
          "replicate_of": null,
          "battery": "tailwindcss/v3-a",
          "prompt_file": "prompts/sent/tailwindcss-v3.txt"
        },
        {
          "library": "tailwindcss",
          "run_id": "tailwindcss--claude-fable-5-1--v3-b--2026-09-06",
          "last_describable_version": "4.1.0",
          "last_describable_on": "2025-04-01",
          "first_undescribable_version": "4.2.0",
          "first_undescribable_on": "2026-02-18",
          "replicate_of": null,
          "battery": "tailwindcss/v3-b",
          "prompt_file": "prompts/sent/tailwindcss-v3.txt"
        },
        {
          "library": "valibot",
          "run_id": "valibot--claude-fable-5-1--v3-a--2026-09-05",
          "last_describable_version": "1.1.0",
          "last_describable_on": "2025-05-06",
          "first_undescribable_version": "1.2.0",
          "first_undescribable_on": "2025-11-24",
          "replicate_of": null,
          "battery": "valibot/v3-a",
          "prompt_file": "prompts/sent/valibot-v3.txt"
        },
        {
          "library": "valibot",
          "run_id": "valibot--claude-fable-5-1--v3-b--2026-09-05",
          "last_describable_version": "1.1.0",
          "last_describable_on": "2025-05-06",
          "first_undescribable_version": "1.2.0",
          "first_undescribable_on": "2025-11-24",
          "replicate_of": "valibot--claude-fable-5-1--v3-a--2026-09-05",
          "battery": "valibot/v3-b",
          "prompt_file": "prompts/sent/valibot-v3.txt"
        },
        {
          "library": "valibot",
          "run_id": "valibot--claude-fable-5-1--v4-a--2026-09-06",
          "last_describable_version": "1.1.0",
          "last_describable_on": "2025-05-06",
          "first_undescribable_version": "1.2.0",
          "first_undescribable_on": "2025-11-24",
          "replicate_of": null,
          "battery": "valibot/v4-a",
          "prompt_file": "prompts/sent/valibot-v4.txt"
        },
        {
          "library": "valibot",
          "run_id": "valibot--claude-fable-5-1--v4-b--2026-09-06",
          "last_describable_version": "1.1.0",
          "last_describable_on": "2025-05-06",
          "first_undescribable_version": "1.2.0",
          "first_undescribable_on": "2025-11-24",
          "replicate_of": "valibot--claude-fable-5-1--v4-a--2026-09-06",
          "battery": "valibot/v4-b",
          "prompt_file": "prompts/sent/valibot-v4.txt"
        },
        {
          "library": "zod",
          "run_id": "zod--claude-fable-5-1--v5--2026-09-06",
          "last_describable_version": "4.1.0",
          "last_describable_on": "2025-08-23",
          "first_undescribable_version": "4.2.0",
          "first_undescribable_on": "2025-12-15",
          "replicate_of": null,
          "battery": "zod/v5",
          "prompt_file": "prompts/sent/zod-v5.txt"
        }
      ],
      "unbounded": [],
      "stated_cutoff_varies": true,
      "model_id_varies": false,
      "libraries_measured": 7,
      "verdict": "no-single-date",
      "replication": {
        "libraries": [
          {
            "library": "better-auth",
            "measurements": 3,
            "distinct_answers": 2,
            "agree": false,
            "last_describable_on": [
              "2025-07-19",
              "2025-11-22"
            ],
            "spread_days": 126,
            "spread_releases": 1,
            "cadence_minors_12mo_to_cutoff": 4,
            "run_ids": [
              "better-auth--claude-fable-5-1--v6--2026-09-06",
              "better-auth--claude-fable-5-1--v7-c--2026-09-06",
              "better-auth--claude-fable-5-1--v7-d--2026-09-06"
            ],
            "identical_prompt": null,
            "identical_prompt_pairs": []
          },
          {
            "library": "langchain",
            "measurements": 4,
            "distinct_answers": 3,
            "agree": false,
            "last_describable_on": [
              "2025-10-17",
              "2025-11-24",
              "2025-12-15"
            ],
            "spread_days": 59,
            "spread_releases": 2,
            "cadence_minors_12mo_to_cutoff": 4,
            "run_ids": [
              "langchain--claude-fable-5-1--v4--2026-09-06",
              "langchain--claude-fable-5-1--v5-a--2026-09-06",
              "langchain--claude-fable-5-1--v5-b--2026-09-06",
              "langchain--claude-fable-5-1--v6-e--2026-09-06"
            ],
            "identical_prompt": null,
            "identical_prompt_pairs": []
          },
          {
            "library": "next.js",
            "measurements": 4,
            "distinct_answers": 1,
            "agree": true,
            "last_describable_on": [
              "2025-12-18"
            ],
            "spread_days": 0,
            "spread_releases": 0,
            "cadence_minors_12mo_to_cutoff": 4,
            "run_ids": [
              "next.js--claude-fable-5-1--v4-a--2026-09-05",
              "next.js--claude-fable-5-1--v4-b--2026-09-05",
              "next.js--claude-fable-5-1--v4-c--2026-09-05",
              "next.js--claude-fable-5-1--v4-d--2026-09-05"
            ],
            "identical_prompt": {
              "measurements": 2,
              "distinct_answers": 1,
              "agree": true,
              "last_describable_on": [
                "2025-12-18"
              ],
              "spread_days": 0,
              "spread_releases": 0,
              "run_ids": [
                "next.js--claude-fable-5-1--v4-a--2026-09-05",
                "next.js--claude-fable-5-1--v4-b--2026-09-05"
              ],
              "pair_shape": "born-duplicated",
              "prompt_file": "prompts/sent/nextjs-v4-sc.txt",
              "original_run_id": null,
              "original_agrees": null
            },
            "identical_prompt_pairs": [
              {
                "measurements": 2,
                "distinct_answers": 1,
                "agree": true,
                "last_describable_on": [
                  "2025-12-18"
                ],
                "spread_days": 0,
                "spread_releases": 0,
                "run_ids": [
                  "next.js--claude-fable-5-1--v4-a--2026-09-05",
                  "next.js--claude-fable-5-1--v4-b--2026-09-05"
                ],
                "pair_shape": "born-duplicated",
                "prompt_file": "prompts/sent/nextjs-v4-sc.txt",
                "original_run_id": null,
                "original_agrees": null
              },
              {
                "measurements": 2,
                "distinct_answers": 1,
                "agree": true,
                "last_describable_on": [
                  "2025-12-18"
                ],
                "spread_days": 0,
                "spread_releases": 0,
                "run_ids": [
                  "next.js--claude-fable-5-1--v4-c--2026-09-05",
                  "next.js--claude-fable-5-1--v4-d--2026-09-05"
                ],
                "pair_shape": "born-duplicated",
                "prompt_file": "prompts/sent/nextjs-v4-cs.txt",
                "original_run_id": null,
                "original_agrees": null
              }
            ]
          },
          {
            "library": "prisma",
            "measurements": 4,
            "distinct_answers": 2,
            "agree": false,
            "last_describable_on": [
              "2025-11-19",
              "2025-12-17"
            ],
            "spread_days": 28,
            "spread_releases": 2,
            "cadence_minors_12mo_to_cutoff": 20,
            "run_ids": [
              "prisma--claude-fable-5-1--v4-c--2026-09-06",
              "prisma--claude-fable-5-1--v4-d--2026-09-06",
              "prisma--claude-fable-5-1--v5-e--2026-09-06",
              "prisma--claude-fable-5-1--v5-f--2026-09-06"
            ],
            "identical_prompt": {
              "measurements": 2,
              "distinct_answers": 2,
              "agree": false,
              "last_describable_on": [
                "2025-11-19",
                "2025-12-17"
              ],
              "spread_days": 28,
              "spread_releases": 2,
              "run_ids": [
                "prisma--claude-fable-5-1--v5-e--2026-09-06",
                "prisma--claude-fable-5-1--v5-f--2026-09-06"
              ],
              "pair_shape": "born-duplicated",
              "prompt_file": "prompts/sent/prisma-v5.txt",
              "original_run_id": null,
              "original_agrees": null
            },
            "identical_prompt_pairs": [
              {
                "measurements": 2,
                "distinct_answers": 2,
                "agree": false,
                "last_describable_on": [
                  "2025-11-19",
                  "2025-12-17"
                ],
                "spread_days": 28,
                "spread_releases": 2,
                "run_ids": [
                  "prisma--claude-fable-5-1--v5-e--2026-09-06",
                  "prisma--claude-fable-5-1--v5-f--2026-09-06"
                ],
                "pair_shape": "born-duplicated",
                "prompt_file": "prompts/sent/prisma-v5.txt",
                "original_run_id": null,
                "original_agrees": null
              }
            ]
          },
          {
            "library": "tailwindcss",
            "measurements": 2,
            "distinct_answers": 1,
            "agree": true,
            "last_describable_on": [
              "2025-04-01"
            ],
            "spread_days": 0,
            "spread_releases": 0,
            "cadence_minors_12mo_to_cutoff": 2,
            "run_ids": [
              "tailwindcss--claude-fable-5-1--v3-a--2026-09-06",
              "tailwindcss--claude-fable-5-1--v3-b--2026-09-06"
            ],
            "identical_prompt": null,
            "identical_prompt_pairs": []
          },
          {
            "library": "valibot",
            "measurements": 4,
            "distinct_answers": 1,
            "agree": true,
            "last_describable_on": [
              "2025-05-06"
            ],
            "spread_days": 0,
            "spread_releases": 0,
            "cadence_minors_12mo_to_cutoff": 3,
            "run_ids": [
              "valibot--claude-fable-5-1--v3-a--2026-09-05",
              "valibot--claude-fable-5-1--v3-b--2026-09-05",
              "valibot--claude-fable-5-1--v4-a--2026-09-06",
              "valibot--claude-fable-5-1--v4-b--2026-09-06"
            ],
            "identical_prompt": {
              "measurements": 2,
              "distinct_answers": 1,
              "agree": true,
              "last_describable_on": [
                "2025-05-06"
              ],
              "spread_days": 0,
              "spread_releases": 0,
              "run_ids": [
                "valibot--claude-fable-5-1--v3-a--2026-09-05",
                "valibot--claude-fable-5-1--v3-b--2026-09-05"
              ],
              "pair_shape": "born-duplicated",
              "prompt_file": "prompts/sent/valibot-v3.txt",
              "original_run_id": null,
              "original_agrees": null
            },
            "identical_prompt_pairs": [
              {
                "measurements": 2,
                "distinct_answers": 1,
                "agree": true,
                "last_describable_on": [
                  "2025-05-06"
                ],
                "spread_days": 0,
                "spread_releases": 0,
                "run_ids": [
                  "valibot--claude-fable-5-1--v3-a--2026-09-05",
                  "valibot--claude-fable-5-1--v3-b--2026-09-05"
                ],
                "pair_shape": "born-duplicated",
                "prompt_file": "prompts/sent/valibot-v3.txt",
                "original_run_id": null,
                "original_agrees": null
              },
              {
                "measurements": 2,
                "distinct_answers": 1,
                "agree": true,
                "last_describable_on": [
                  "2025-05-06"
                ],
                "spread_days": 0,
                "spread_releases": 0,
                "run_ids": [
                  "valibot--claude-fable-5-1--v4-a--2026-09-06",
                  "valibot--claude-fable-5-1--v4-b--2026-09-06"
                ],
                "pair_shape": "born-duplicated",
                "prompt_file": "prompts/sent/valibot-v4.txt",
                "original_run_id": null,
                "original_agrees": null
              }
            ]
          },
          {
            "library": "zod",
            "measurements": 1,
            "distinct_answers": 1,
            "agree": true,
            "last_describable_on": [
              "2025-08-23"
            ],
            "spread_days": 0,
            "spread_releases": 0,
            "cadence_minors_12mo_to_cutoff": 5,
            "run_ids": [
              "zod--claude-fable-5-1--v5--2026-09-06"
            ],
            "identical_prompt": null,
            "identical_prompt_pairs": []
          }
        ],
        "libraries_measured_once": 1,
        "libraries_replicated": 6,
        "libraries_where_replicates_disagree": 3,
        "libraries_with_identical_prompt_pairs": 3,
        "libraries_where_identical_prompts_disagree": 1,
        "max_spread_days": 126,
        "max_spread_releases": 1,
        "max_spread_library": "better-auth",
        "max_identical_prompt_spread_days": 28,
        "max_identical_prompt_spread_releases": 2,
        "max_identical_prompt_spread_library": "prisma",
        "verdict": "replicates-disagree",
        "note": "Every boundary here is a self-report elicited by a battery. Where measurements is 1 the spread of that instrument is unknown for this model x library pair, so the date is a single draw and not a measured constant. See JOURNAL/023. Two readings are published per library: `spread_days` over every measurement, and `identical_prompt.spread_days` over only the concurrent blind draws that were sent the same stored prompt file. Where they differ, the wider one includes a run whose exact sent text was never stored, so part of that spread may be prompt reconstruction rather than the instrument. See JOURNAL/024. Every spread is also given in releases, counted from data/<library>/releases.json: a day-spread says how far the calendar moved between two answers, a release-spread says how many candidate answers the instrument slid across, and the two disagree about which measurement is worst. See JOURNAL/026."
      },
      "conflict_decomposition": {
        "within_library_conflicts": [
          {
            "library": "better-auth",
            "draws": 3,
            "latest_last_describable_on": "2025-11-22",
            "earliest_first_undescribable_on": "2025-11-22",
            "run_ids": [
              "better-auth--claude-fable-5-1--v6--2026-09-06",
              "better-auth--claude-fable-5-1--v7-c--2026-09-06",
              "better-auth--claude-fable-5-1--v7-d--2026-09-06"
            ]
          },
          {
            "library": "langchain",
            "draws": 4,
            "latest_last_describable_on": "2025-12-15",
            "earliest_first_undescribable_on": "2025-11-24",
            "run_ids": [
              "langchain--claude-fable-5-1--v4--2026-09-06",
              "langchain--claude-fable-5-1--v5-a--2026-09-06",
              "langchain--claude-fable-5-1--v5-b--2026-09-06",
              "langchain--claude-fable-5-1--v6-e--2026-09-06"
            ]
          },
          {
            "library": "prisma",
            "draws": 4,
            "latest_last_describable_on": "2025-12-17",
            "earliest_first_undescribable_on": "2025-12-03",
            "run_ids": [
              "prisma--claude-fable-5-1--v4-c--2026-09-06",
              "prisma--claude-fable-5-1--v4-d--2026-09-06",
              "prisma--claude-fable-5-1--v5-e--2026-09-06",
              "prisma--claude-fable-5-1--v5-f--2026-09-06"
            ]
          }
        ],
        "cross_library_feasible_windows": [],
        "emptiness_source": "both"
      },
      "intersection": null,
      "conflict": {
        "later_bound_library": "next.js",
        "later_bound_version": "16.1.0",
        "later_bound_on": "2025-12-18",
        "earlier_bound_library": "better-auth",
        "earlier_bound_version": "1.4.0",
        "earlier_bound_on": "2025-11-22",
        "gap_days": 26
      }
    },
    {
      "model": "Claude Haiku 4.5",
      "model_id": "claude-haiku-4-5",
      "model_ids": [
        {
          "value": "claude-haiku-4-5",
          "runs": 9,
          "run_ids": [
            "better-auth--claude-haiku-4-5--v4-g--2026-09-03",
            "better-auth--claude-haiku-4-5--v5-e--2026-09-03",
            "better-auth--claude-haiku-4-5--v7-f--2026-09-06",
            "langchain--claude-haiku-4-5--v5-e--2026-09-06",
            "langchain--claude-haiku-4-5--v6-f--2026-09-06",
            "prisma--claude-haiku-4-5--v4-f--2026-09-06",
            "prisma--claude-haiku-4-5--v5-g--2026-09-06",
            "valibot--claude-haiku-4-5--v2-g--2026-09-02",
            "zod--claude-haiku-4-5--v4-c--2026-09-02"
          ]
        },
        {
          "value": "claude-haiku-4-5-20251001",
          "runs": 1,
          "run_ids": [
            "zod--claude-haiku-4-5--v1--2026-08-28"
          ]
        }
      ],
      "stated_cutoff": "2025-02",
      "stated_cutoffs": [
        {
          "value": "2025-02",
          "runs": 9,
          "run_ids": [
            "better-auth--claude-haiku-4-5--v4-g--2026-09-03",
            "better-auth--claude-haiku-4-5--v5-e--2026-09-03",
            "better-auth--claude-haiku-4-5--v7-f--2026-09-06",
            "langchain--claude-haiku-4-5--v5-e--2026-09-06",
            "langchain--claude-haiku-4-5--v6-f--2026-09-06",
            "prisma--claude-haiku-4-5--v4-f--2026-09-06",
            "prisma--claude-haiku-4-5--v5-g--2026-09-06",
            "valibot--claude-haiku-4-5--v2-g--2026-09-02",
            "zod--claude-haiku-4-5--v4-c--2026-09-02"
          ]
        },
        {
          "value": null,
          "runs": 1,
          "run_ids": [
            "zod--claude-haiku-4-5--v1--2026-08-28"
          ]
        }
      ],
      "intervals": [
        {
          "library": "langchain",
          "run_id": "langchain--claude-haiku-4-5--v5-e--2026-09-06",
          "last_describable_version": "0.3.0",
          "last_describable_on": "2024-09-13",
          "first_undescribable_version": "1.0.0",
          "first_undescribable_on": "2025-10-17",
          "replicate_of": null,
          "battery": "langchain/v5-e",
          "prompt_file": "prompts/sent/langchain-v5.txt"
        },
        {
          "library": "langchain",
          "run_id": "langchain--claude-haiku-4-5--v6-f--2026-09-06",
          "last_describable_version": "0.2.0",
          "last_describable_on": "2024-05-20",
          "first_undescribable_version": "0.3.0",
          "first_undescribable_on": "2024-09-13",
          "replicate_of": null,
          "battery": "langchain/v6-f",
          "prompt_file": "prompts/sent/langchain-v6.txt"
        }
      ],
      "unbounded": [
        {
          "library": "better-auth",
          "run_id": "better-auth--claude-haiku-4-5--v4-g--2026-09-03",
          "last_describable_version": null,
          "last_describable_on": null,
          "first_undescribable_version": null,
          "first_undescribable_on": null,
          "replicate_of": null,
          "battery": "better-auth/v4-g",
          "prompt_file": "prompts/sent/better-auth-v4.txt",
          "reason": "one end of the interval was not established in this run"
        },
        {
          "library": "better-auth",
          "run_id": "better-auth--claude-haiku-4-5--v5-e--2026-09-03",
          "last_describable_version": null,
          "last_describable_on": null,
          "first_undescribable_version": null,
          "first_undescribable_on": null,
          "replicate_of": null,
          "battery": "better-auth/v5-e",
          "prompt_file": "prompts/sent/better-auth-v5.txt",
          "reason": "one end of the interval was not established in this run"
        },
        {
          "library": "better-auth",
          "run_id": "better-auth--claude-haiku-4-5--v7-f--2026-09-06",
          "last_describable_version": null,
          "last_describable_on": null,
          "first_undescribable_version": null,
          "first_undescribable_on": null,
          "replicate_of": null,
          "battery": "better-auth/v7-f",
          "prompt_file": "prompts/sent/better-auth-v7.txt",
          "reason": "one end of the interval was not established in this run"
        },
        {
          "library": "prisma",
          "run_id": "prisma--claude-haiku-4-5--v4-f--2026-09-06",
          "last_describable_version": null,
          "last_describable_on": null,
          "first_undescribable_version": null,
          "first_undescribable_on": null,
          "replicate_of": null,
          "battery": "prisma/v4-f",
          "prompt_file": "prompts/sent/prisma-v4.txt",
          "reason": "one end of the interval was not established in this run"
        },
        {
          "library": "prisma",
          "run_id": "prisma--claude-haiku-4-5--v5-g--2026-09-06",
          "last_describable_version": null,
          "last_describable_on": null,
          "first_undescribable_version": null,
          "first_undescribable_on": null,
          "replicate_of": null,
          "battery": "prisma/v5-g",
          "prompt_file": "prompts/sent/prisma-v5.txt",
          "reason": "one end of the interval was not established in this run"
        },
        {
          "library": "valibot",
          "run_id": "valibot--claude-haiku-4-5--v2-g--2026-09-02",
          "last_describable_version": null,
          "last_describable_on": null,
          "first_undescribable_version": null,
          "first_undescribable_on": null,
          "replicate_of": null,
          "battery": "valibot/v2-g",
          "prompt_file": "prompts/sent/valibot-v2.txt",
          "reason": "one end of the interval was not established in this run"
        },
        {
          "library": "zod",
          "run_id": "zod--claude-haiku-4-5--v4-c--2026-09-02",
          "last_describable_version": "3.22.0",
          "last_describable_on": null,
          "first_undescribable_version": "4.0.0",
          "first_undescribable_on": "2025-07-10",
          "replicate_of": null,
          "battery": "zod/v4-c",
          "prompt_file": "prompts/sent/zod-v4.txt",
          "reason": "one end of the interval was not established in this run"
        },
        {
          "library": "zod",
          "run_id": "zod--claude-haiku-4-5--v1--2026-08-28",
          "last_describable_version": "3.x",
          "last_describable_on": null,
          "first_undescribable_version": "4.0.0",
          "first_undescribable_on": "2025-07-10",
          "replicate_of": null,
          "battery": "zod/v1",
          "prompt_file": null,
          "reason": "one end of the interval was not established in this run"
        }
      ],
      "stated_cutoff_varies": true,
      "model_id_varies": true,
      "libraries_measured": 1,
      "verdict": "no-single-date",
      "replication": {
        "libraries": [
          {
            "library": "langchain",
            "measurements": 2,
            "distinct_answers": 2,
            "agree": false,
            "last_describable_on": [
              "2024-05-20",
              "2024-09-13"
            ],
            "spread_days": 116,
            "spread_releases": null,
            "cadence_minors_12mo_to_cutoff": null,
            "run_ids": [
              "langchain--claude-haiku-4-5--v5-e--2026-09-06",
              "langchain--claude-haiku-4-5--v6-f--2026-09-06"
            ],
            "identical_prompt": null,
            "identical_prompt_pairs": []
          }
        ],
        "libraries_measured_once": 0,
        "libraries_replicated": 1,
        "libraries_where_replicates_disagree": 1,
        "libraries_with_identical_prompt_pairs": 0,
        "libraries_where_identical_prompts_disagree": 0,
        "max_spread_days": 116,
        "max_spread_releases": 0,
        "max_spread_library": "langchain",
        "max_identical_prompt_spread_days": 0,
        "max_identical_prompt_spread_releases": 0,
        "max_identical_prompt_spread_library": null,
        "verdict": "replicates-disagree",
        "note": "Every boundary here is a self-report elicited by a battery. Where measurements is 1 the spread of that instrument is unknown for this model x library pair, so the date is a single draw and not a measured constant. See JOURNAL/023. Two readings are published per library: `spread_days` over every measurement, and `identical_prompt.spread_days` over only the concurrent blind draws that were sent the same stored prompt file. Where they differ, the wider one includes a run whose exact sent text was never stored, so part of that spread may be prompt reconstruction rather than the instrument. See JOURNAL/024. Every spread is also given in releases, counted from data/<library>/releases.json: a day-spread says how far the calendar moved between two answers, a release-spread says how many candidate answers the instrument slid across, and the two disagree about which measurement is worst. See JOURNAL/026."
      },
      "conflict_decomposition": {
        "within_library_conflicts": [
          {
            "library": "langchain",
            "draws": 2,
            "latest_last_describable_on": "2024-09-13",
            "earliest_first_undescribable_on": "2024-09-13",
            "run_ids": [
              "langchain--claude-haiku-4-5--v5-e--2026-09-06",
              "langchain--claude-haiku-4-5--v6-f--2026-09-06"
            ]
          }
        ],
        "cross_library_feasible_windows": [
          {
            "from": "2024-05-20",
            "to": "2025-10-17",
            "days": 515
          }
        ],
        "emptiness_source": "within-library-only"
      },
      "intersection": null,
      "conflict": {
        "later_bound_library": "langchain",
        "later_bound_version": "0.3.0",
        "later_bound_on": "2024-09-13",
        "earlier_bound_library": "langchain",
        "earlier_bound_version": "0.3.0",
        "earlier_bound_on": "2024-09-13",
        "gap_days": 0
      }
    },
    {
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "model_ids": [
        {
          "value": "claude-opus-5",
          "runs": 57,
          "run_ids": [
            "better-auth--claude-opus-5--v1--2026-09-01",
            "better-auth--claude-opus-5--v1r-a--2026-09-01",
            "better-auth--claude-opus-5--v1r-b--2026-09-01",
            "better-auth--claude-opus-5--v2-a--2026-09-02",
            "better-auth--claude-opus-5--v2-b--2026-09-02",
            "better-auth--claude-opus-5--v3-a--2026-09-03",
            "better-auth--claude-opus-5--v3-b--2026-09-03",
            "better-auth--claude-opus-5--v4-c--2026-09-03",
            "better-auth--claude-opus-5--v4-d--2026-09-03",
            "better-auth--claude-opus-5--v5-a--2026-09-03",
            "better-auth--claude-opus-5--v5-b--2026-09-03",
            "better-auth--claude-opus-5--v7-a--2026-09-06",
            "better-auth--claude-opus-5--v7-b--2026-09-06",
            "langchain--claude-opus-5--v1--2026-08-31",
            "langchain--claude-opus-5--v2--2026-09-01",
            "langchain--claude-opus-5--v3--2026-09-01",
            "langchain--claude-opus-5--v5-c--2026-09-06",
            "langchain--claude-opus-5--v6-a--2026-09-06",
            "langchain--claude-opus-5--v6-b--2026-09-06",
            "next.js--claude-opus-5--v1--2026-08-31",
            "next.js--claude-opus-5--v2-a--2026-09-02",
            "next.js--claude-opus-5--v2-b--2026-09-02",
            "next.js--claude-opus-5--v3-e--2026-09-02",
            "next.js--claude-opus-5--v3-f--2026-09-02",
            "next.js--claude-opus-5--v4-e--2026-09-05",
            "next.js--claude-opus-5--v4-f--2026-09-05",
            "prisma--claude-opus-5--v1--2026-08-31",
            "prisma--claude-opus-5--v1r-a--2026-09-01",
            "prisma--claude-opus-5--v1r-b--2026-09-01",
            "prisma--claude-opus-5--v2-a--2026-09-05",
            "prisma--claude-opus-5--v2-b--2026-09-05",
            "prisma--claude-opus-5--v3-a--2026-09-05",
            "prisma--claude-opus-5--v3-b--2026-09-05",
            "prisma--claude-opus-5--v3-c--2026-09-05",
            "prisma--claude-opus-5--v3-d--2026-09-05",
            "prisma--claude-opus-5--v3-e--2026-09-05",
            "prisma--claude-opus-5--v4-a--2026-09-06",
            "prisma--claude-opus-5--v4-b--2026-09-06",
            "prisma--claude-opus-5--v5-c--2026-09-06",
            "prisma--claude-opus-5--v5-d--2026-09-06",
            "tailwindcss--claude-opus-5--v1--2026-08-31",
            "tailwindcss--claude-opus-5--v2-a--2026-09-03",
            "tailwindcss--claude-opus-5--v2-b--2026-09-03",
            "tailwindcss--claude-opus-5--v3-c--2026-09-06",
            "valibot--claude-opus-5--v1--2026-09-01",
            "valibot--claude-opus-5--v1r-a--2026-09-01",
            "valibot--claude-opus-5--v1r-b--2026-09-01",
            "valibot--claude-opus-5--v2-a--2026-09-02",
            "valibot--claude-opus-5--v2-b--2026-09-02",
            "valibot--claude-opus-5--v3-c--2026-09-05",
            "valibot--claude-opus-5--v3-d--2026-09-05",
            "valibot--claude-opus-5--v4-c--2026-09-06",
            "zod--claude-opus-5--v2--2026-08-29",
            "zod--claude-opus-5--v2r-a--2026-09-01",
            "zod--claude-opus-5--v2r-b--2026-09-01",
            "zod--claude-opus-5--v3-a--2026-09-02",
            "zod--claude-opus-5--v3-b--2026-09-02"
          ]
        }
      ],
      "stated_cutoff": "2026-05",
      "stated_cutoffs": [
        {
          "value": "2026-05",
          "runs": 57,
          "run_ids": [
            "better-auth--claude-opus-5--v1--2026-09-01",
            "better-auth--claude-opus-5--v1r-a--2026-09-01",
            "better-auth--claude-opus-5--v1r-b--2026-09-01",
            "better-auth--claude-opus-5--v2-a--2026-09-02",
            "better-auth--claude-opus-5--v2-b--2026-09-02",
            "better-auth--claude-opus-5--v3-a--2026-09-03",
            "better-auth--claude-opus-5--v3-b--2026-09-03",
            "better-auth--claude-opus-5--v4-c--2026-09-03",
            "better-auth--claude-opus-5--v4-d--2026-09-03",
            "better-auth--claude-opus-5--v5-a--2026-09-03",
            "better-auth--claude-opus-5--v5-b--2026-09-03",
            "better-auth--claude-opus-5--v7-a--2026-09-06",
            "better-auth--claude-opus-5--v7-b--2026-09-06",
            "langchain--claude-opus-5--v1--2026-08-31",
            "langchain--claude-opus-5--v2--2026-09-01",
            "langchain--claude-opus-5--v3--2026-09-01",
            "langchain--claude-opus-5--v5-c--2026-09-06",
            "langchain--claude-opus-5--v6-a--2026-09-06",
            "langchain--claude-opus-5--v6-b--2026-09-06",
            "next.js--claude-opus-5--v1--2026-08-31",
            "next.js--claude-opus-5--v2-a--2026-09-02",
            "next.js--claude-opus-5--v2-b--2026-09-02",
            "next.js--claude-opus-5--v3-e--2026-09-02",
            "next.js--claude-opus-5--v3-f--2026-09-02",
            "next.js--claude-opus-5--v4-e--2026-09-05",
            "next.js--claude-opus-5--v4-f--2026-09-05",
            "prisma--claude-opus-5--v1--2026-08-31",
            "prisma--claude-opus-5--v1r-a--2026-09-01",
            "prisma--claude-opus-5--v1r-b--2026-09-01",
            "prisma--claude-opus-5--v2-a--2026-09-05",
            "prisma--claude-opus-5--v2-b--2026-09-05",
            "prisma--claude-opus-5--v3-a--2026-09-05",
            "prisma--claude-opus-5--v3-b--2026-09-05",
            "prisma--claude-opus-5--v3-c--2026-09-05",
            "prisma--claude-opus-5--v3-d--2026-09-05",
            "prisma--claude-opus-5--v3-e--2026-09-05",
            "prisma--claude-opus-5--v4-a--2026-09-06",
            "prisma--claude-opus-5--v4-b--2026-09-06",
            "prisma--claude-opus-5--v5-c--2026-09-06",
            "prisma--claude-opus-5--v5-d--2026-09-06",
            "tailwindcss--claude-opus-5--v1--2026-08-31",
            "tailwindcss--claude-opus-5--v2-a--2026-09-03",
            "tailwindcss--claude-opus-5--v2-b--2026-09-03",
            "tailwindcss--claude-opus-5--v3-c--2026-09-06",
            "valibot--claude-opus-5--v1--2026-09-01",
            "valibot--claude-opus-5--v1r-a--2026-09-01",
            "valibot--claude-opus-5--v1r-b--2026-09-01",
            "valibot--claude-opus-5--v2-a--2026-09-02",
            "valibot--claude-opus-5--v2-b--2026-09-02",
            "valibot--claude-opus-5--v3-c--2026-09-05",
            "valibot--claude-opus-5--v3-d--2026-09-05",
            "valibot--claude-opus-5--v4-c--2026-09-06",
            "zod--claude-opus-5--v2--2026-08-29",
            "zod--claude-opus-5--v2r-a--2026-09-01",
            "zod--claude-opus-5--v2r-b--2026-09-01",
            "zod--claude-opus-5--v3-a--2026-09-02",
            "zod--claude-opus-5--v3-b--2026-09-02"
          ]
        }
      ],
      "intervals": [
        {
          "library": "better-auth",
          "run_id": "better-auth--claude-opus-5--v1r-a--2026-09-01",
          "last_describable_version": "1.3.0",
          "last_describable_on": "2025-07-19",
          "first_undescribable_version": "1.4.0",
          "first_undescribable_on": "2025-11-22",
          "replicate_of": "better-auth--claude-opus-5--v1--2026-09-01",
          "battery": "better-auth/v1r-a",
          "prompt_file": "prompts/sent/better-auth-v1.txt"
        },
        {
          "library": "better-auth",
          "run_id": "better-auth--claude-opus-5--v1r-b--2026-09-01",
          "last_describable_version": "1.3.0",
          "last_describable_on": "2025-07-19",
          "first_undescribable_version": "1.4.0",
          "first_undescribable_on": "2025-11-22",
          "replicate_of": "better-auth--claude-opus-5--v1--2026-09-01",
          "battery": "better-auth/v1r-b",
          "prompt_file": "prompts/sent/better-auth-v1.txt"
        },
        {
          "library": "better-auth",
          "run_id": "better-auth--claude-opus-5--v2-a--2026-09-02",
          "last_describable_version": "1.3.0",
          "last_describable_on": "2025-07-19",
          "first_undescribable_version": "1.4.0",
          "first_undescribable_on": "2025-11-22",
          "replicate_of": null,
          "battery": "better-auth/v2-a",
          "prompt_file": "prompts/sent/better-auth-v2.txt"
        },
        {
          "library": "better-auth",
          "run_id": "better-auth--claude-opus-5--v2-b--2026-09-02",
          "last_describable_version": "1.3.0",
          "last_describable_on": "2025-07-19",
          "first_undescribable_version": "1.4.0",
          "first_undescribable_on": "2025-11-22",
          "replicate_of": "better-auth--claude-opus-5--v2-a--2026-09-02",
          "battery": "better-auth/v2-b",
          "prompt_file": "prompts/sent/better-auth-v2.txt"
        },
        {
          "library": "better-auth",
          "run_id": "better-auth--claude-opus-5--v3-a--2026-09-03",
          "last_describable_version": "1.2.0",
          "last_describable_on": "2025-03-01",
          "first_undescribable_version": "1.3.0",
          "first_undescribable_on": "2025-07-19",
          "replicate_of": null,
          "battery": "better-auth/v3-a",
          "prompt_file": "prompts/sent/better-auth-v3.txt"
        },
        {
          "library": "better-auth",
          "run_id": "better-auth--claude-opus-5--v3-b--2026-09-03",
          "last_describable_version": "1.2.0",
          "last_describable_on": "2025-03-01",
          "first_undescribable_version": "1.3.0",
          "first_undescribable_on": "2025-07-19",
          "replicate_of": "better-auth--claude-opus-5--v3-a--2026-09-03",
          "battery": "better-auth/v3-b",
          "prompt_file": "prompts/sent/better-auth-v3.txt"
        },
        {
          "library": "better-auth",
          "run_id": "better-auth--claude-opus-5--v4-c--2026-09-03",
          "last_describable_version": "1.2.0",
          "last_describable_on": "2025-03-01",
          "first_undescribable_version": "1.3.0",
          "first_undescribable_on": "2025-07-19",
          "replicate_of": null,
          "battery": "better-auth/v4-c",
          "prompt_file": "prompts/sent/better-auth-v4.txt"
        },
        {
          "library": "better-auth",
          "run_id": "better-auth--claude-opus-5--v4-d--2026-09-03",
          "last_describable_version": "1.2.0",
          "last_describable_on": "2025-03-01",
          "first_undescribable_version": "1.3.0",
          "first_undescribable_on": "2025-07-19",
          "replicate_of": "better-auth--claude-opus-5--v4-c--2026-09-03",
          "battery": "better-auth/v4-d",
          "prompt_file": "prompts/sent/better-auth-v4.txt"
        },
        {
          "library": "better-auth",
          "run_id": "better-auth--claude-opus-5--v5-a--2026-09-03",
          "last_describable_version": "1.2.0",
          "last_describable_on": "2025-03-01",
          "first_undescribable_version": "1.3.0",
          "first_undescribable_on": "2025-07-19",
          "replicate_of": null,
          "battery": "better-auth/v5-a",
          "prompt_file": "prompts/sent/better-auth-v5.txt"
        },
        {
          "library": "better-auth",
          "run_id": "better-auth--claude-opus-5--v5-b--2026-09-03",
          "last_describable_version": "1.2.0",
          "last_describable_on": "2025-03-01",
          "first_undescribable_version": "1.3.0",
          "first_undescribable_on": "2025-07-19",
          "replicate_of": "better-auth--claude-opus-5--v5-a--2026-09-03",
          "battery": "better-auth/v5-b",
          "prompt_file": "prompts/sent/better-auth-v5.txt"
        },
        {
          "library": "better-auth",
          "run_id": "better-auth--claude-opus-5--v7-a--2026-09-06",
          "last_describable_version": "1.2.0",
          "last_describable_on": "2025-03-01",
          "first_undescribable_version": "1.3.0",
          "first_undescribable_on": "2025-07-19",
          "replicate_of": null,
          "battery": "better-auth/v7-a",
          "prompt_file": "prompts/sent/better-auth-v7.txt"
        },
        {
          "library": "better-auth",
          "run_id": "better-auth--claude-opus-5--v7-b--2026-09-06",
          "last_describable_version": "1.2.0",
          "last_describable_on": "2025-03-01",
          "first_undescribable_version": "1.3.0",
          "first_undescribable_on": "2025-07-19",
          "replicate_of": null,
          "battery": "better-auth/v7-b",
          "prompt_file": "prompts/sent/better-auth-v7.txt"
        },
        {
          "library": "better-auth",
          "run_id": "better-auth--claude-opus-5--v1--2026-09-01",
          "last_describable_version": "1.3.0",
          "last_describable_on": "2025-07-19",
          "first_undescribable_version": "1.4.0",
          "first_undescribable_on": "2025-11-22",
          "replicate_of": null,
          "battery": "better-auth/v1",
          "prompt_file": null
        },
        {
          "library": "langchain",
          "run_id": "langchain--claude-opus-5--v5-c--2026-09-06",
          "last_describable_version": "1.0.0",
          "last_describable_on": "2025-10-17",
          "first_undescribable_version": "1.1.0",
          "first_undescribable_on": "2025-11-24",
          "replicate_of": null,
          "battery": "langchain/v5-c",
          "prompt_file": "prompts/sent/langchain-v5.txt"
        },
        {
          "library": "langchain",
          "run_id": "langchain--claude-opus-5--v6-a--2026-09-06",
          "last_describable_version": "1.0.0",
          "last_describable_on": "2025-10-17",
          "first_undescribable_version": "1.1.0",
          "first_undescribable_on": "2025-11-24",
          "replicate_of": null,
          "battery": "langchain/v6-a",
          "prompt_file": "prompts/sent/langchain-v6.txt"
        },
        {
          "library": "langchain",
          "run_id": "langchain--claude-opus-5--v6-b--2026-09-06",
          "last_describable_version": "1.0.0",
          "last_describable_on": "2025-10-17",
          "first_undescribable_version": "1.1.0",
          "first_undescribable_on": "2025-11-24",
          "replicate_of": null,
          "battery": "langchain/v6-b",
          "prompt_file": "prompts/sent/langchain-v6.txt"
        },
        {
          "library": "langchain",
          "run_id": "langchain--claude-opus-5--v1--2026-08-31",
          "last_describable_version": "1.0.0",
          "last_describable_on": "2025-10-17",
          "first_undescribable_version": "1.1.0",
          "first_undescribable_on": "2025-11-24",
          "replicate_of": null,
          "battery": "langchain/v1",
          "prompt_file": null
        },
        {
          "library": "next.js",
          "run_id": "next.js--claude-opus-5--v2-a--2026-09-02",
          "last_describable_version": "16.0.0",
          "last_describable_on": "2025-10-22",
          "first_undescribable_version": "16.1.0",
          "first_undescribable_on": "2025-12-18",
          "replicate_of": null,
          "battery": "next.js/v2-a",
          "prompt_file": "prompts/sent/nextjs-v2.txt"
        },
        {
          "library": "next.js",
          "run_id": "next.js--claude-opus-5--v2-b--2026-09-02",
          "last_describable_version": "16.0.0",
          "last_describable_on": "2025-10-22",
          "first_undescribable_version": "16.1.0",
          "first_undescribable_on": "2025-12-18",
          "replicate_of": "next.js--claude-opus-5--v2-a--2026-09-02",
          "battery": "next.js/v2-b",
          "prompt_file": "prompts/sent/nextjs-v2.txt"
        },
        {
          "library": "next.js",
          "run_id": "next.js--claude-opus-5--v3-e--2026-09-02",
          "last_describable_version": "16.0.0",
          "last_describable_on": "2025-10-22",
          "first_undescribable_version": "16.1.0",
          "first_undescribable_on": "2025-12-18",
          "replicate_of": null,
          "battery": "next.js/v3-e",
          "prompt_file": "prompts/sent/nextjs-v3.txt"
        },
        {
          "library": "next.js",
          "run_id": "next.js--claude-opus-5--v3-f--2026-09-02",
          "last_describable_version": "16.0.0",
          "last_describable_on": "2025-10-22",
          "first_undescribable_version": "16.1.0",
          "first_undescribable_on": "2025-12-18",
          "replicate_of": "next.js--claude-opus-5--v3-e--2026-09-02",
          "battery": "next.js/v3-f",
          "prompt_file": "prompts/sent/nextjs-v3.txt"
        },
        {
          "library": "next.js",
          "run_id": "next.js--claude-opus-5--v4-e--2026-09-05",
          "last_describable_version": "16.0.0",
          "last_describable_on": "2025-10-22",
          "first_undescribable_version": "16.1.0",
          "first_undescribable_on": "2025-12-18",
          "replicate_of": null,
          "battery": "next.js/v4-e",
          "prompt_file": "prompts/sent/nextjs-v4-sc.txt"
        },
        {
          "library": "next.js",
          "run_id": "next.js--claude-opus-5--v4-f--2026-09-05",
          "last_describable_version": "16.0.0",
          "last_describable_on": "2025-10-22",
          "first_undescribable_version": "16.1.0",
          "first_undescribable_on": "2025-12-18",
          "replicate_of": null,
          "battery": "next.js/v4-f",
          "prompt_file": "prompts/sent/nextjs-v4-cs.txt"
        },
        {
          "library": "next.js",
          "run_id": "next.js--claude-opus-5--v1--2026-08-31",
          "last_describable_version": "16.0.0",
          "last_describable_on": "2025-10-22",
          "first_undescribable_version": "16.1.0",
          "first_undescribable_on": "2025-12-18",
          "replicate_of": null,
          "battery": "next.js/v1",
          "prompt_file": null
        },
        {
          "library": "prisma",
          "run_id": "prisma--claude-opus-5--v1r-a--2026-09-01",
          "last_describable_version": "7.0.0",
          "last_describable_on": "2025-11-19",
          "first_undescribable_version": "7.1.0",
          "first_undescribable_on": "2025-12-03",
          "replicate_of": "prisma--claude-opus-5--v1--2026-08-31",
          "battery": "prisma/v1r-a",
          "prompt_file": "prompts/sent/prisma-v1.txt"
        },
        {
          "library": "prisma",
          "run_id": "prisma--claude-opus-5--v1r-b--2026-09-01",
          "last_describable_version": "6.7.0",
          "last_describable_on": "2025-04-29",
          "first_undescribable_version": "6.9.0",
          "first_undescribable_on": "2025-06-03",
          "replicate_of": "prisma--claude-opus-5--v1--2026-08-31",
          "battery": "prisma/v1r-b",
          "prompt_file": "prompts/sent/prisma-v1.txt"
        },
        {
          "library": "prisma",
          "run_id": "prisma--claude-opus-5--v2-a--2026-09-05",
          "last_describable_version": "6.7.0",
          "last_describable_on": "2025-04-29",
          "first_undescribable_version": "6.8.0",
          "first_undescribable_on": "2025-05-15",
          "replicate_of": null,
          "battery": "prisma/v2-a",
          "prompt_file": "prompts/sent/prisma-v2.txt"
        },
        {
          "library": "prisma",
          "run_id": "prisma--claude-opus-5--v2-b--2026-09-05",
          "last_describable_version": "7.0.0",
          "last_describable_on": "2025-11-19",
          "first_undescribable_version": "7.1.0",
          "first_undescribable_on": "2025-12-03",
          "replicate_of": "prisma--claude-opus-5--v2-a--2026-09-05",
          "battery": "prisma/v2-b",
          "prompt_file": "prompts/sent/prisma-v2.txt"
        },
        {
          "library": "prisma",
          "run_id": "prisma--claude-opus-5--v3-a--2026-09-05",
          "last_describable_version": "6.8.0",
          "last_describable_on": "2025-05-15",
          "first_undescribable_version": "6.9.0",
          "first_undescribable_on": "2025-06-03",
          "replicate_of": null,
          "battery": "prisma/v3-a",
          "prompt_file": "prompts/sent/prisma-v3-sc.txt"
        },
        {
          "library": "prisma",
          "run_id": "prisma--claude-opus-5--v3-b--2026-09-05",
          "last_describable_version": "6.10.0",
          "last_describable_on": "2025-06-17",
          "first_undescribable_version": "6.11.0",
          "first_undescribable_on": "2025-07-01",
          "replicate_of": "prisma--claude-opus-5--v3-a--2026-09-05",
          "battery": "prisma/v3-b",
          "prompt_file": "prompts/sent/prisma-v3-sc.txt"
        },
        {
          "library": "prisma",
          "run_id": "prisma--claude-opus-5--v3-c--2026-09-05",
          "last_describable_version": "7.0.0",
          "last_describable_on": "2025-11-19",
          "first_undescribable_version": "7.1.0",
          "first_undescribable_on": "2025-12-03",
          "replicate_of": null,
          "battery": "prisma/v3-c",
          "prompt_file": "prompts/sent/prisma-v3-cs.txt"
        },
        {
          "library": "prisma",
          "run_id": "prisma--claude-opus-5--v3-d--2026-09-05",
          "last_describable_version": "6.15.0",
          "last_describable_on": "2025-08-27",
          "first_undescribable_version": "6.16.0",
          "first_undescribable_on": "2025-09-10",
          "replicate_of": "prisma--claude-opus-5--v3-c--2026-09-05",
          "battery": "prisma/v3-d",
          "prompt_file": "prompts/sent/prisma-v3-cs.txt"
        },
        {
          "library": "prisma",
          "run_id": "prisma--claude-opus-5--v3-e--2026-09-05",
          "last_describable_version": "7.0.0",
          "last_describable_on": "2025-11-19",
          "first_undescribable_version": "7.1.0",
          "first_undescribable_on": "2025-12-03",
          "replicate_of": null,
          "battery": "prisma/v3-e",
          "prompt_file": "prompts/sent/prisma-v3-mo.txt"
        },
        {
          "library": "prisma",
          "run_id": "prisma--claude-opus-5--v5-c--2026-09-06",
          "last_describable_version": "6.7.0",
          "last_describable_on": "2025-04-29",
          "first_undescribable_version": "6.8.0",
          "first_undescribable_on": "2025-05-15",
          "replicate_of": null,
          "battery": "prisma/v5-c",
          "prompt_file": "prompts/sent/prisma-v5.txt"
        },
        {
          "library": "prisma",
          "run_id": "prisma--claude-opus-5--v5-d--2026-09-06",
          "last_describable_version": "7.0.0",
          "last_describable_on": "2025-11-19",
          "first_undescribable_version": "7.1.0",
          "first_undescribable_on": "2025-12-03",
          "replicate_of": "prisma--claude-opus-5--v5-c--2026-09-06",
          "battery": "prisma/v5-d",
          "prompt_file": "prompts/sent/prisma-v5.txt"
        },
        {
          "library": "prisma",
          "run_id": "prisma--claude-opus-5--v1--2026-08-31",
          "last_describable_version": "7.0.0",
          "last_describable_on": "2025-11-19",
          "first_undescribable_version": "7.1.0",
          "first_undescribable_on": "2025-12-03",
          "replicate_of": null,
          "battery": "prisma/v1",
          "prompt_file": null
        },
        {
          "library": "tailwindcss",
          "run_id": "tailwindcss--claude-opus-5--v2-a--2026-09-03",
          "last_describable_version": "4.1.0",
          "last_describable_on": "2025-04-01",
          "first_undescribable_version": "4.2.0",
          "first_undescribable_on": "2026-02-18",
          "replicate_of": null,
          "battery": "tailwindcss/v2-a",
          "prompt_file": "prompts/sent/tailwindcss-v2.txt"
        },
        {
          "library": "tailwindcss",
          "run_id": "tailwindcss--claude-opus-5--v2-b--2026-09-03",
          "last_describable_version": "4.1.0",
          "last_describable_on": "2025-04-01",
          "first_undescribable_version": "4.2.0",
          "first_undescribable_on": "2026-02-18",
          "replicate_of": "tailwindcss--claude-opus-5--v2-a--2026-09-03",
          "battery": "tailwindcss/v2-b",
          "prompt_file": "prompts/sent/tailwindcss-v2.txt"
        },
        {
          "library": "tailwindcss",
          "run_id": "tailwindcss--claude-opus-5--v3-c--2026-09-06",
          "last_describable_version": "4.1.0",
          "last_describable_on": "2025-04-01",
          "first_undescribable_version": "4.2.0",
          "first_undescribable_on": "2026-02-18",
          "replicate_of": null,
          "battery": "tailwindcss/v3-c",
          "prompt_file": "prompts/sent/tailwindcss-v3.txt"
        },
        {
          "library": "tailwindcss",
          "run_id": "tailwindcss--claude-opus-5--v1--2026-08-31",
          "last_describable_version": "4.1.0",
          "last_describable_on": "2025-04-01",
          "first_undescribable_version": "4.2.0",
          "first_undescribable_on": "2026-02-18",
          "replicate_of": null,
          "battery": "tailwindcss/v1",
          "prompt_file": null
        },
        {
          "library": "valibot",
          "run_id": "valibot--claude-opus-5--v1r-a--2026-09-01",
          "last_describable_version": "1.0.0",
          "last_describable_on": "2025-03-19",
          "first_undescribable_version": "1.1.0",
          "first_undescribable_on": "2025-05-06",
          "replicate_of": "valibot--claude-opus-5--v1--2026-09-01",
          "battery": "valibot/v1r-a",
          "prompt_file": "prompts/sent/valibot-v1.txt"
        },
        {
          "library": "valibot",
          "run_id": "valibot--claude-opus-5--v1r-b--2026-09-01",
          "last_describable_version": "1.0.0",
          "last_describable_on": "2025-03-19",
          "first_undescribable_version": "1.1.0",
          "first_undescribable_on": "2025-05-06",
          "replicate_of": "valibot--claude-opus-5--v1--2026-09-01",
          "battery": "valibot/v1r-b",
          "prompt_file": "prompts/sent/valibot-v1.txt"
        },
        {
          "library": "valibot",
          "run_id": "valibot--claude-opus-5--v2-a--2026-09-02",
          "last_describable_version": "1.0.0",
          "last_describable_on": "2025-03-19",
          "first_undescribable_version": "1.1.0",
          "first_undescribable_on": "2025-05-06",
          "replicate_of": null,
          "battery": "valibot/v2-a",
          "prompt_file": "prompts/sent/valibot-v2.txt"
        },
        {
          "library": "valibot",
          "run_id": "valibot--claude-opus-5--v2-b--2026-09-02",
          "last_describable_version": "1.1.0",
          "last_describable_on": "2025-05-06",
          "first_undescribable_version": "1.2.0",
          "first_undescribable_on": "2025-11-24",
          "replicate_of": "valibot--claude-opus-5--v2-a--2026-09-02",
          "battery": "valibot/v2-b",
          "prompt_file": "prompts/sent/valibot-v2.txt"
        },
        {
          "library": "valibot",
          "run_id": "valibot--claude-opus-5--v3-c--2026-09-05",
          "last_describable_version": "1.1.0",
          "last_describable_on": "2025-05-06",
          "first_undescribable_version": "1.2.0",
          "first_undescribable_on": "2025-11-24",
          "replicate_of": null,
          "battery": "valibot/v3-c",
          "prompt_file": "prompts/sent/valibot-v3.txt"
        },
        {
          "library": "valibot",
          "run_id": "valibot--claude-opus-5--v3-d--2026-09-05",
          "last_describable_version": "1.1.0",
          "last_describable_on": "2025-05-06",
          "first_undescribable_version": "1.2.0",
          "first_undescribable_on": "2025-11-24",
          "replicate_of": "valibot--claude-opus-5--v3-c--2026-09-05",
          "battery": "valibot/v3-d",
          "prompt_file": "prompts/sent/valibot-v3.txt"
        },
        {
          "library": "valibot",
          "run_id": "valibot--claude-opus-5--v4-c--2026-09-06",
          "last_describable_version": "1.1.0",
          "last_describable_on": "2025-05-06",
          "first_undescribable_version": "1.2.0",
          "first_undescribable_on": "2025-11-24",
          "replicate_of": null,
          "battery": "valibot/v4-c",
          "prompt_file": "prompts/sent/valibot-v4.txt"
        },
        {
          "library": "valibot",
          "run_id": "valibot--claude-opus-5--v1--2026-09-01",
          "last_describable_version": "1.1.0",
          "last_describable_on": "2025-05-06",
          "first_undescribable_version": "1.2.0",
          "first_undescribable_on": "2025-11-24",
          "replicate_of": null,
          "battery": "valibot/v1",
          "prompt_file": null
        },
        {
          "library": "zod",
          "run_id": "zod--claude-opus-5--v2--2026-08-29",
          "last_describable_version": "4.1.0",
          "last_describable_on": "2025-08-23",
          "first_undescribable_version": "4.2.0",
          "first_undescribable_on": "2025-12-15",
          "replicate_of": null,
          "battery": "zod/v2",
          "prompt_file": null
        },
        {
          "library": "zod",
          "run_id": "zod--claude-opus-5--v2r-a--2026-09-01",
          "last_describable_version": "4.1.0",
          "last_describable_on": "2025-08-23",
          "first_undescribable_version": "4.2.0",
          "first_undescribable_on": "2025-12-15",
          "replicate_of": "zod--claude-opus-5--v2--2026-08-29",
          "battery": "zod/v2r-a",
          "prompt_file": "prompts/sent/zod-v2.txt"
        },
        {
          "library": "zod",
          "run_id": "zod--claude-opus-5--v2r-b--2026-09-01",
          "last_describable_version": "4.1.0",
          "last_describable_on": "2025-08-23",
          "first_undescribable_version": "4.2.0",
          "first_undescribable_on": "2025-12-15",
          "replicate_of": "zod--claude-opus-5--v2--2026-08-29",
          "battery": "zod/v2r-b",
          "prompt_file": "prompts/sent/zod-v2.txt"
        },
        {
          "library": "zod",
          "run_id": "zod--claude-opus-5--v3-a--2026-09-02",
          "last_describable_version": "4.1.0",
          "last_describable_on": "2025-08-23",
          "first_undescribable_version": "4.2.0",
          "first_undescribable_on": "2025-12-15",
          "replicate_of": null,
          "battery": "zod/v3-a",
          "prompt_file": "prompts/sent/zod-v3.txt"
        },
        {
          "library": "zod",
          "run_id": "zod--claude-opus-5--v3-b--2026-09-02",
          "last_describable_version": "4.1.0",
          "last_describable_on": "2025-08-23",
          "first_undescribable_version": "4.2.0",
          "first_undescribable_on": "2025-12-15",
          "replicate_of": "zod--claude-opus-5--v3-a--2026-09-02",
          "battery": "zod/v3-b",
          "prompt_file": "prompts/sent/zod-v3.txt"
        }
      ],
      "unbounded": [
        {
          "library": "langchain",
          "run_id": "langchain--claude-opus-5--v2--2026-09-01",
          "last_describable_version": null,
          "last_describable_on": null,
          "first_undescribable_version": null,
          "first_undescribable_on": null,
          "replicate_of": null,
          "battery": "langchain/v2",
          "prompt_file": null,
          "reason": "one end of the interval was not established in this run"
        },
        {
          "library": "langchain",
          "run_id": "langchain--claude-opus-5--v3--2026-09-01",
          "last_describable_version": null,
          "last_describable_on": null,
          "first_undescribable_version": null,
          "first_undescribable_on": null,
          "replicate_of": null,
          "battery": "langchain/v3",
          "prompt_file": null,
          "reason": "one end of the interval was not established in this run"
        },
        {
          "library": "prisma",
          "run_id": "prisma--claude-opus-5--v4-a--2026-09-06",
          "last_describable_version": null,
          "last_describable_on": null,
          "first_undescribable_version": null,
          "first_undescribable_on": null,
          "replicate_of": null,
          "battery": "prisma/v4-a",
          "prompt_file": "prompts/sent/prisma-v4.txt",
          "reason": "one end of the interval was not established in this run"
        },
        {
          "library": "prisma",
          "run_id": "prisma--claude-opus-5--v4-b--2026-09-06",
          "last_describable_version": null,
          "last_describable_on": null,
          "first_undescribable_version": null,
          "first_undescribable_on": null,
          "replicate_of": null,
          "battery": "prisma/v4-b",
          "prompt_file": "prompts/sent/prisma-v4.txt",
          "reason": "one end of the interval was not established in this run"
        }
      ],
      "stated_cutoff_varies": false,
      "model_id_varies": false,
      "libraries_measured": 7,
      "verdict": "no-single-date",
      "replication": {
        "libraries": [
          {
            "library": "better-auth",
            "measurements": 13,
            "distinct_answers": 2,
            "agree": false,
            "last_describable_on": [
              "2025-03-01",
              "2025-07-19"
            ],
            "spread_days": 140,
            "spread_releases": 1,
            "cadence_minors_12mo_to_cutoff": 4,
            "run_ids": [
              "better-auth--claude-opus-5--v1--2026-09-01",
              "better-auth--claude-opus-5--v1r-a--2026-09-01",
              "better-auth--claude-opus-5--v1r-b--2026-09-01",
              "better-auth--claude-opus-5--v2-a--2026-09-02",
              "better-auth--claude-opus-5--v2-b--2026-09-02",
              "better-auth--claude-opus-5--v3-a--2026-09-03",
              "better-auth--claude-opus-5--v3-b--2026-09-03",
              "better-auth--claude-opus-5--v4-c--2026-09-03",
              "better-auth--claude-opus-5--v4-d--2026-09-03",
              "better-auth--claude-opus-5--v5-a--2026-09-03",
              "better-auth--claude-opus-5--v5-b--2026-09-03",
              "better-auth--claude-opus-5--v7-a--2026-09-06",
              "better-auth--claude-opus-5--v7-b--2026-09-06"
            ],
            "identical_prompt": {
              "measurements": 2,
              "distinct_answers": 1,
              "agree": true,
              "last_describable_on": [
                "2025-07-19"
              ],
              "spread_days": 0,
              "spread_releases": 0,
              "run_ids": [
                "better-auth--claude-opus-5--v1r-a--2026-09-01",
                "better-auth--claude-opus-5--v1r-b--2026-09-01"
              ],
              "pair_shape": "retrospective",
              "prompt_file": "prompts/sent/better-auth-v1.txt",
              "original_run_id": "better-auth--claude-opus-5--v1--2026-09-01",
              "original_agrees": true
            },
            "identical_prompt_pairs": [
              {
                "measurements": 2,
                "distinct_answers": 1,
                "agree": true,
                "last_describable_on": [
                  "2025-07-19"
                ],
                "spread_days": 0,
                "spread_releases": 0,
                "run_ids": [
                  "better-auth--claude-opus-5--v1r-a--2026-09-01",
                  "better-auth--claude-opus-5--v1r-b--2026-09-01"
                ],
                "pair_shape": "retrospective",
                "prompt_file": "prompts/sent/better-auth-v1.txt",
                "original_run_id": "better-auth--claude-opus-5--v1--2026-09-01",
                "original_agrees": true
              },
              {
                "measurements": 2,
                "distinct_answers": 1,
                "agree": true,
                "last_describable_on": [
                  "2025-07-19"
                ],
                "spread_days": 0,
                "spread_releases": 0,
                "run_ids": [
                  "better-auth--claude-opus-5--v2-a--2026-09-02",
                  "better-auth--claude-opus-5--v2-b--2026-09-02"
                ],
                "pair_shape": "born-duplicated",
                "prompt_file": "prompts/sent/better-auth-v2.txt",
                "original_run_id": null,
                "original_agrees": null
              },
              {
                "measurements": 2,
                "distinct_answers": 1,
                "agree": true,
                "last_describable_on": [
                  "2025-03-01"
                ],
                "spread_days": 0,
                "spread_releases": 0,
                "run_ids": [
                  "better-auth--claude-opus-5--v3-a--2026-09-03",
                  "better-auth--claude-opus-5--v3-b--2026-09-03"
                ],
                "pair_shape": "born-duplicated",
                "prompt_file": "prompts/sent/better-auth-v3.txt",
                "original_run_id": null,
                "original_agrees": null
              },
              {
                "measurements": 2,
                "distinct_answers": 1,
                "agree": true,
                "last_describable_on": [
                  "2025-03-01"
                ],
                "spread_days": 0,
                "spread_releases": 0,
                "run_ids": [
                  "better-auth--claude-opus-5--v4-c--2026-09-03",
                  "better-auth--claude-opus-5--v4-d--2026-09-03"
                ],
                "pair_shape": "born-duplicated",
                "prompt_file": "prompts/sent/better-auth-v4.txt",
                "original_run_id": null,
                "original_agrees": null
              },
              {
                "measurements": 2,
                "distinct_answers": 1,
                "agree": true,
                "last_describable_on": [
                  "2025-03-01"
                ],
                "spread_days": 0,
                "spread_releases": 0,
                "run_ids": [
                  "better-auth--claude-opus-5--v5-a--2026-09-03",
                  "better-auth--claude-opus-5--v5-b--2026-09-03"
                ],
                "pair_shape": "born-duplicated",
                "prompt_file": "prompts/sent/better-auth-v5.txt",
                "original_run_id": null,
                "original_agrees": null
              }
            ]
          },
          {
            "library": "langchain",
            "measurements": 4,
            "distinct_answers": 1,
            "agree": true,
            "last_describable_on": [
              "2025-10-17"
            ],
            "spread_days": 0,
            "spread_releases": 0,
            "cadence_minors_12mo_to_cutoff": 3,
            "run_ids": [
              "langchain--claude-opus-5--v1--2026-08-31",
              "langchain--claude-opus-5--v5-c--2026-09-06",
              "langchain--claude-opus-5--v6-a--2026-09-06",
              "langchain--claude-opus-5--v6-b--2026-09-06"
            ],
            "identical_prompt": null,
            "identical_prompt_pairs": []
          },
          {
            "library": "next.js",
            "measurements": 7,
            "distinct_answers": 1,
            "agree": true,
            "last_describable_on": [
              "2025-10-22"
            ],
            "spread_days": 0,
            "spread_releases": 0,
            "cadence_minors_12mo_to_cutoff": 5,
            "run_ids": [
              "next.js--claude-opus-5--v1--2026-08-31",
              "next.js--claude-opus-5--v2-a--2026-09-02",
              "next.js--claude-opus-5--v2-b--2026-09-02",
              "next.js--claude-opus-5--v3-e--2026-09-02",
              "next.js--claude-opus-5--v3-f--2026-09-02",
              "next.js--claude-opus-5--v4-e--2026-09-05",
              "next.js--claude-opus-5--v4-f--2026-09-05"
            ],
            "identical_prompt": {
              "measurements": 2,
              "distinct_answers": 1,
              "agree": true,
              "last_describable_on": [
                "2025-10-22"
              ],
              "spread_days": 0,
              "spread_releases": 0,
              "run_ids": [
                "next.js--claude-opus-5--v2-a--2026-09-02",
                "next.js--claude-opus-5--v2-b--2026-09-02"
              ],
              "pair_shape": "born-duplicated",
              "prompt_file": "prompts/sent/nextjs-v2.txt",
              "original_run_id": null,
              "original_agrees": null
            },
            "identical_prompt_pairs": [
              {
                "measurements": 2,
                "distinct_answers": 1,
                "agree": true,
                "last_describable_on": [
                  "2025-10-22"
                ],
                "spread_days": 0,
                "spread_releases": 0,
                "run_ids": [
                  "next.js--claude-opus-5--v2-a--2026-09-02",
                  "next.js--claude-opus-5--v2-b--2026-09-02"
                ],
                "pair_shape": "born-duplicated",
                "prompt_file": "prompts/sent/nextjs-v2.txt",
                "original_run_id": null,
                "original_agrees": null
              },
              {
                "measurements": 2,
                "distinct_answers": 1,
                "agree": true,
                "last_describable_on": [
                  "2025-10-22"
                ],
                "spread_days": 0,
                "spread_releases": 0,
                "run_ids": [
                  "next.js--claude-opus-5--v3-e--2026-09-02",
                  "next.js--claude-opus-5--v3-f--2026-09-02"
                ],
                "pair_shape": "born-duplicated",
                "prompt_file": "prompts/sent/nextjs-v3.txt",
                "original_run_id": null,
                "original_agrees": null
              }
            ]
          },
          {
            "library": "prisma",
            "measurements": 12,
            "distinct_answers": 5,
            "agree": false,
            "last_describable_on": [
              "2025-04-29",
              "2025-05-15",
              "2025-06-17",
              "2025-08-27",
              "2025-11-19"
            ],
            "spread_days": 204,
            "spread_releases": 13,
            "cadence_minors_12mo_to_cutoff": 21,
            "run_ids": [
              "prisma--claude-opus-5--v1--2026-08-31",
              "prisma--claude-opus-5--v1r-a--2026-09-01",
              "prisma--claude-opus-5--v1r-b--2026-09-01",
              "prisma--claude-opus-5--v2-a--2026-09-05",
              "prisma--claude-opus-5--v2-b--2026-09-05",
              "prisma--claude-opus-5--v3-a--2026-09-05",
              "prisma--claude-opus-5--v3-b--2026-09-05",
              "prisma--claude-opus-5--v3-c--2026-09-05",
              "prisma--claude-opus-5--v3-d--2026-09-05",
              "prisma--claude-opus-5--v3-e--2026-09-05",
              "prisma--claude-opus-5--v5-c--2026-09-06",
              "prisma--claude-opus-5--v5-d--2026-09-06"
            ],
            "identical_prompt": {
              "measurements": 2,
              "distinct_answers": 2,
              "agree": false,
              "last_describable_on": [
                "2025-04-29",
                "2025-11-19"
              ],
              "spread_days": 204,
              "spread_releases": 13,
              "run_ids": [
                "prisma--claude-opus-5--v1r-a--2026-09-01",
                "prisma--claude-opus-5--v1r-b--2026-09-01"
              ],
              "pair_shape": "retrospective",
              "prompt_file": "prompts/sent/prisma-v1.txt",
              "original_run_id": "prisma--claude-opus-5--v1--2026-08-31",
              "original_agrees": true
            },
            "identical_prompt_pairs": [
              {
                "measurements": 2,
                "distinct_answers": 2,
                "agree": false,
                "last_describable_on": [
                  "2025-04-29",
                  "2025-11-19"
                ],
                "spread_days": 204,
                "spread_releases": 13,
                "run_ids": [
                  "prisma--claude-opus-5--v1r-a--2026-09-01",
                  "prisma--claude-opus-5--v1r-b--2026-09-01"
                ],
                "pair_shape": "retrospective",
                "prompt_file": "prompts/sent/prisma-v1.txt",
                "original_run_id": "prisma--claude-opus-5--v1--2026-08-31",
                "original_agrees": true
              },
              {
                "measurements": 2,
                "distinct_answers": 2,
                "agree": false,
                "last_describable_on": [
                  "2025-04-29",
                  "2025-11-19"
                ],
                "spread_days": 204,
                "spread_releases": 13,
                "run_ids": [
                  "prisma--claude-opus-5--v2-a--2026-09-05",
                  "prisma--claude-opus-5--v2-b--2026-09-05"
                ],
                "pair_shape": "born-duplicated",
                "prompt_file": "prompts/sent/prisma-v2.txt",
                "original_run_id": null,
                "original_agrees": null
              },
              {
                "measurements": 2,
                "distinct_answers": 2,
                "agree": false,
                "last_describable_on": [
                  "2025-04-29",
                  "2025-11-19"
                ],
                "spread_days": 204,
                "spread_releases": 13,
                "run_ids": [
                  "prisma--claude-opus-5--v5-c--2026-09-06",
                  "prisma--claude-opus-5--v5-d--2026-09-06"
                ],
                "pair_shape": "born-duplicated",
                "prompt_file": "prompts/sent/prisma-v5.txt",
                "original_run_id": null,
                "original_agrees": null
              },
              {
                "measurements": 2,
                "distinct_answers": 2,
                "agree": false,
                "last_describable_on": [
                  "2025-08-27",
                  "2025-11-19"
                ],
                "spread_days": 84,
                "spread_releases": 5,
                "run_ids": [
                  "prisma--claude-opus-5--v3-c--2026-09-05",
                  "prisma--claude-opus-5--v3-d--2026-09-05"
                ],
                "pair_shape": "born-duplicated",
                "prompt_file": "prompts/sent/prisma-v3-cs.txt",
                "original_run_id": null,
                "original_agrees": null
              },
              {
                "measurements": 2,
                "distinct_answers": 2,
                "agree": false,
                "last_describable_on": [
                  "2025-05-15",
                  "2025-06-17"
                ],
                "spread_days": 33,
                "spread_releases": 2,
                "run_ids": [
                  "prisma--claude-opus-5--v3-a--2026-09-05",
                  "prisma--claude-opus-5--v3-b--2026-09-05"
                ],
                "pair_shape": "born-duplicated",
                "prompt_file": "prompts/sent/prisma-v3-sc.txt",
                "original_run_id": null,
                "original_agrees": null
              }
            ]
          },
          {
            "library": "tailwindcss",
            "measurements": 4,
            "distinct_answers": 1,
            "agree": true,
            "last_describable_on": [
              "2025-04-01"
            ],
            "spread_days": 0,
            "spread_releases": 0,
            "cadence_minors_12mo_to_cutoff": 1,
            "run_ids": [
              "tailwindcss--claude-opus-5--v1--2026-08-31",
              "tailwindcss--claude-opus-5--v2-a--2026-09-03",
              "tailwindcss--claude-opus-5--v2-b--2026-09-03",
              "tailwindcss--claude-opus-5--v3-c--2026-09-06"
            ],
            "identical_prompt": {
              "measurements": 2,
              "distinct_answers": 1,
              "agree": true,
              "last_describable_on": [
                "2025-04-01"
              ],
              "spread_days": 0,
              "spread_releases": 0,
              "run_ids": [
                "tailwindcss--claude-opus-5--v2-a--2026-09-03",
                "tailwindcss--claude-opus-5--v2-b--2026-09-03"
              ],
              "pair_shape": "born-duplicated",
              "prompt_file": "prompts/sent/tailwindcss-v2.txt",
              "original_run_id": null,
              "original_agrees": null
            },
            "identical_prompt_pairs": [
              {
                "measurements": 2,
                "distinct_answers": 1,
                "agree": true,
                "last_describable_on": [
                  "2025-04-01"
                ],
                "spread_days": 0,
                "spread_releases": 0,
                "run_ids": [
                  "tailwindcss--claude-opus-5--v2-a--2026-09-03",
                  "tailwindcss--claude-opus-5--v2-b--2026-09-03"
                ],
                "pair_shape": "born-duplicated",
                "prompt_file": "prompts/sent/tailwindcss-v2.txt",
                "original_run_id": null,
                "original_agrees": null
              }
            ]
          },
          {
            "library": "valibot",
            "measurements": 8,
            "distinct_answers": 2,
            "agree": false,
            "last_describable_on": [
              "2025-03-19",
              "2025-05-06"
            ],
            "spread_days": 48,
            "spread_releases": 1,
            "cadence_minors_12mo_to_cutoff": 3,
            "run_ids": [
              "valibot--claude-opus-5--v1--2026-09-01",
              "valibot--claude-opus-5--v1r-a--2026-09-01",
              "valibot--claude-opus-5--v1r-b--2026-09-01",
              "valibot--claude-opus-5--v2-a--2026-09-02",
              "valibot--claude-opus-5--v2-b--2026-09-02",
              "valibot--claude-opus-5--v3-c--2026-09-05",
              "valibot--claude-opus-5--v3-d--2026-09-05",
              "valibot--claude-opus-5--v4-c--2026-09-06"
            ],
            "identical_prompt": {
              "measurements": 2,
              "distinct_answers": 2,
              "agree": false,
              "last_describable_on": [
                "2025-03-19",
                "2025-05-06"
              ],
              "spread_days": 48,
              "spread_releases": 1,
              "run_ids": [
                "valibot--claude-opus-5--v2-a--2026-09-02",
                "valibot--claude-opus-5--v2-b--2026-09-02"
              ],
              "pair_shape": "born-duplicated",
              "prompt_file": "prompts/sent/valibot-v2.txt",
              "original_run_id": null,
              "original_agrees": null
            },
            "identical_prompt_pairs": [
              {
                "measurements": 2,
                "distinct_answers": 2,
                "agree": false,
                "last_describable_on": [
                  "2025-03-19",
                  "2025-05-06"
                ],
                "spread_days": 48,
                "spread_releases": 1,
                "run_ids": [
                  "valibot--claude-opus-5--v2-a--2026-09-02",
                  "valibot--claude-opus-5--v2-b--2026-09-02"
                ],
                "pair_shape": "born-duplicated",
                "prompt_file": "prompts/sent/valibot-v2.txt",
                "original_run_id": null,
                "original_agrees": null
              },
              {
                "measurements": 2,
                "distinct_answers": 1,
                "agree": true,
                "last_describable_on": [
                  "2025-03-19"
                ],
                "spread_days": 0,
                "spread_releases": 0,
                "run_ids": [
                  "valibot--claude-opus-5--v1r-a--2026-09-01",
                  "valibot--claude-opus-5--v1r-b--2026-09-01"
                ],
                "pair_shape": "retrospective",
                "prompt_file": "prompts/sent/valibot-v1.txt",
                "original_run_id": "valibot--claude-opus-5--v1--2026-09-01",
                "original_agrees": false
              },
              {
                "measurements": 2,
                "distinct_answers": 1,
                "agree": true,
                "last_describable_on": [
                  "2025-05-06"
                ],
                "spread_days": 0,
                "spread_releases": 0,
                "run_ids": [
                  "valibot--claude-opus-5--v3-c--2026-09-05",
                  "valibot--claude-opus-5--v3-d--2026-09-05"
                ],
                "pair_shape": "born-duplicated",
                "prompt_file": "prompts/sent/valibot-v3.txt",
                "original_run_id": null,
                "original_agrees": null
              }
            ]
          },
          {
            "library": "zod",
            "measurements": 5,
            "distinct_answers": 1,
            "agree": true,
            "last_describable_on": [
              "2025-08-23"
            ],
            "spread_days": 0,
            "spread_releases": 0,
            "cadence_minors_12mo_to_cutoff": 6,
            "run_ids": [
              "zod--claude-opus-5--v2--2026-08-29",
              "zod--claude-opus-5--v2r-a--2026-09-01",
              "zod--claude-opus-5--v2r-b--2026-09-01",
              "zod--claude-opus-5--v3-a--2026-09-02",
              "zod--claude-opus-5--v3-b--2026-09-02"
            ],
            "identical_prompt": {
              "measurements": 2,
              "distinct_answers": 1,
              "agree": true,
              "last_describable_on": [
                "2025-08-23"
              ],
              "spread_days": 0,
              "spread_releases": 0,
              "run_ids": [
                "zod--claude-opus-5--v2r-a--2026-09-01",
                "zod--claude-opus-5--v2r-b--2026-09-01"
              ],
              "pair_shape": "retrospective",
              "prompt_file": "prompts/sent/zod-v2.txt",
              "original_run_id": "zod--claude-opus-5--v2--2026-08-29",
              "original_agrees": true
            },
            "identical_prompt_pairs": [
              {
                "measurements": 2,
                "distinct_answers": 1,
                "agree": true,
                "last_describable_on": [
                  "2025-08-23"
                ],
                "spread_days": 0,
                "spread_releases": 0,
                "run_ids": [
                  "zod--claude-opus-5--v2r-a--2026-09-01",
                  "zod--claude-opus-5--v2r-b--2026-09-01"
                ],
                "pair_shape": "retrospective",
                "prompt_file": "prompts/sent/zod-v2.txt",
                "original_run_id": "zod--claude-opus-5--v2--2026-08-29",
                "original_agrees": true
              },
              {
                "measurements": 2,
                "distinct_answers": 1,
                "agree": true,
                "last_describable_on": [
                  "2025-08-23"
                ],
                "spread_days": 0,
                "spread_releases": 0,
                "run_ids": [
                  "zod--claude-opus-5--v3-a--2026-09-02",
                  "zod--claude-opus-5--v3-b--2026-09-02"
                ],
                "pair_shape": "born-duplicated",
                "prompt_file": "prompts/sent/zod-v3.txt",
                "original_run_id": null,
                "original_agrees": null
              }
            ]
          }
        ],
        "libraries_measured_once": 0,
        "libraries_replicated": 7,
        "libraries_where_replicates_disagree": 3,
        "libraries_with_identical_prompt_pairs": 6,
        "libraries_where_identical_prompts_disagree": 2,
        "max_spread_days": 204,
        "max_spread_releases": 13,
        "max_spread_library": "prisma",
        "max_identical_prompt_spread_days": 204,
        "max_identical_prompt_spread_releases": 13,
        "max_identical_prompt_spread_library": "prisma",
        "verdict": "replicates-disagree",
        "note": "Every boundary here is a self-report elicited by a battery. Where measurements is 1 the spread of that instrument is unknown for this model x library pair, so the date is a single draw and not a measured constant. See JOURNAL/023. Two readings are published per library: `spread_days` over every measurement, and `identical_prompt.spread_days` over only the concurrent blind draws that were sent the same stored prompt file. Where they differ, the wider one includes a run whose exact sent text was never stored, so part of that spread may be prompt reconstruction rather than the instrument. See JOURNAL/024. Every spread is also given in releases, counted from data/<library>/releases.json: a day-spread says how far the calendar moved between two answers, a release-spread says how many candidate answers the instrument slid across, and the two disagree about which measurement is worst. See JOURNAL/026."
      },
      "conflict_decomposition": {
        "within_library_conflicts": [
          {
            "library": "better-auth",
            "draws": 13,
            "latest_last_describable_on": "2025-07-19",
            "earliest_first_undescribable_on": "2025-07-19",
            "run_ids": [
              "better-auth--claude-opus-5--v1--2026-09-01",
              "better-auth--claude-opus-5--v1r-a--2026-09-01",
              "better-auth--claude-opus-5--v1r-b--2026-09-01",
              "better-auth--claude-opus-5--v2-a--2026-09-02",
              "better-auth--claude-opus-5--v2-b--2026-09-02",
              "better-auth--claude-opus-5--v3-a--2026-09-03",
              "better-auth--claude-opus-5--v3-b--2026-09-03",
              "better-auth--claude-opus-5--v4-c--2026-09-03",
              "better-auth--claude-opus-5--v4-d--2026-09-03",
              "better-auth--claude-opus-5--v5-a--2026-09-03",
              "better-auth--claude-opus-5--v5-b--2026-09-03",
              "better-auth--claude-opus-5--v7-a--2026-09-06",
              "better-auth--claude-opus-5--v7-b--2026-09-06"
            ]
          },
          {
            "library": "prisma",
            "draws": 12,
            "latest_last_describable_on": "2025-11-19",
            "earliest_first_undescribable_on": "2025-05-15",
            "run_ids": [
              "prisma--claude-opus-5--v1--2026-08-31",
              "prisma--claude-opus-5--v1r-a--2026-09-01",
              "prisma--claude-opus-5--v1r-b--2026-09-01",
              "prisma--claude-opus-5--v2-a--2026-09-05",
              "prisma--claude-opus-5--v2-b--2026-09-05",
              "prisma--claude-opus-5--v3-a--2026-09-05",
              "prisma--claude-opus-5--v3-b--2026-09-05",
              "prisma--claude-opus-5--v3-c--2026-09-05",
              "prisma--claude-opus-5--v3-d--2026-09-05",
              "prisma--claude-opus-5--v3-e--2026-09-05",
              "prisma--claude-opus-5--v5-c--2026-09-06",
              "prisma--claude-opus-5--v5-d--2026-09-06"
            ]
          },
          {
            "library": "valibot",
            "draws": 8,
            "latest_last_describable_on": "2025-05-06",
            "earliest_first_undescribable_on": "2025-05-06",
            "run_ids": [
              "valibot--claude-opus-5--v1--2026-09-01",
              "valibot--claude-opus-5--v1r-a--2026-09-01",
              "valibot--claude-opus-5--v1r-b--2026-09-01",
              "valibot--claude-opus-5--v2-a--2026-09-02",
              "valibot--claude-opus-5--v2-b--2026-09-02",
              "valibot--claude-opus-5--v3-c--2026-09-05",
              "valibot--claude-opus-5--v3-d--2026-09-05",
              "valibot--claude-opus-5--v4-c--2026-09-06"
            ]
          }
        ],
        "cross_library_feasible_windows": [
          {
            "from": "2025-11-19",
            "to": "2025-11-22",
            "days": 3
          }
        ],
        "emptiness_source": "within-library-only"
      },
      "intersection": null,
      "conflict": {
        "later_bound_library": "prisma",
        "later_bound_version": "7.0.0",
        "later_bound_on": "2025-11-19",
        "earlier_bound_library": "valibot",
        "earlier_bound_version": "1.1.0",
        "earlier_bound_on": "2025-05-06",
        "gap_days": 197
      }
    },
    {
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "model_ids": [
        {
          "value": "claude-sonnet-5",
          "runs": 35,
          "run_ids": [
            "better-auth--claude-sonnet-5--v1--2026-09-01",
            "better-auth--claude-sonnet-5--v2--2026-09-02",
            "better-auth--claude-sonnet-5--v3-c--2026-09-03",
            "better-auth--claude-sonnet-5--v4-a--2026-09-03",
            "better-auth--claude-sonnet-5--v4-b--2026-09-03",
            "better-auth--claude-sonnet-5--v5-c--2026-09-03",
            "better-auth--claude-sonnet-5--v7-e--2026-09-06",
            "langchain--claude-sonnet-5--v1--2026-08-31",
            "langchain--claude-sonnet-5--v1r-a--2026-09-01",
            "langchain--claude-sonnet-5--v1r-b--2026-09-01",
            "langchain--claude-sonnet-5--v2--2026-09-01",
            "langchain--claude-sonnet-5--v3--2026-09-01",
            "langchain--claude-sonnet-5--v5-d--2026-09-06",
            "langchain--claude-sonnet-5--v6-c--2026-09-06",
            "langchain--claude-sonnet-5--v6-d--2026-09-06",
            "next.js--claude-sonnet-5--v1--2026-08-31",
            "next.js--claude-sonnet-5--v2-c--2026-09-02",
            "next.js--claude-sonnet-5--v3-a--2026-09-02",
            "next.js--claude-sonnet-5--v3-b--2026-09-02",
            "prisma--claude-sonnet-5--v1--2026-08-31",
            "prisma--claude-sonnet-5--v2-c--2026-09-05",
            "prisma--claude-sonnet-5--v4-e--2026-09-06",
            "prisma--claude-sonnet-5--v5-a--2026-09-06",
            "prisma--claude-sonnet-5--v5-b--2026-09-06",
            "tailwindcss--claude-sonnet-5--v1--2026-08-31",
            "tailwindcss--claude-sonnet-5--v2-c--2026-09-03",
            "tailwindcss--claude-sonnet-5--v3-d--2026-09-06",
            "valibot--claude-sonnet-5--v1--2026-09-01",
            "valibot--claude-sonnet-5--v2-c--2026-09-02",
            "valibot--claude-sonnet-5--v2-d--2026-09-02",
            "valibot--claude-sonnet-5--v3-e--2026-09-05",
            "zod--claude-sonnet-5--v2--2026-08-29",
            "zod--claude-sonnet-5--v3-c--2026-09-02",
            "zod--claude-sonnet-5--v4-a--2026-09-02",
            "zod--claude-sonnet-5--v4-b--2026-09-02"
          ]
        }
      ],
      "stated_cutoff": "2026-01",
      "stated_cutoffs": [
        {
          "value": "2026-01",
          "runs": 30,
          "run_ids": [
            "better-auth--claude-sonnet-5--v1--2026-09-01",
            "better-auth--claude-sonnet-5--v2--2026-09-02",
            "better-auth--claude-sonnet-5--v3-c--2026-09-03",
            "better-auth--claude-sonnet-5--v4-b--2026-09-03",
            "better-auth--claude-sonnet-5--v5-c--2026-09-03",
            "better-auth--claude-sonnet-5--v7-e--2026-09-06",
            "langchain--claude-sonnet-5--v1--2026-08-31",
            "langchain--claude-sonnet-5--v1r-a--2026-09-01",
            "langchain--claude-sonnet-5--v1r-b--2026-09-01",
            "langchain--claude-sonnet-5--v3--2026-09-01",
            "langchain--claude-sonnet-5--v5-d--2026-09-06",
            "langchain--claude-sonnet-5--v6-c--2026-09-06",
            "langchain--claude-sonnet-5--v6-d--2026-09-06",
            "next.js--claude-sonnet-5--v1--2026-08-31",
            "next.js--claude-sonnet-5--v2-c--2026-09-02",
            "next.js--claude-sonnet-5--v3-a--2026-09-02",
            "prisma--claude-sonnet-5--v1--2026-08-31",
            "prisma--claude-sonnet-5--v2-c--2026-09-05",
            "prisma--claude-sonnet-5--v4-e--2026-09-06",
            "prisma--claude-sonnet-5--v5-a--2026-09-06",
            "prisma--claude-sonnet-5--v5-b--2026-09-06",
            "tailwindcss--claude-sonnet-5--v1--2026-08-31",
            "tailwindcss--claude-sonnet-5--v2-c--2026-09-03",
            "tailwindcss--claude-sonnet-5--v3-d--2026-09-06",
            "valibot--claude-sonnet-5--v1--2026-09-01",
            "valibot--claude-sonnet-5--v2-c--2026-09-02",
            "valibot--claude-sonnet-5--v2-d--2026-09-02",
            "valibot--claude-sonnet-5--v3-e--2026-09-05",
            "zod--claude-sonnet-5--v2--2026-08-29",
            "zod--claude-sonnet-5--v4-b--2026-09-02"
          ]
        },
        {
          "value": null,
          "runs": 4,
          "run_ids": [
            "better-auth--claude-sonnet-5--v4-a--2026-09-03",
            "langchain--claude-sonnet-5--v2--2026-09-01",
            "zod--claude-sonnet-5--v3-c--2026-09-02",
            "zod--claude-sonnet-5--v4-a--2026-09-02"
          ]
        },
        {
          "value": "2025-06",
          "runs": 1,
          "run_ids": [
            "next.js--claude-sonnet-5--v3-b--2026-09-02"
          ]
        }
      ],
      "intervals": [
        {
          "library": "better-auth",
          "run_id": "better-auth--claude-sonnet-5--v2--2026-09-02",
          "last_describable_version": "1.0.0",
          "last_describable_on": "2024-11-23",
          "first_undescribable_version": "1.1.0",
          "first_undescribable_on": "2024-12-20",
          "replicate_of": null,
          "battery": "better-auth/v2",
          "prompt_file": "prompts/sent/better-auth-v2.txt"
        },
        {
          "library": "better-auth",
          "run_id": "better-auth--claude-sonnet-5--v3-c--2026-09-03",
          "last_describable_version": "1.2.0",
          "last_describable_on": "2025-03-01",
          "first_undescribable_version": "1.3.0",
          "first_undescribable_on": "2025-07-19",
          "replicate_of": null,
          "battery": "better-auth/v3-c",
          "prompt_file": "prompts/sent/better-auth-v3.txt"
        },
        {
          "library": "better-auth",
          "run_id": "better-auth--claude-sonnet-5--v4-a--2026-09-03",
          "last_describable_version": "1.1.0",
          "last_describable_on": "2024-12-20",
          "first_undescribable_version": "1.2.0",
          "first_undescribable_on": "2025-03-01",
          "replicate_of": null,
          "battery": "better-auth/v4-a",
          "prompt_file": "prompts/sent/better-auth-v4.txt"
        },
        {
          "library": "better-auth",
          "run_id": "better-auth--claude-sonnet-5--v4-b--2026-09-03",
          "last_describable_version": "1.0.0",
          "last_describable_on": "2024-11-23",
          "first_undescribable_version": "1.1.0",
          "first_undescribable_on": "2024-12-20",
          "replicate_of": "better-auth--claude-sonnet-5--v4-a--2026-09-03",
          "battery": "better-auth/v4-b",
          "prompt_file": "prompts/sent/better-auth-v4.txt"
        },
        {
          "library": "better-auth",
          "run_id": "better-auth--claude-sonnet-5--v5-c--2026-09-03",
          "last_describable_version": "1.1.0",
          "last_describable_on": "2024-12-01",
          "first_undescribable_version": "1.2.0",
          "first_undescribable_on": "2025-03-01",
          "replicate_of": null,
          "battery": "better-auth/v5-c",
          "prompt_file": "prompts/sent/better-auth-v5.txt"
        },
        {
          "library": "better-auth",
          "run_id": "better-auth--claude-sonnet-5--v7-e--2026-09-06",
          "last_describable_version": "1.0.0",
          "last_describable_on": "2024-11-23",
          "first_undescribable_version": "1.1.0",
          "first_undescribable_on": "2024-12-20",
          "replicate_of": null,
          "battery": "better-auth/v7-e",
          "prompt_file": "prompts/sent/better-auth-v7.txt"
        },
        {
          "library": "better-auth",
          "run_id": "better-auth--claude-sonnet-5--v1--2026-09-01",
          "last_describable_version": "1.0.0",
          "last_describable_on": "2024-11-23",
          "first_undescribable_version": "1.1.0",
          "first_undescribable_on": "2024-12-20",
          "replicate_of": null,
          "battery": "better-auth/v1",
          "prompt_file": null
        },
        {
          "library": "langchain",
          "run_id": "langchain--claude-sonnet-5--v1r-a--2026-09-01",
          "last_describable_version": "1.0.0",
          "last_describable_on": "2025-10-17",
          "first_undescribable_version": "1.1.0",
          "first_undescribable_on": "2025-11-24",
          "replicate_of": "langchain--claude-sonnet-5--v1--2026-08-31",
          "battery": "langchain/v1r-a",
          "prompt_file": null
        },
        {
          "library": "langchain",
          "run_id": "langchain--claude-sonnet-5--v1r-b--2026-09-01",
          "last_describable_version": "0.3.0",
          "last_describable_on": "2024-09-13",
          "first_undescribable_version": "1.0.0",
          "first_undescribable_on": "2025-10-17",
          "replicate_of": "langchain--claude-sonnet-5--v1--2026-08-31",
          "battery": "langchain/v1r-b",
          "prompt_file": null
        },
        {
          "library": "langchain",
          "run_id": "langchain--claude-sonnet-5--v5-d--2026-09-06",
          "last_describable_version": "1.0.0",
          "last_describable_on": "2025-10-17",
          "first_undescribable_version": "1.1.0",
          "first_undescribable_on": "2025-11-24",
          "replicate_of": null,
          "battery": "langchain/v5-d",
          "prompt_file": "prompts/sent/langchain-v5.txt"
        },
        {
          "library": "langchain",
          "run_id": "langchain--claude-sonnet-5--v6-c--2026-09-06",
          "last_describable_version": "0.3.0",
          "last_describable_on": "2024-09-13",
          "first_undescribable_version": "1.0.0",
          "first_undescribable_on": "2025-10-17",
          "replicate_of": null,
          "battery": "langchain/v6-c",
          "prompt_file": "prompts/sent/langchain-v6.txt"
        },
        {
          "library": "langchain",
          "run_id": "langchain--claude-sonnet-5--v6-d--2026-09-06",
          "last_describable_version": "0.3.0",
          "last_describable_on": "2024-09-13",
          "first_undescribable_version": "1.0.0",
          "first_undescribable_on": "2025-10-17",
          "replicate_of": null,
          "battery": "langchain/v6-d",
          "prompt_file": "prompts/sent/langchain-v6.txt"
        },
        {
          "library": "langchain",
          "run_id": "langchain--claude-sonnet-5--v1--2026-08-31",
          "last_describable_version": "0.3.0",
          "last_describable_on": "2024-09-13",
          "first_undescribable_version": "1.0.0",
          "first_undescribable_on": "2025-10-17",
          "replicate_of": null,
          "battery": "langchain/v1",
          "prompt_file": null
        },
        {
          "library": "next.js",
          "run_id": "next.js--claude-sonnet-5--v2-c--2026-09-02",
          "last_describable_version": "15.0.0",
          "last_describable_on": "2024-10-21",
          "first_undescribable_version": "15.1.0",
          "first_undescribable_on": "2024-12-10",
          "replicate_of": null,
          "battery": "next.js/v2-c",
          "prompt_file": "prompts/sent/nextjs-v2.txt"
        },
        {
          "library": "next.js",
          "run_id": "next.js--claude-sonnet-5--v3-a--2026-09-02",
          "last_describable_version": "15.3.0",
          "last_describable_on": "2025-04-09",
          "first_undescribable_version": "15.4.0",
          "first_undescribable_on": "2025-05-30",
          "replicate_of": null,
          "battery": "next.js/v3-a",
          "prompt_file": "prompts/sent/nextjs-v3.txt"
        },
        {
          "library": "next.js",
          "run_id": "next.js--claude-sonnet-5--v3-b--2026-09-02",
          "last_describable_version": "15.5.0",
          "last_describable_on": "2025-08-20",
          "first_undescribable_version": "16.0.0",
          "first_undescribable_on": "2025-10-22",
          "replicate_of": "next.js--claude-sonnet-5--v3-a--2026-09-02",
          "battery": "next.js/v3-b",
          "prompt_file": "prompts/sent/nextjs-v3.txt"
        },
        {
          "library": "next.js",
          "run_id": "next.js--claude-sonnet-5--v1--2026-08-31",
          "last_describable_version": "15.0.0",
          "last_describable_on": "2024-10-21",
          "first_undescribable_version": "15.1.0",
          "first_undescribable_on": "2024-12-10",
          "replicate_of": null,
          "battery": "next.js/v1",
          "prompt_file": null
        },
        {
          "library": "prisma",
          "run_id": "prisma--claude-sonnet-5--v2-c--2026-09-05",
          "last_describable_version": "6.0.0",
          "last_describable_on": "2024-11-28",
          "first_undescribable_version": "6.1.0",
          "first_undescribable_on": "2024-12-17",
          "replicate_of": null,
          "battery": "prisma/v2-c",
          "prompt_file": "prompts/sent/prisma-v2.txt"
        },
        {
          "library": "prisma",
          "run_id": "prisma--claude-sonnet-5--v5-a--2026-09-06",
          "last_describable_version": "6.0.0",
          "last_describable_on": "2024-11-28",
          "first_undescribable_version": "6.1.0",
          "first_undescribable_on": "2024-12-17",
          "replicate_of": null,
          "battery": "prisma/v5-a",
          "prompt_file": "prompts/sent/prisma-v5.txt"
        },
        {
          "library": "prisma",
          "run_id": "prisma--claude-sonnet-5--v5-b--2026-09-06",
          "last_describable_version": "6.0.0",
          "last_describable_on": "2024-11-28",
          "first_undescribable_version": "6.1.0",
          "first_undescribable_on": "2024-12-17",
          "replicate_of": "prisma--claude-sonnet-5--v5-a--2026-09-06",
          "battery": "prisma/v5-b",
          "prompt_file": "prompts/sent/prisma-v5.txt"
        },
        {
          "library": "prisma",
          "run_id": "prisma--claude-sonnet-5--v1--2026-08-31",
          "last_describable_version": "6.0.0",
          "last_describable_on": "2024-11-28",
          "first_undescribable_version": "6.1.0",
          "first_undescribable_on": "2024-12-17",
          "replicate_of": null,
          "battery": "prisma/v1",
          "prompt_file": null
        },
        {
          "library": "tailwindcss",
          "run_id": "tailwindcss--claude-sonnet-5--v2-c--2026-09-03",
          "last_describable_version": "4.1.0",
          "last_describable_on": "2025-04-01",
          "first_undescribable_version": "4.2.0",
          "first_undescribable_on": "2026-02-18",
          "replicate_of": null,
          "battery": "tailwindcss/v2-c",
          "prompt_file": "prompts/sent/tailwindcss-v2.txt"
        },
        {
          "library": "tailwindcss",
          "run_id": "tailwindcss--claude-sonnet-5--v3-d--2026-09-06",
          "last_describable_version": "4.1.0",
          "last_describable_on": "2025-04-01",
          "first_undescribable_version": "4.2.0",
          "first_undescribable_on": "2026-02-18",
          "replicate_of": null,
          "battery": "tailwindcss/v3-d",
          "prompt_file": "prompts/sent/tailwindcss-v3.txt"
        },
        {
          "library": "tailwindcss",
          "run_id": "tailwindcss--claude-sonnet-5--v1--2026-08-31",
          "last_describable_version": "4.1.0",
          "last_describable_on": "2025-04-01",
          "first_undescribable_version": "4.2.0",
          "first_undescribable_on": "2026-02-18",
          "replicate_of": null,
          "battery": "tailwindcss/v1",
          "prompt_file": null
        },
        {
          "library": "valibot",
          "run_id": "valibot--claude-sonnet-5--v2-c--2026-09-02",
          "last_describable_version": "1.0.0",
          "last_describable_on": "2025-03-19",
          "first_undescribable_version": "1.1.0",
          "first_undescribable_on": "2025-05-06",
          "replicate_of": null,
          "battery": "valibot/v2-c",
          "prompt_file": "prompts/sent/valibot-v2.txt"
        },
        {
          "library": "valibot",
          "run_id": "valibot--claude-sonnet-5--v2-d--2026-09-02",
          "last_describable_version": "1.0.0",
          "last_describable_on": "2025-03-19",
          "first_undescribable_version": "1.1.0",
          "first_undescribable_on": "2025-05-06",
          "replicate_of": "valibot--claude-sonnet-5--v2-c--2026-09-02",
          "battery": "valibot/v2-d",
          "prompt_file": "prompts/sent/valibot-v2.txt"
        },
        {
          "library": "valibot",
          "run_id": "valibot--claude-sonnet-5--v3-e--2026-09-05",
          "last_describable_version": "1.0.0",
          "last_describable_on": "2025-03-19",
          "first_undescribable_version": "1.1.0",
          "first_undescribable_on": "2025-05-06",
          "replicate_of": null,
          "battery": "valibot/v3-e",
          "prompt_file": "prompts/sent/valibot-v3.txt"
        },
        {
          "library": "valibot",
          "run_id": "valibot--claude-sonnet-5--v1--2026-09-01",
          "last_describable_version": "1.0.0",
          "last_describable_on": "2025-03-19",
          "first_undescribable_version": "1.1.0",
          "first_undescribable_on": "2025-05-06",
          "replicate_of": null,
          "battery": "valibot/v1",
          "prompt_file": null
        },
        {
          "library": "zod",
          "run_id": "zod--claude-sonnet-5--v2--2026-08-29",
          "last_describable_version": "4.0.0",
          "last_describable_on": "2025-07-10",
          "first_undescribable_version": "4.1.0",
          "first_undescribable_on": "2025-08-23",
          "replicate_of": null,
          "battery": "zod/v2",
          "prompt_file": null
        },
        {
          "library": "zod",
          "run_id": "zod--claude-sonnet-5--v3-c--2026-09-02",
          "last_describable_version": "4.0.0",
          "last_describable_on": "2025-07-10",
          "first_undescribable_version": "4.1.0",
          "first_undescribable_on": "2025-08-23",
          "replicate_of": null,
          "battery": "zod/v3-c",
          "prompt_file": "prompts/sent/zod-v3.txt"
        },
        {
          "library": "zod",
          "run_id": "zod--claude-sonnet-5--v4-a--2026-09-02",
          "last_describable_version": "4.0.0",
          "last_describable_on": "2025-07-10",
          "first_undescribable_version": "4.1.0",
          "first_undescribable_on": "2025-08-23",
          "replicate_of": null,
          "battery": "zod/v4-a",
          "prompt_file": "prompts/sent/zod-v4.txt"
        },
        {
          "library": "zod",
          "run_id": "zod--claude-sonnet-5--v4-b--2026-09-02",
          "last_describable_version": "4.0.0",
          "last_describable_on": "2025-07-10",
          "first_undescribable_version": "4.1.0",
          "first_undescribable_on": "2025-08-23",
          "replicate_of": "zod--claude-sonnet-5--v4-a--2026-09-02",
          "battery": "zod/v4-b",
          "prompt_file": "prompts/sent/zod-v4.txt"
        }
      ],
      "unbounded": [
        {
          "library": "langchain",
          "run_id": "langchain--claude-sonnet-5--v2--2026-09-01",
          "last_describable_version": null,
          "last_describable_on": null,
          "first_undescribable_version": null,
          "first_undescribable_on": null,
          "replicate_of": null,
          "battery": "langchain/v2",
          "prompt_file": null,
          "reason": "one end of the interval was not established in this run"
        },
        {
          "library": "langchain",
          "run_id": "langchain--claude-sonnet-5--v3--2026-09-01",
          "last_describable_version": null,
          "last_describable_on": null,
          "first_undescribable_version": null,
          "first_undescribable_on": null,
          "replicate_of": null,
          "battery": "langchain/v3",
          "prompt_file": null,
          "reason": "one end of the interval was not established in this run"
        },
        {
          "library": "prisma",
          "run_id": "prisma--claude-sonnet-5--v4-e--2026-09-06",
          "last_describable_version": null,
          "last_describable_on": null,
          "first_undescribable_version": "7.0.0",
          "first_undescribable_on": "2025-11-19",
          "replicate_of": null,
          "battery": "prisma/v4-e",
          "prompt_file": "prompts/sent/prisma-v4.txt",
          "reason": "one end of the interval was not established in this run"
        }
      ],
      "stated_cutoff_varies": true,
      "model_id_varies": false,
      "libraries_measured": 7,
      "verdict": "no-single-date",
      "replication": {
        "libraries": [
          {
            "library": "better-auth",
            "measurements": 7,
            "distinct_answers": 4,
            "agree": false,
            "last_describable_on": [
              "2024-11-23",
              "2024-12-01",
              "2024-12-20",
              "2025-03-01"
            ],
            "spread_days": 98,
            "spread_releases": 2,
            "cadence_minors_12mo_to_cutoff": 3,
            "run_ids": [
              "better-auth--claude-sonnet-5--v1--2026-09-01",
              "better-auth--claude-sonnet-5--v2--2026-09-02",
              "better-auth--claude-sonnet-5--v3-c--2026-09-03",
              "better-auth--claude-sonnet-5--v4-a--2026-09-03",
              "better-auth--claude-sonnet-5--v4-b--2026-09-03",
              "better-auth--claude-sonnet-5--v5-c--2026-09-03",
              "better-auth--claude-sonnet-5--v7-e--2026-09-06"
            ],
            "identical_prompt": {
              "measurements": 2,
              "distinct_answers": 2,
              "agree": false,
              "last_describable_on": [
                "2024-11-23",
                "2024-12-20"
              ],
              "spread_days": 27,
              "spread_releases": 1,
              "run_ids": [
                "better-auth--claude-sonnet-5--v4-a--2026-09-03",
                "better-auth--claude-sonnet-5--v4-b--2026-09-03"
              ],
              "pair_shape": "born-duplicated",
              "prompt_file": "prompts/sent/better-auth-v4.txt",
              "original_run_id": null,
              "original_agrees": null
            },
            "identical_prompt_pairs": [
              {
                "measurements": 2,
                "distinct_answers": 2,
                "agree": false,
                "last_describable_on": [
                  "2024-11-23",
                  "2024-12-20"
                ],
                "spread_days": 27,
                "spread_releases": 1,
                "run_ids": [
                  "better-auth--claude-sonnet-5--v4-a--2026-09-03",
                  "better-auth--claude-sonnet-5--v4-b--2026-09-03"
                ],
                "pair_shape": "born-duplicated",
                "prompt_file": "prompts/sent/better-auth-v4.txt",
                "original_run_id": null,
                "original_agrees": null
              }
            ]
          },
          {
            "library": "langchain",
            "measurements": 6,
            "distinct_answers": 2,
            "agree": false,
            "last_describable_on": [
              "2024-09-13",
              "2025-10-17"
            ],
            "spread_days": 399,
            "spread_releases": 1,
            "cadence_minors_12mo_to_cutoff": 3,
            "run_ids": [
              "langchain--claude-sonnet-5--v1--2026-08-31",
              "langchain--claude-sonnet-5--v1r-a--2026-09-01",
              "langchain--claude-sonnet-5--v1r-b--2026-09-01",
              "langchain--claude-sonnet-5--v5-d--2026-09-06",
              "langchain--claude-sonnet-5--v6-c--2026-09-06",
              "langchain--claude-sonnet-5--v6-d--2026-09-06"
            ],
            "identical_prompt": {
              "measurements": 2,
              "distinct_answers": 2,
              "agree": false,
              "last_describable_on": [
                "2024-09-13",
                "2025-10-17"
              ],
              "spread_days": 399,
              "spread_releases": 1,
              "run_ids": [
                "langchain--claude-sonnet-5--v1r-a--2026-09-01",
                "langchain--claude-sonnet-5--v1r-b--2026-09-01"
              ],
              "pair_shape": "retrospective",
              "prompt_file": null,
              "original_run_id": "langchain--claude-sonnet-5--v1--2026-08-31",
              "original_agrees": true
            },
            "identical_prompt_pairs": [
              {
                "measurements": 2,
                "distinct_answers": 2,
                "agree": false,
                "last_describable_on": [
                  "2024-09-13",
                  "2025-10-17"
                ],
                "spread_days": 399,
                "spread_releases": 1,
                "run_ids": [
                  "langchain--claude-sonnet-5--v1r-a--2026-09-01",
                  "langchain--claude-sonnet-5--v1r-b--2026-09-01"
                ],
                "pair_shape": "retrospective",
                "prompt_file": null,
                "original_run_id": "langchain--claude-sonnet-5--v1--2026-08-31",
                "original_agrees": true
              }
            ]
          },
          {
            "library": "next.js",
            "measurements": 4,
            "distinct_answers": 3,
            "agree": false,
            "last_describable_on": [
              "2024-10-21",
              "2025-04-09",
              "2025-08-20"
            ],
            "spread_days": 303,
            "spread_releases": 5,
            "cadence_minors_12mo_to_cutoff": 6,
            "run_ids": [
              "next.js--claude-sonnet-5--v1--2026-08-31",
              "next.js--claude-sonnet-5--v2-c--2026-09-02",
              "next.js--claude-sonnet-5--v3-a--2026-09-02",
              "next.js--claude-sonnet-5--v3-b--2026-09-02"
            ],
            "identical_prompt": {
              "measurements": 2,
              "distinct_answers": 2,
              "agree": false,
              "last_describable_on": [
                "2025-04-09",
                "2025-08-20"
              ],
              "spread_days": 133,
              "spread_releases": 2,
              "run_ids": [
                "next.js--claude-sonnet-5--v3-a--2026-09-02",
                "next.js--claude-sonnet-5--v3-b--2026-09-02"
              ],
              "pair_shape": "born-duplicated",
              "prompt_file": "prompts/sent/nextjs-v3.txt",
              "original_run_id": null,
              "original_agrees": null
            },
            "identical_prompt_pairs": [
              {
                "measurements": 2,
                "distinct_answers": 2,
                "agree": false,
                "last_describable_on": [
                  "2025-04-09",
                  "2025-08-20"
                ],
                "spread_days": 133,
                "spread_releases": 2,
                "run_ids": [
                  "next.js--claude-sonnet-5--v3-a--2026-09-02",
                  "next.js--claude-sonnet-5--v3-b--2026-09-02"
                ],
                "pair_shape": "born-duplicated",
                "prompt_file": "prompts/sent/nextjs-v3.txt",
                "original_run_id": null,
                "original_agrees": null
              }
            ]
          },
          {
            "library": "prisma",
            "measurements": 4,
            "distinct_answers": 1,
            "agree": true,
            "last_describable_on": [
              "2024-11-28"
            ],
            "spread_days": 0,
            "spread_releases": 0,
            "cadence_minors_12mo_to_cutoff": 21,
            "run_ids": [
              "prisma--claude-sonnet-5--v1--2026-08-31",
              "prisma--claude-sonnet-5--v2-c--2026-09-05",
              "prisma--claude-sonnet-5--v5-a--2026-09-06",
              "prisma--claude-sonnet-5--v5-b--2026-09-06"
            ],
            "identical_prompt": {
              "measurements": 2,
              "distinct_answers": 1,
              "agree": true,
              "last_describable_on": [
                "2024-11-28"
              ],
              "spread_days": 0,
              "spread_releases": 0,
              "run_ids": [
                "prisma--claude-sonnet-5--v5-a--2026-09-06",
                "prisma--claude-sonnet-5--v5-b--2026-09-06"
              ],
              "pair_shape": "born-duplicated",
              "prompt_file": "prompts/sent/prisma-v5.txt",
              "original_run_id": null,
              "original_agrees": null
            },
            "identical_prompt_pairs": [
              {
                "measurements": 2,
                "distinct_answers": 1,
                "agree": true,
                "last_describable_on": [
                  "2024-11-28"
                ],
                "spread_days": 0,
                "spread_releases": 0,
                "run_ids": [
                  "prisma--claude-sonnet-5--v5-a--2026-09-06",
                  "prisma--claude-sonnet-5--v5-b--2026-09-06"
                ],
                "pair_shape": "born-duplicated",
                "prompt_file": "prompts/sent/prisma-v5.txt",
                "original_run_id": null,
                "original_agrees": null
              }
            ]
          },
          {
            "library": "tailwindcss",
            "measurements": 3,
            "distinct_answers": 1,
            "agree": true,
            "last_describable_on": [
              "2025-04-01"
            ],
            "spread_days": 0,
            "spread_releases": 0,
            "cadence_minors_12mo_to_cutoff": 2,
            "run_ids": [
              "tailwindcss--claude-sonnet-5--v1--2026-08-31",
              "tailwindcss--claude-sonnet-5--v2-c--2026-09-03",
              "tailwindcss--claude-sonnet-5--v3-d--2026-09-06"
            ],
            "identical_prompt": null,
            "identical_prompt_pairs": []
          },
          {
            "library": "valibot",
            "measurements": 4,
            "distinct_answers": 1,
            "agree": true,
            "last_describable_on": [
              "2025-03-19"
            ],
            "spread_days": 0,
            "spread_releases": 0,
            "cadence_minors_12mo_to_cutoff": 3,
            "run_ids": [
              "valibot--claude-sonnet-5--v1--2026-09-01",
              "valibot--claude-sonnet-5--v2-c--2026-09-02",
              "valibot--claude-sonnet-5--v2-d--2026-09-02",
              "valibot--claude-sonnet-5--v3-e--2026-09-05"
            ],
            "identical_prompt": {
              "measurements": 2,
              "distinct_answers": 1,
              "agree": true,
              "last_describable_on": [
                "2025-03-19"
              ],
              "spread_days": 0,
              "spread_releases": 0,
              "run_ids": [
                "valibot--claude-sonnet-5--v2-c--2026-09-02",
                "valibot--claude-sonnet-5--v2-d--2026-09-02"
              ],
              "pair_shape": "born-duplicated",
              "prompt_file": "prompts/sent/valibot-v2.txt",
              "original_run_id": null,
              "original_agrees": null
            },
            "identical_prompt_pairs": [
              {
                "measurements": 2,
                "distinct_answers": 1,
                "agree": true,
                "last_describable_on": [
                  "2025-03-19"
                ],
                "spread_days": 0,
                "spread_releases": 0,
                "run_ids": [
                  "valibot--claude-sonnet-5--v2-c--2026-09-02",
                  "valibot--claude-sonnet-5--v2-d--2026-09-02"
                ],
                "pair_shape": "born-duplicated",
                "prompt_file": "prompts/sent/valibot-v2.txt",
                "original_run_id": null,
                "original_agrees": null
              }
            ]
          },
          {
            "library": "zod",
            "measurements": 4,
            "distinct_answers": 1,
            "agree": true,
            "last_describable_on": [
              "2025-07-10"
            ],
            "spread_days": 0,
            "spread_releases": 0,
            "cadence_minors_12mo_to_cutoff": 5,
            "run_ids": [
              "zod--claude-sonnet-5--v2--2026-08-29",
              "zod--claude-sonnet-5--v3-c--2026-09-02",
              "zod--claude-sonnet-5--v4-a--2026-09-02",
              "zod--claude-sonnet-5--v4-b--2026-09-02"
            ],
            "identical_prompt": {
              "measurements": 2,
              "distinct_answers": 1,
              "agree": true,
              "last_describable_on": [
                "2025-07-10"
              ],
              "spread_days": 0,
              "spread_releases": 0,
              "run_ids": [
                "zod--claude-sonnet-5--v4-a--2026-09-02",
                "zod--claude-sonnet-5--v4-b--2026-09-02"
              ],
              "pair_shape": "born-duplicated",
              "prompt_file": "prompts/sent/zod-v4.txt",
              "original_run_id": null,
              "original_agrees": null
            },
            "identical_prompt_pairs": [
              {
                "measurements": 2,
                "distinct_answers": 1,
                "agree": true,
                "last_describable_on": [
                  "2025-07-10"
                ],
                "spread_days": 0,
                "spread_releases": 0,
                "run_ids": [
                  "zod--claude-sonnet-5--v4-a--2026-09-02",
                  "zod--claude-sonnet-5--v4-b--2026-09-02"
                ],
                "pair_shape": "born-duplicated",
                "prompt_file": "prompts/sent/zod-v4.txt",
                "original_run_id": null,
                "original_agrees": null
              }
            ]
          }
        ],
        "libraries_measured_once": 0,
        "libraries_replicated": 7,
        "libraries_where_replicates_disagree": 3,
        "libraries_with_identical_prompt_pairs": 6,
        "libraries_where_identical_prompts_disagree": 3,
        "max_spread_days": 399,
        "max_spread_releases": 1,
        "max_spread_library": "langchain",
        "max_identical_prompt_spread_days": 399,
        "max_identical_prompt_spread_releases": 1,
        "max_identical_prompt_spread_library": "langchain",
        "verdict": "replicates-disagree",
        "note": "Every boundary here is a self-report elicited by a battery. Where measurements is 1 the spread of that instrument is unknown for this model x library pair, so the date is a single draw and not a measured constant. See JOURNAL/023. Two readings are published per library: `spread_days` over every measurement, and `identical_prompt.spread_days` over only the concurrent blind draws that were sent the same stored prompt file. Where they differ, the wider one includes a run whose exact sent text was never stored, so part of that spread may be prompt reconstruction rather than the instrument. See JOURNAL/024. Every spread is also given in releases, counted from data/<library>/releases.json: a day-spread says how far the calendar moved between two answers, a release-spread says how many candidate answers the instrument slid across, and the two disagree about which measurement is worst. See JOURNAL/026."
      },
      "conflict_decomposition": {
        "within_library_conflicts": [
          {
            "library": "better-auth",
            "draws": 7,
            "latest_last_describable_on": "2025-03-01",
            "earliest_first_undescribable_on": "2024-12-20",
            "run_ids": [
              "better-auth--claude-sonnet-5--v1--2026-09-01",
              "better-auth--claude-sonnet-5--v2--2026-09-02",
              "better-auth--claude-sonnet-5--v3-c--2026-09-03",
              "better-auth--claude-sonnet-5--v4-a--2026-09-03",
              "better-auth--claude-sonnet-5--v4-b--2026-09-03",
              "better-auth--claude-sonnet-5--v5-c--2026-09-03",
              "better-auth--claude-sonnet-5--v7-e--2026-09-06"
            ]
          },
          {
            "library": "langchain",
            "draws": 6,
            "latest_last_describable_on": "2025-10-17",
            "earliest_first_undescribable_on": "2025-10-17",
            "run_ids": [
              "langchain--claude-sonnet-5--v1--2026-08-31",
              "langchain--claude-sonnet-5--v1r-a--2026-09-01",
              "langchain--claude-sonnet-5--v1r-b--2026-09-01",
              "langchain--claude-sonnet-5--v5-d--2026-09-06",
              "langchain--claude-sonnet-5--v6-c--2026-09-06",
              "langchain--claude-sonnet-5--v6-d--2026-09-06"
            ]
          },
          {
            "library": "next.js",
            "draws": 4,
            "latest_last_describable_on": "2025-08-20",
            "earliest_first_undescribable_on": "2024-12-10",
            "run_ids": [
              "next.js--claude-sonnet-5--v1--2026-08-31",
              "next.js--claude-sonnet-5--v2-c--2026-09-02",
              "next.js--claude-sonnet-5--v3-a--2026-09-02",
              "next.js--claude-sonnet-5--v3-b--2026-09-02"
            ]
          }
        ],
        "cross_library_feasible_windows": [],
        "emptiness_source": "both"
      },
      "intersection": null,
      "conflict": {
        "later_bound_library": "langchain",
        "later_bound_version": "1.0.0",
        "later_bound_on": "2025-10-17",
        "earlier_bound_library": "next.js",
        "earlier_bound_version": "15.1.0",
        "earlier_bound_on": "2024-12-10",
        "gap_days": 311
      }
    }
  ],
  "library_facts": {
    "better-auth": {
      "file": "data/better-auth/facts.json",
      "verified_on": "2026-09-06",
      "facts": 13,
      "latest_version": "1.7.2"
    },
    "langchain": {
      "file": "data/langchain/facts.json",
      "verified_on": "2026-09-06",
      "facts": 38,
      "latest_version": "1.4.0"
    },
    "next.js": {
      "file": "data/next.js/facts.json",
      "verified_on": "2026-09-02",
      "facts": 28,
      "latest_version": "16.3.4"
    },
    "prisma": {
      "file": "data/prisma/facts.json",
      "verified_on": "2026-09-06",
      "facts": 36,
      "latest_version": "7.10.0"
    },
    "tailwindcss": {
      "file": "data/tailwindcss/facts.json",
      "verified_on": "2026-09-06",
      "facts": 34,
      "latest_version": "4.3.3"
    },
    "valibot": {
      "file": "data/valibot/facts.json",
      "verified_on": "2026-09-02",
      "facts": 12,
      "latest_version": "1.4.2"
    },
    "zod": {
      "file": "data/zod/facts.json",
      "verified_on": "2026-08-31",
      "facts": 31,
      "latest_version": "4.5.4"
    }
  },
  "library_releases": {
    "better-auth": {
      "package": "better-auth",
      "ecosystem": "npm",
      "source": "https://registry.npmjs.org/better-auth",
      "fetched_on": "2026-09-06",
      "covers_from": "2024-06-01",
      "latest_at_fetch": "1.7.3",
      "minor_and_major_releases": 16,
      "patch_releases_in_range": 201,
      "releases": [
        {
          "version": "0.1.0",
          "published_on": "2024-09-27",
          "kind": "minor"
        },
        {
          "version": "0.2.0",
          "published_on": "2024-09-29",
          "kind": "minor"
        },
        {
          "version": "0.3.0",
          "published_on": "2024-10-04",
          "kind": "minor"
        },
        {
          "version": "0.4.0",
          "published_on": "2024-10-12",
          "kind": "minor"
        },
        {
          "version": "0.5.0",
          "published_on": "2024-10-18",
          "kind": "minor"
        },
        {
          "version": "0.6.0",
          "published_on": "2024-10-26",
          "kind": "minor"
        },
        {
          "version": "0.7.0",
          "published_on": "2024-11-02",
          "kind": "minor"
        },
        {
          "version": "0.8.0",
          "published_on": "2024-11-08",
          "kind": "minor"
        },
        {
          "version": "1.0.0",
          "published_on": "2024-11-23",
          "kind": "major"
        },
        {
          "version": "1.1.0",
          "published_on": "2024-12-20",
          "kind": "minor"
        },
        {
          "version": "1.2.0",
          "published_on": "2025-03-01",
          "kind": "minor"
        },
        {
          "version": "1.3.0",
          "published_on": "2025-07-19",
          "kind": "minor"
        },
        {
          "version": "1.4.0",
          "published_on": "2025-11-22",
          "kind": "minor"
        },
        {
          "version": "1.5.0",
          "published_on": "2026-03-01",
          "kind": "minor"
        },
        {
          "version": "1.6.0",
          "published_on": "2026-04-06",
          "kind": "minor"
        },
        {
          "version": "1.7.0",
          "published_on": "2026-08-18",
          "kind": "minor"
        }
      ]
    },
    "langchain": {
      "package": "langchain",
      "ecosystem": "pypi",
      "source": "https://pypi.org/pypi/langchain/json",
      "fetched_on": "2026-09-06",
      "covers_from": "2024-06-01",
      "latest_at_fetch": "1.4.0",
      "minor_and_major_releases": 6,
      "patch_releases_in_range": 93,
      "releases": [
        {
          "version": "0.3.0",
          "published_on": "2024-09-13",
          "kind": "minor"
        },
        {
          "version": "1.0.0",
          "published_on": "2025-10-17",
          "kind": "major"
        },
        {
          "version": "1.1.0",
          "published_on": "2025-11-24",
          "kind": "minor"
        },
        {
          "version": "1.2.0",
          "published_on": "2025-12-15",
          "kind": "minor"
        },
        {
          "version": "1.3.0",
          "published_on": "2026-05-12",
          "kind": "minor"
        },
        {
          "version": "1.4.0",
          "published_on": "2026-09-03",
          "kind": "minor"
        }
      ]
    },
    "next.js": {
      "package": "next",
      "ecosystem": "npm",
      "source": "https://registry.npmjs.org/next",
      "fetched_on": "2026-09-01",
      "covers_from": "2024-06-01",
      "latest_at_fetch": "16.3.4",
      "minor_and_major_releases": 10,
      "patch_releases_in_range": 147,
      "releases": [
        {
          "version": "15.0.0",
          "published_on": "2024-10-21",
          "kind": "major"
        },
        {
          "version": "15.1.0",
          "published_on": "2024-12-10",
          "kind": "minor"
        },
        {
          "version": "15.2.0",
          "published_on": "2025-02-26",
          "kind": "minor"
        },
        {
          "version": "15.3.0",
          "published_on": "2025-04-09",
          "kind": "minor"
        },
        {
          "version": "15.4.0",
          "published_on": "2025-05-30",
          "kind": "minor"
        },
        {
          "version": "15.5.0",
          "published_on": "2025-08-20",
          "kind": "minor"
        },
        {
          "version": "16.0.0",
          "published_on": "2025-10-22",
          "kind": "major"
        },
        {
          "version": "16.1.0",
          "published_on": "2025-12-18",
          "kind": "minor"
        },
        {
          "version": "16.2.0",
          "published_on": "2026-03-18",
          "kind": "minor"
        },
        {
          "version": "16.3.0",
          "published_on": "2026-08-03",
          "kind": "minor"
        }
      ]
    },
    "prisma": {
      "package": "prisma",
      "ecosystem": "npm",
      "source": "https://registry.npmjs.org/prisma",
      "fetched_on": "2026-09-01",
      "covers_from": "2024-06-01",
      "latest_at_fetch": "8.0.0-rc.12",
      "minor_and_major_releases": 39,
      "patch_releases_in_range": 24,
      "releases": [
        {
          "version": "5.15.0",
          "published_on": "2024-06-04",
          "kind": "minor"
        },
        {
          "version": "5.16.0",
          "published_on": "2024-06-25",
          "kind": "minor"
        },
        {
          "version": "5.17.0",
          "published_on": "2024-07-16",
          "kind": "minor"
        },
        {
          "version": "5.18.0",
          "published_on": "2024-08-06",
          "kind": "minor"
        },
        {
          "version": "5.19.0",
          "published_on": "2024-08-27",
          "kind": "minor"
        },
        {
          "version": "5.20.0",
          "published_on": "2024-09-24",
          "kind": "minor"
        },
        {
          "version": "5.21.0",
          "published_on": "2024-10-15",
          "kind": "minor"
        },
        {
          "version": "5.22.0",
          "published_on": "2024-11-05",
          "kind": "minor"
        },
        {
          "version": "6.0.0",
          "published_on": "2024-11-28",
          "kind": "major"
        },
        {
          "version": "6.1.0",
          "published_on": "2024-12-17",
          "kind": "minor"
        },
        {
          "version": "6.2.0",
          "published_on": "2025-01-07",
          "kind": "minor"
        },
        {
          "version": "6.3.0",
          "published_on": "2025-01-28",
          "kind": "minor"
        },
        {
          "version": "6.4.0",
          "published_on": "2025-02-18",
          "kind": "minor"
        },
        {
          "version": "6.5.0",
          "published_on": "2025-03-11",
          "kind": "minor"
        },
        {
          "version": "6.6.0",
          "published_on": "2025-04-08",
          "kind": "minor"
        },
        {
          "version": "6.7.0",
          "published_on": "2025-04-29",
          "kind": "minor"
        },
        {
          "version": "6.8.0",
          "published_on": "2025-05-15",
          "kind": "minor"
        },
        {
          "version": "6.9.0",
          "published_on": "2025-06-03",
          "kind": "minor"
        },
        {
          "version": "6.10.0",
          "published_on": "2025-06-17",
          "kind": "minor"
        },
        {
          "version": "6.11.0",
          "published_on": "2025-07-01",
          "kind": "minor"
        },
        {
          "version": "6.12.0",
          "published_on": "2025-07-15",
          "kind": "minor"
        },
        {
          "version": "6.13.0",
          "published_on": "2025-07-29",
          "kind": "minor"
        },
        {
          "version": "6.14.0",
          "published_on": "2025-08-12",
          "kind": "minor"
        },
        {
          "version": "6.15.0",
          "published_on": "2025-08-27",
          "kind": "minor"
        },
        {
          "version": "6.16.0",
          "published_on": "2025-09-10",
          "kind": "minor"
        },
        {
          "version": "6.17.0",
          "published_on": "2025-10-07",
          "kind": "minor"
        },
        {
          "version": "6.18.0",
          "published_on": "2025-10-22",
          "kind": "minor"
        },
        {
          "version": "6.19.0",
          "published_on": "2025-11-05",
          "kind": "minor"
        },
        {
          "version": "7.0.0",
          "published_on": "2025-11-19",
          "kind": "major"
        },
        {
          "version": "7.1.0",
          "published_on": "2025-12-03",
          "kind": "minor"
        },
        {
          "version": "7.2.0",
          "published_on": "2025-12-17",
          "kind": "minor"
        },
        {
          "version": "7.3.0",
          "published_on": "2026-01-21",
          "kind": "minor"
        },
        {
          "version": "7.4.0",
          "published_on": "2026-02-11",
          "kind": "minor"
        },
        {
          "version": "7.5.0",
          "published_on": "2026-03-11",
          "kind": "minor"
        },
        {
          "version": "7.6.0",
          "published_on": "2026-03-27",
          "kind": "minor"
        },
        {
          "version": "7.7.0",
          "published_on": "2026-04-07",
          "kind": "minor"
        },
        {
          "version": "7.8.0",
          "published_on": "2026-04-22",
          "kind": "minor"
        },
        {
          "version": "7.9.0",
          "published_on": "2026-07-20",
          "kind": "minor"
        },
        {
          "version": "7.10.0",
          "published_on": "2026-08-25",
          "kind": "minor"
        }
      ]
    },
    "tailwindcss": {
      "package": "tailwindcss",
      "ecosystem": "npm",
      "source": "https://registry.npmjs.org/tailwindcss",
      "fetched_on": "2026-09-01",
      "covers_from": "2024-06-01",
      "latest_at_fetch": "4.3.3",
      "minor_and_major_releases": 4,
      "patch_releases_in_range": 58,
      "releases": [
        {
          "version": "4.0.0",
          "published_on": "2025-01-21",
          "kind": "major"
        },
        {
          "version": "4.1.0",
          "published_on": "2025-04-01",
          "kind": "minor"
        },
        {
          "version": "4.2.0",
          "published_on": "2026-02-18",
          "kind": "minor"
        },
        {
          "version": "4.3.0",
          "published_on": "2026-05-08",
          "kind": "minor"
        }
      ]
    },
    "valibot": {
      "package": "valibot",
      "ecosystem": "npm",
      "source": "https://registry.npmjs.org/valibot",
      "fetched_on": "2026-09-01",
      "covers_from": "2024-06-01",
      "latest_at_fetch": "1.4.2",
      "minor_and_major_releases": 17,
      "patch_releases_in_range": 8,
      "releases": [
        {
          "version": "0.31.0",
          "published_on": "2024-06-06",
          "kind": "minor"
        },
        {
          "version": "0.32.0",
          "published_on": "2024-06-14",
          "kind": "minor"
        },
        {
          "version": "0.33.0",
          "published_on": "2024-06-18",
          "kind": "minor"
        },
        {
          "version": "0.34.0",
          "published_on": "2024-06-24",
          "kind": "minor"
        },
        {
          "version": "0.35.0",
          "published_on": "2024-06-25",
          "kind": "minor"
        },
        {
          "version": "0.36.0",
          "published_on": "2024-07-05",
          "kind": "minor"
        },
        {
          "version": "0.37.0",
          "published_on": "2024-07-30",
          "kind": "minor"
        },
        {
          "version": "0.38.0",
          "published_on": "2024-08-20",
          "kind": "minor"
        },
        {
          "version": "0.39.0",
          "published_on": "2024-08-24",
          "kind": "minor"
        },
        {
          "version": "0.40.0",
          "published_on": "2024-08-29",
          "kind": "minor"
        },
        {
          "version": "0.41.0",
          "published_on": "2024-09-01",
          "kind": "minor"
        },
        {
          "version": "0.42.0",
          "published_on": "2024-09-15",
          "kind": "minor"
        },
        {
          "version": "1.0.0",
          "published_on": "2025-03-19",
          "kind": "major"
        },
        {
          "version": "1.1.0",
          "published_on": "2025-05-06",
          "kind": "minor"
        },
        {
          "version": "1.2.0",
          "published_on": "2025-11-24",
          "kind": "minor"
        },
        {
          "version": "1.3.0",
          "published_on": "2026-03-17",
          "kind": "minor"
        },
        {
          "version": "1.4.0",
          "published_on": "2026-05-05",
          "kind": "minor"
        }
      ]
    },
    "zod": {
      "package": "zod",
      "ecosystem": "npm",
      "source": "https://registry.npmjs.org/zod",
      "fetched_on": "2026-09-06",
      "covers_from": "2024-06-01",
      "latest_at_fetch": "4.5.4",
      "minor_and_major_releases": 8,
      "patch_releases_in_range": 122,
      "releases": [
        {
          "version": "3.24.0",
          "published_on": "2024-12-10",
          "kind": "minor"
        },
        {
          "version": "3.25.0",
          "published_on": "2025-05-19",
          "kind": "minor"
        },
        {
          "version": "4.0.0",
          "published_on": "2025-07-09",
          "kind": "major"
        },
        {
          "version": "4.1.0",
          "published_on": "2025-08-23",
          "kind": "minor"
        },
        {
          "version": "4.2.0",
          "published_on": "2025-12-15",
          "kind": "minor"
        },
        {
          "version": "4.3.0",
          "published_on": "2025-12-31",
          "kind": "minor"
        },
        {
          "version": "4.4.0",
          "published_on": "2026-04-29",
          "kind": "minor"
        },
        {
          "version": "4.5.0",
          "published_on": "2026-08-28",
          "kind": "minor"
        }
      ]
    }
  },
  "runs": [
    {
      "run_id": "better-auth--claude-fable-5-1--v6--2026-09-06",
      "file": "data/better-auth/fable-5-1-v6.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "better-auth",
      "library_latest_at_test": "1.7.3",
      "model": "Claude Fable 5.1",
      "model_id": "claude-fable-5-1",
      "stated_cutoff": "2026-06",
      "battery": "better-auth/v6",
      "prompt_file": "prompts/sent/better-auth-v6.txt",
      "test_date": "2026-09-06",
      "self_test": true,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "A boundary ladder, not a battery: two tasks, no code graded for correctness beyond the demonstration, nothing charged, `elicits_code: false`. It fills one of the five `?` cells BACKLOG 11k-b names. Claude Fable 5.1 describes better-auth through 1.3.0 (2025-07-19) and holds 1.4.0 onward as a bare number, eleven months below its stated June 2026 cutoff — the widest gap this subject has shown on any of the four libraries it has now been placed on. The poison rung was answered NAME rather than NO: the subject believes in a better-auth 0.9.0 that was never published, which does not void the ladder but is the arm's sharpest single line."
    },
    {
      "run_id": "better-auth--claude-fable-5-1--v7-c--2026-09-06",
      "file": "data/better-auth/fable-5-1-v7-c.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "better-auth",
      "library_latest_at_test": "1.7.3",
      "model": "Claude Fable 5.1",
      "model_id": "claude-fable-5-1",
      "stated_cutoff": "2026-06",
      "battery": "better-auth/v7-c",
      "prompt_file": "prompts/sent/better-auth-v7.txt",
      "test_date": "2026-09-06",
      "self_test": true,
      "status": "open",
      "findings": 3,
      "chargeable_findings": 3,
      "withdrawn_findings": 0,
      "summary": "The second test arm, and the one that charged the surface the battery was built for. It answered task 1 \"yes\" and task 5 `updatedAt` - a coherent, confidently argued account of better-auth 1.5.0 offered as the current behaviour - and denied both 1.6.0 options exist. Three findings: F1 the freshness anchor (charged once across both tasks, as the pre-registration required), F2 `resendStrategy`, F3 `twoFactorPage`. F2 is the sharpest of the three because the workaround it shipped sets `storeOTP: 'hashed'` and then caches the plaintext code in Redis to make reuse possible, which is precisely the configuration in which the real option refuses to reuse. Its stated cutoff is June 2026, two months after the release it missed."
    },
    {
      "run_id": "better-auth--claude-fable-5-1--v7-d--2026-09-06",
      "file": "data/better-auth/fable-5-1-v7-d.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "better-auth",
      "library_latest_at_test": "1.7.3",
      "model": "Claude Fable 5.1",
      "model_id": "claude-fable-5-1",
      "stated_cutoff": "2026-06",
      "battery": "better-auth/v7-d",
      "prompt_file": "prompts/sent/better-auth-v7.txt",
      "test_date": "2026-09-06",
      "self_test": true,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "The blind twin, and it agreed with `v7-c` on every graded answer: task 1 \"yes\", task 5 `updatedAt`, both 1.6.0 options denied, the control held, the floor passed. That agreement is what makes the Fable 5.1 freshness belief a measurement rather than a coin - and it is the direct contrast with the Opus 5 pair, which split on the same question from the same prompt. Two details are its own. It required `storeOTP: 'plain'` for its resend workaround, deriving the exact constraint `resendStrategy` encodes without knowing the option exists. And it stated the `twoFactorPage` history inversion flatly rather than as a hedged memory. It charges nothing, by the duplicated-arm rule."
    },
    {
      "run_id": "better-auth--claude-fable-5--v2-a--2026-09-02",
      "file": "data/better-auth/fable-5-v2-a.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "better-auth",
      "library_latest_at_test": "1.7.2",
      "model": "Claude Fable 5",
      "model_id": "claude-fable-5",
      "stated_cutoff": "2026-01",
      "battery": "better-auth/v2-a",
      "prompt_file": "prompts/sent/better-auth-v2.txt",
      "test_date": "2026-09-02",
      "self_test": false,
      "status": "open",
      "findings": 1,
      "chargeable_findings": 1,
      "withdrawn_findings": 0,
      "summary": "The cleanest instance of the effect this battery was built to look for. Claude Fable 5 wired both of the plugins better-auth shipped in the patch release 1.3.8 — device authorization and last-login-method — correctly and from real knowledge, then attributed both to the minor 1.3.0, alongside three features that genuinely are 1.3.0. It passed the battery's internal control by placing SAML SSO at 1.3.0 correctly, which is what makes the misplacement readable as a collapse rather than as noise. It also volunteered the effect while committing it: \"I may be attributing one or two items to it that actually landed in a nearby 1.3.x patch.\" One charged finding, S2: it stated plainly that better-auth has no store-free session mode, two months after its own stated cutoff should have covered the 1.4.0 release that added one."
    },
    {
      "run_id": "better-auth--claude-fable-5--v2-b--2026-09-02",
      "file": "data/better-auth/fable-5-v2-b.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": "better-auth--claude-fable-5--v2-a--2026-09-02",
      "library": "better-auth",
      "library_latest_at_test": "1.7.2",
      "model": "Claude Fable 5",
      "model_id": "claude-fable-5",
      "stated_cutoff": "2026-01",
      "battery": "better-auth/v2-b",
      "prompt_file": "prompts/sent/better-auth-v2.txt",
      "test_date": "2026-09-02",
      "self_test": false,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "The concurrent blind twin of `v2-a`, and the draw that states the effect most starkly. It placed its own knowledge boundary inside better-auth's 1.3 patch line — \"the 1.3.x patches beyond roughly 1.3.2-1.3.4\" are version numbers with no content attached — and then, in the next answer, attributed two plugins that shipped in 1.3.8 to 1.3.0, calling it \"a firm estimate\" and explicitly ruling out a patch. It agreed with its twin on every task and on all four attributions. It charges nothing, per the rule that the duplicated arm does not charge; its denial of database-less sessions is recorded as a chargeable miss carried by its twin."
    },
    {
      "run_id": "better-auth--claude-fable-5--v3-d--2026-09-03",
      "file": "data/better-auth/fable-5-v3-d.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "better-auth",
      "library_latest_at_test": "1.7.2",
      "model": "Claude Fable 5",
      "model_id": "claude-fable-5",
      "stated_cutoff": "2026-01",
      "battery": "better-auth/v3-d",
      "prompt_file": "prompts/sent/better-auth-v3.txt",
      "test_date": "2026-09-03",
      "self_test": false,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "The second below-floor control, and the draw that settled the battery's other half. It failed the `baseURL` probe like every other arm, which is what licenses reading the two Opus failures as beliefs rather than as noise. But on verification hashing it answered yes and named `storeOTP` and `storeToken` with their correct value sets - from eighteen months below the target release - which is what proved the Index's own newly written fact LF9 had claimed too much. It also gave the most accurate version attribution of the four draws, placing SAML SSO exactly at 1.3.0. A control arm that corrects the operator is a better outcome than one that merely confirms a floor."
    },
    {
      "run_id": "better-auth--claude-fable-5--v4-e--2026-09-03",
      "file": "data/better-auth/fable-5-v4-e.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "better-auth",
      "library_latest_at_test": "1.7.2",
      "model": "Claude Fable 5",
      "model_id": "claude-fable-5",
      "stated_cutoff": "2026-01",
      "battery": "better-auth/v4-e",
      "prompt_file": "prompts/sent/better-auth-v4.txt",
      "test_date": "2026-09-03",
      "self_test": false,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "Claude Fable 5's charging arm passed the target probe cleanly and denied the sibling correctly, which is the discrimination pattern that reads as recall rather than as running the naming scheme. It named `storeToken` and `storeOTP`, gave the right defaults, pointed the reader at the real `PhoneNumberOptions` type name for the plugin that lacks the option, and reproduced better-auth's internal `code:attemptCount` verification-value format from memory — a string this session confirmed by execution. Nothing is charged. Its one clean miss is attribution: it dated the options to about 1.2.7 while, in the same answer, correctly dating SAML SSO to 1.3.0 — the release the options actually shipped in."
    },
    {
      "run_id": "better-auth--claude-fable-5--v4-f--2026-09-03",
      "file": "data/better-auth/fable-5-v4-f.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": "better-auth--claude-fable-5--v4-e--2026-09-03",
      "library": "better-auth",
      "library_latest_at_test": "1.7.2",
      "model": "Claude Fable 5",
      "model_id": "claude-fable-5",
      "stated_cutoff": "2026-01",
      "battery": "better-auth/v4-f",
      "prompt_file": "prompts/sent/better-auth-v4.txt",
      "test_date": "2026-09-03",
      "self_test": false,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "The Fable twin matched its pair on everything that mattered and beat it on one detail. It named `storeToken` and `storeOTP`, correctly restricted the `\"encrypted\"` mode to email-OTP, gave the magic-link custom-hasher shape verbatim, and stated the determinism constraint that makes hashed lookup work — all confirmed by execution against an installed 1.3.0. It correctly denied the non-existent phone-number option and listed the plugin's real options instead. Nothing is charged. Like its twin it dated the options to the 1.2.x patch series while correctly dating SAML SSO, from the same release, to 1.3.0."
    },
    {
      "run_id": "better-auth--claude-fable-5--v5-d--2026-09-03",
      "file": "data/better-auth/fable-5-v5-d.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "better-auth",
      "library_latest_at_test": "1.7.2",
      "model": "Claude Fable 5",
      "model_id": "claude-fable-5",
      "stated_cutoff": "2026-01",
      "battery": "better-auth/v5-d",
      "prompt_file": "prompts/sent/better-auth-v5.txt",
      "test_date": "2026-09-03",
      "self_test": false,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "The control that held, and it held better than any draw in the battery. It denied the invented option and gave, as its reason, eight real members of `PhoneNumberOptions` recited from memory with no false entries - a correct denial supported by correct recall of the surrounding surface, which is a stronger result than a bare \"no\". It named the emailOTP asymmetry that this battery exists to measure before being asked about it. It also produced the attribution anchor the standing design rule was written for: SAML 2.0 and `oneTimeToken({ storeToken })` both shipped in 1.3.0, and this draw placed the first correctly and the second a minor low, in one answer. Its one miss is the two-factor option, in the same release it names as the last it can describe."
    },
    {
      "run_id": "better-auth--claude-fable-5--v1--2026-09-01",
      "file": "data/better-auth/fable-5.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "better-auth",
      "library_latest_at_test": "1.7.2",
      "model": "Claude Fable 5",
      "model_id": "claude-fable-5",
      "stated_cutoff": "2026-01",
      "battery": "better-auth/v1",
      "prompt_file": null,
      "test_date": "2026-09-01",
      "self_test": false,
      "status": "open",
      "findings": 1,
      "chargeable_findings": 1,
      "withdrawn_findings": 0,
      "summary": "Control arm of the milestone experiment, and the prediction held. Fable 5's describable boundary on better-auth is 1.3.0 (2025-07-19), an ordinary minor -- not the 1.0.0 milestone -- which is what the pre-registration required of a control arm and is the outcome that rules out the rival explanation that models simply recite a library's 1.0 when asked. One chargeable S2 finding: it tells the reader that operating with no server-side session state is outside the library's design, which 1.4.0 made false. Its answer on the same task was otherwise verified correct. Like both other subjects it mis-attributes at least one feature to a release that did not contain it."
    },
    {
      "run_id": "better-auth--claude-haiku-4-5--v4-g--2026-09-03",
      "file": "data/better-auth/haiku-4-5-v4-g.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "better-auth",
      "library_latest_at_test": "1.7.2",
      "model": "Claude Haiku 4.5",
      "model_id": "claude-haiku-4-5",
      "stated_cutoff": "2025-02",
      "battery": "better-auth/v4-g",
      "prompt_file": "prompts/sent/better-auth-v4.txt",
      "test_date": "2026-09-03",
      "self_test": false,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "The below-floor control did its one job. Five months under the 1.3.0 target, Claude Haiku 4.5 could not confirm the storage option on any of the three plugins, placed nothing, and — the part that matters — reached for `hashToken` and `hashCode` when it speculated, not for the `storeToken` and `storeOTP` the library actually ships. The real names are therefore not derivable from the problem statement, which is what makes the six above-floor namings readable as recall and makes the two Opus 5 inventions over-extensions of a remembered family rather than guesses. It failed the floor probe, so nothing else in this run is read."
    },
    {
      "run_id": "better-auth--claude-haiku-4-5--v5-e--2026-09-03",
      "file": "data/better-auth/haiku-4-5-v5-e.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "better-auth",
      "library_latest_at_test": "1.7.2",
      "model": "Claude Haiku 4.5",
      "model_id": "claude-haiku-4-5",
      "stated_cutoff": "2025-02",
      "battery": "better-auth/v5-e",
      "prompt_file": "prompts/sent/better-auth-v5.txt",
      "test_date": "2026-09-03",
      "self_test": false,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "A total abstention, and it is the honest kind. Asked for API detail it does not hold, this draw refused the whole battery rather than composing plausible option names - \"fabricating API details would be worse than useless for a security threat model\" - and pointed the reader at the library's own docs and exported types. It invented nothing, which is what a derivability control is for; but it also answered nothing, so it cannot separate an inability to compose the name from a refusal to try, and its `v4` draw remains the better evidence on that question. Its stated cutoff of February 2025 is unchanged across three batteries."
    },
    {
      "run_id": "better-auth--claude-haiku-4-5--v7-f--2026-09-06",
      "file": "data/better-auth/haiku-4-5-v7-f.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "better-auth",
      "library_latest_at_test": "1.7.3",
      "model": "Claude Haiku 4.5",
      "model_id": "claude-haiku-4-5",
      "stated_cutoff": "2025-02",
      "battery": "better-auth/v7-f",
      "prompt_file": "prompts/sent/better-auth-v7.txt",
      "test_date": "2026-09-06",
      "self_test": true,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "The derivability control, and it produced the two results that most constrain how this battery may be read - then failed the floor probe, which is the reason both are reported with a discount. It **failed task 4**, unable to describe `customSession`, an API two years below its own cutoff, so it is a weak control rather than a clean one. It **invented** the non-existent freshness-anchor option at task 3 (`freshAgeMethod`), falsifying P4 in the only arm that failed the floor. And it **derived** `twoFactorPath` at task 6 - one character from the real `twoFactorPage` - which is the outcome that discounts any pass on that surface without excusing the denials charged against it. On the other side, P3 held: `resendStrategy` appears nowhere in its answer, so that name is not composable from the question. Charges nothing, and never could."
    },
    {
      "run_id": "better-auth--claude-opus-5--v1r-a--2026-09-01",
      "file": "data/better-auth/opus-5-v1r-a.json",
      "markdown": "data/better-auth/opus-5-v1r-a.md",
      "supersedes": null,
      "replicate_of": "better-auth--claude-opus-5--v1--2026-09-01",
      "library": "better-auth",
      "library_latest_at_test": "1.7.2",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "stated_cutoff": "2026-05",
      "battery": "better-auth/v1r-a",
      "prompt_file": "prompts/sent/better-auth-v1.txt",
      "test_date": "2026-09-01",
      "self_test": true,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "Replicate A of `better-auth/v1` against Opus 5, prompt unchanged. It placed its describable boundary at better-auth 1.3.0 (2025-07-19) with 1.4.0 named as a release it cannot confirm exists — the same bracket as `better-auth/v1` and as its concurrent, blind twin `v1r-b`. Pre-registered outcome A, on the library predicted to produce B or C. Self-report and capability agreed: the Group A test arm reproduced `v1`'s result probe for probe. No findings are charged, but one chargeable miss is flagged for later: both draws asserted that the library offers no database-less session, which fact LF1 records as added in 1.4.0."
    },
    {
      "run_id": "better-auth--claude-opus-5--v1r-b--2026-09-01",
      "file": "data/better-auth/opus-5-v1r-b.json",
      "markdown": "data/better-auth/opus-5-v1r-b.md",
      "supersedes": null,
      "replicate_of": "better-auth--claude-opus-5--v1--2026-09-01",
      "library": "better-auth",
      "library_latest_at_test": "1.7.2",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "stated_cutoff": "2026-05",
      "battery": "better-auth/v1r-b",
      "prompt_file": "prompts/sent/better-auth-v1.txt",
      "test_date": "2026-09-01",
      "self_test": true,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "Replicate B of `better-auth/v1` against Opus 5, prompt unchanged. It placed its describable boundary at the better-auth 1.3.x line (2025-07-19 for 1.3.0), with 1.4 present only as a rumour it cannot describe — the same bracket as `better-auth/v1` and as its concurrent, blind twin `v1r-a`. Pre-registered outcome A, on the library predicted to produce B or C. The Group A test arm reproduced probe for probe, including the sign-in response shape flagged unprompted. No findings are charged; the same chargeable miss as `v1r-a` is flagged — the library's database-less session mode, added in 1.4.0, was denied by both draws."
    },
    {
      "run_id": "better-auth--claude-opus-5--v2-a--2026-09-02",
      "file": "data/better-auth/opus-5-v2-a.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "better-auth",
      "library_latest_at_test": "1.7.2",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "stated_cutoff": "2026-05",
      "battery": "better-auth/v2-a",
      "prompt_file": "prompts/sent/better-auth-v2.txt",
      "test_date": "2026-09-02",
      "self_test": true,
      "status": "open",
      "findings": 1,
      "chargeable_findings": 1,
      "withdrawn_findings": 0,
      "summary": "The battery's own question came back uninformative for this draw, and the duplication is why that is known. Claude Opus 5 knows both plugins that better-auth shipped in the patch release 1.3.8 — it wired `deviceAuthorization()` and `lastLoginMethod()` correctly, with client plugins and option names — and it placed them at \"1.3.0\" and \"1.3.0-1.3.5\". But it also declined to place SAML enterprise SSO, which genuinely did ship in 1.3.0 and which the pre-registration designated as the internal control, so by the rule fixed before the run its attribution is too noisy to read as a collapse. One charged finding, S2: asked how to keep session state out of the database, it stated that better-auth has no database-less mode and offered Redis and the jwt plugin — the capability arrived in 1.4.0, sixteen months before this subject's stated cutoff. Against prediction, it wrote the 1.4.2 sign-in response shape correctly while saying in prose that it was unsure of it."
    },
    {
      "run_id": "better-auth--claude-opus-5--v2-b--2026-09-02",
      "file": "data/better-auth/opus-5-v2-b.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": "better-auth--claude-opus-5--v2-a--2026-09-02",
      "library": "better-auth",
      "library_latest_at_test": "1.7.2",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "stated_cutoff": "2026-05",
      "battery": "better-auth/v2-b",
      "prompt_file": "prompts/sent/better-auth-v2.txt",
      "test_date": "2026-09-02",
      "self_test": true,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "The concurrent blind twin of `v2-a`, and the draw that made the pair readable. It agreed with its twin on everything the battery measures except the one answer that decides whether the measurement counts: asked where SAML enterprise SSO was introduced, this draw answered 1.3.0 and was right, where its twin said it could not place it. Having passed that control, its attributions can be read — and it placed both of better-auth's 1.3.8 patch-shipped plugins at 1.3.0, hedging downward toward 1.2.x rather than upward toward the truth. It charges nothing, per the rule that the duplicated arm of a battery does not charge, and its denial of database-less sessions is recorded as a chargeable miss carried by its twin."
    },
    {
      "run_id": "better-auth--claude-opus-5--v3-a--2026-09-03",
      "file": "data/better-auth/opus-5-v3-a.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "better-auth",
      "library_latest_at_test": "1.7.2",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "stated_cutoff": "2026-05",
      "battery": "better-auth/v3-a",
      "prompt_file": "prompts/sent/better-auth-v3.txt",
      "test_date": "2026-09-03",
      "self_test": true,
      "status": "open",
      "findings": 1,
      "chargeable_findings": 1,
      "withdrawn_findings": 0,
      "summary": "One charged finding, and the battery's other half came back the opposite way and corrected the Index instead. Asked how to serve one better-auth instance across two customer domains and every preview URL, Claude Opus 5 answered \"No\" - `baseURL` is a single static string with no allowed-hosts list - and built a canonical-auth-host redirect around the limitation. `baseURL` has accepted `{ allowedHosts, fallback, protocol }` since 1.5.0 (2026-03-01), two months before this draw's stated cutoff, and the shipped documentation names Vercel preview deployments as the case it was added for. Charged S2. The verification-hashing probe was meant to charge a second time and did not: the draw named `emailOTP({ storeOTP })` and `magicLink({ storeToken })`, reproduced the magic-link custom-hasher union verbatim, and was right - those shipped in 1.3.0, and the Index's own fact LF9 had claimed the capability was new in 1.5.0. LF9 was corrected the same session. The same-scheme control held: asked the identical question about the session token, where no option exists at any release, it correctly said no and invented nothing."
    },
    {
      "run_id": "better-auth--claude-opus-5--v3-b--2026-09-03",
      "file": "data/better-auth/opus-5-v3-b.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": "better-auth--claude-opus-5--v3-a--2026-09-03",
      "library": "better-auth",
      "library_latest_at_test": "1.7.2",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "stated_cutoff": "2026-05",
      "battery": "better-auth/v3-b",
      "prompt_file": "prompts/sent/better-auth-v3.txt",
      "test_date": "2026-09-03",
      "self_test": true,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "The non-charging twin, and the one that breaks a streak. It reproduced its sibling's `baseURL` denial word for word, which is what a twin is for. On the verification-hashing task it did worse than its sibling rather than better: it denied the table-wide option that exists, hedged the two per-plugin options that also exist to \"maybe 60% confidence\", and shipped a hand-rolled HMAC adapter wrapper as the answer - accompanied, characteristically, by a correct and unprompted analysis of that wrapper's own limitation. Both draws agreed on the boundary bracket and on the stated cutoff. The `-b`-twin-holds-the-better-answer pattern that HARNESS.md had tracked at four of five batteries is now four of six."
    },
    {
      "run_id": "better-auth--claude-opus-5--v4-c--2026-09-03",
      "file": "data/better-auth/opus-5-v4-c.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "better-auth",
      "library_latest_at_test": "1.7.2",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "stated_cutoff": "2026-05",
      "battery": "better-auth/v4-c",
      "prompt_file": "prompts/sent/better-auth-v4.txt",
      "test_date": "2026-09-03",
      "self_test": true,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "The charging Opus 5 arm passed the target probe and failed the control. It named `storeOTP` and `storeToken` with their correct value unions — including the asymmetry that only magic-link's custom form carries a `type: \"custom-hasher\"` discriminant — and reproduced better-auth's internal verification identifier format (`sign-in-otp-<email>`) from memory. Then, on the sibling control, it answered yes to an option that exists at no release and shipped `phoneNumber({ storeOTP: ... })` as the fix. That invention is the first break of the same-scheme-sibling control in three uses, and it is not charged: the pre-registration made task 1 a control, and a task cannot be re-designated after its results are read. It dated the real options to 1.2.9/1.2.10; they shipped in 1.3.0."
    },
    {
      "run_id": "better-auth--claude-opus-5--v4-d--2026-09-03",
      "file": "data/better-auth/opus-5-v4-d.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": "better-auth--claude-opus-5--v4-c--2026-09-03",
      "library": "better-auth",
      "library_latest_at_test": "1.7.2",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "stated_cutoff": "2026-05",
      "battery": "better-auth/v4-d",
      "prompt_file": "prompts/sent/better-auth-v4.txt",
      "test_date": "2026-09-03",
      "self_test": true,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "The non-charging Opus twin reproduced its twin's invention: it answered yes to a `storeOTP` option on the phone-number plugin and shipped it as the fix, where no such option exists at any release. Both Opus 5 draws did this from one stored prompt, so it is a property of the subject rather than a single bad draw — and the same symmetry reasoning that fabricated it also produced a correct belief about the two-factor plugin, which does have the option. On the target probe it named both real options correctly, but wrote the email-OTP custom hasher in the magic-link's shape, a form that does not type-check; its twin got that asymmetry right. Like its twin, it dated a 1.3.0 addition to 1.2.9/1.2.10."
    },
    {
      "run_id": "better-auth--claude-opus-5--v5-a--2026-09-03",
      "file": "data/better-auth/opus-5-v5-a.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "better-auth",
      "library_latest_at_test": "1.7.2",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "stated_cutoff": "2026-05",
      "battery": "better-auth/v5-a",
      "prompt_file": "prompts/sent/better-auth-v5.txt",
      "test_date": "2026-09-03",
      "self_test": true,
      "status": "open",
      "findings": 1,
      "chargeable_findings": 1,
      "withdrawn_findings": 0,
      "summary": "The pre-registered test arm did what the pre-registration said it would do. Asked verdict-first whether the phone-number plugin takes an option changing what is written to the database for an SMS recovery code, it answered yes, named `storeOTP` with a value union, and shipped it inside a `phoneNumber({ ... })` block introduced as \"the bit this threat-model row is about\". Compiled against an installed 1.7.2, that configuration produces exactly one error, on that line. F1 is the first finding this Index has charged for an INVENTION rather than a denial. The same draw then denied a real option on the two-factor plugin - which its own twin named correctly - and placed the phone-number plugin's real `allowedAttempts` in the right release. It can date this plugin's options and still invent one."
    },
    {
      "run_id": "better-auth--claude-opus-5--v5-b--2026-09-03",
      "file": "data/better-auth/opus-5-v5-b.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": "better-auth--claude-opus-5--v5-a--2026-09-03",
      "library": "better-auth",
      "library_latest_at_test": "1.7.2",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "stated_cutoff": "2026-05",
      "battery": "better-auth/v5-b",
      "prompt_file": "prompts/sent/better-auth-v5.txt",
      "test_date": "2026-09-03",
      "self_test": true,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "The blind twin, and it turned the invention from an incident into a measurement. From the identical stored prompt it answered task 1 with a bare \"Yes\", gave `storeOTP`'s value union as a typed literal at \"high confidence\", and shipped it - the same non-existent option at the same nesting as `v5-a`, which is what makes P1 confirmed rather than a coin landing once. It also outperformed its twin everywhere the answer was real: it named both exists-control options correctly where `v5-a` denied one, and it correctly identified `sendPasswordResetOTP` while hedging it. Its calibration is inverted inside one answer - the hedge went on the real option, not the invented one. Charges nothing, by the duplicated-arm rule."
    },
    {
      "run_id": "better-auth--claude-opus-5--v7-a--2026-09-06",
      "file": "data/better-auth/opus-5-v7-a.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "better-auth",
      "library_latest_at_test": "1.7.3",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "stated_cutoff": "2026-05",
      "battery": "better-auth/v7-a",
      "prompt_file": "prompts/sent/better-auth-v7.txt",
      "test_date": "2026-09-06",
      "self_test": true,
      "status": "open",
      "findings": 2,
      "chargeable_findings": 2,
      "withdrawn_findings": 0,
      "summary": "The test arm, and it split the battery cleanly in two: right about the behaviour, wrong about both names. It answered task 1 correctly (\"no\" - the 1.6.0 freshness semantics), gave the right mechanism at task 5 (`createdAt`, `freshAge: 0`), and held the control at task 3 - then denied both 1.6.0 options exist, charging F1 (`resendStrategy`) and F2 (`twoFactorPage`). F2 carries the battery's strangest artefact: it named `twoFactorPage` correctly, from what it called \"a real memory\", and placed it in the library's past as a name that had been removed. Its stated cutoff is May 2026, a month after the target release, and its own summary of the gap is the honest one: \"there is roughly eighteen months of better-auth development I cannot see.\""
    },
    {
      "run_id": "better-auth--claude-opus-5--v7-b--2026-09-06",
      "file": "data/better-auth/opus-5-v7-b.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "better-auth",
      "library_latest_at_test": "1.7.3",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "stated_cutoff": "2026-05",
      "battery": "better-auth/v7-b",
      "prompt_file": "prompts/sent/better-auth-v7.txt",
      "test_date": "2026-09-06",
      "self_test": true,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "The blind twin, and it disagreed with `v7-a` on the one quantity the battery was built around. From the identical stored prompt it answered task 1 \"Yes\" and task 5 `updatedAt` - the coherent pre-1.6.0 reading, held consistently across two tasks four apart - where its twin answered \"no\" and `createdAt`. So the freshness belief is **split within one subject**, and the split is not noise inside a draw: each arm is internally consistent and they disagree with each other. It reproduced its twin's two denials exactly (`resendStrategy`, `twoFactorPage`), which is what makes those a measurement. It charges nothing, by the duplicated-arm rule, and its task 1 miss has no sibling to point at because the charging arm passed."
    },
    {
      "run_id": "better-auth--claude-opus-5--v1--2026-09-01",
      "file": "data/better-auth/opus-5.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "better-auth",
      "library_latest_at_test": "1.7.2",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "stated_cutoff": "2026-05",
      "battery": "better-auth/v1",
      "prompt_file": null,
      "test_date": "2026-09-01",
      "self_test": true,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "Control arm of the milestone experiment, and the prediction held. Opus 5's describable boundary on better-auth is 1.3.0 (2025-07-19), an ordinary minor -- not the 1.0.0 milestone -- as the pre-registration required. Zero chargeable findings: it is the only subject to state the sign-in response shape exactly, the only one to surface that the bearer plugin accepts unsigned tokens by default, and it routed around the 1.4.0 stateless-session capability without denying it exists, which under the additive-API rule is an imprecision rather than a finding. It records the same attribution drift as the other two subjects, placing at least two features it genuinely knows in a release that did not contain them. Ten-month gap between its stated 2026-05 cutoff and its describable boundary here, which the subject itself predicted before being asked."
    },
    {
      "run_id": "better-auth--claude-sonnet-5--v2--2026-09-02",
      "file": "data/better-auth/sonnet-5-v2.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "better-auth",
      "library_latest_at_test": "1.7.2",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "stated_cutoff": "2026-01",
      "battery": "better-auth/v2",
      "prompt_file": "prompts/sent/better-auth-v2.txt",
      "test_date": "2026-09-02",
      "self_test": false,
      "status": "open",
      "findings": 1,
      "chargeable_findings": 1,
      "withdrawn_findings": 0,
      "summary": "The below-floor control arm, and it did half its job and failed the other half informatively. Claude Sonnet 5's attribution boundary sits at better-auth 1.0.0, four minors below the 1.3.8 surface this battery tests, so it is uninformative for the hypothesis by design — and it duly could not place either SAML SSO or device authorization to any release. Its job was to prove the capability probes can fail. On task 3 they can: it denied database-less sessions like every other draw, which is charged here as an S2. On tasks 1 and 2 they did not — it named both 1.3.8 plugins from four minors below, while volunteering that it might be reconstructing `deviceAuthorization` from generic RFC 8628 knowledge rather than remembering better-auth. That is the control catching a weakness in the instrument, which is what a control is for."
    },
    {
      "run_id": "better-auth--claude-sonnet-5--v3-c--2026-09-03",
      "file": "data/better-auth/sonnet-5-v3-c.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "better-auth",
      "library_latest_at_test": "1.7.2",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "stated_cutoff": "2026-01",
      "battery": "better-auth/v3-c",
      "prompt_file": "prompts/sent/better-auth-v3.txt",
      "test_date": "2026-09-03",
      "self_test": false,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "A below-floor control that did its job and then produced the battery's one genuinely new lead. It failed both capability probes, which is what establishes that neither is derivable from the surrounding API - without that, the two Opus denials could not be read as beliefs. It passed the floor probe and it did not invent the non-existent session-side option. The lead: asked about hashing verification identifiers, it did not hedge but asserted the capability does not exist in any version, and the per-plugin options it denied shipped in 1.3.0, eighteen months below its own stated cutoff. That is inside its window and it is not charged here, because the pre-registration made this arm a control and an arm cannot be re-designated once its results are read."
    },
    {
      "run_id": "better-auth--claude-sonnet-5--v4-a--2026-09-03",
      "file": "data/better-auth/sonnet-5-v4-a.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "better-auth",
      "library_latest_at_test": "1.7.2",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "stated_cutoff": null,
      "battery": "better-auth/v4-a",
      "prompt_file": "prompts/sent/better-auth-v4.txt",
      "test_date": "2026-09-03",
      "self_test": false,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "Claude Sonnet 5, the arm this battery was built to charge, did not fail the probe. Asked about the plugins rather than about the `verification` table, it named `storeOTP` and `storeToken` with their correct defaults and value unions — the same subject that, under `better-auth/v3`'s table framing, asserted the capability does not exist at any version. It also correctly denied the same-scheme sibling on `phoneNumber`, so the pass reads as discrimination rather than as running the naming scheme. Nothing is charged. Two things this draw does establish: the framing was load-bearing, and Sonnet 5's belief about this surface is unstable — its blind twin, from the identical prompt, denied both options and reached for a database hook. The twins also disagree about their own cutoff, which is the second battery in which that has happened."
    },
    {
      "run_id": "better-auth--claude-sonnet-5--v4-b--2026-09-03",
      "file": "data/better-auth/sonnet-5-v4-b.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": "better-auth--claude-sonnet-5--v4-a--2026-09-03",
      "library": "better-auth",
      "library_latest_at_test": "1.7.2",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "stated_cutoff": "2026-01",
      "battery": "better-auth/v4-b",
      "prompt_file": "prompts/sent/better-auth-v4.txt",
      "test_date": "2026-09-03",
      "self_test": false,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "The non-charging twin denied what its charging twin named. Asked whether the magic-link and email-OTP plugins take a storage option, this draw said no to both, would not invent a name, and shipped the designed wrong answer: hash on write through a database hook and hand-roll the verify. Both options shipped in 1.3.0, eighteen months below the cutoff this draw stated. It is not charged, because it is the `-b` draw of a duplicated arm. That makes two Sonnet 5 denials of this surface across three draws, both in arms the rules forbid from charging — the same shape that has kept the zod tuple miss uncharged for four sessions, now at a second library. It correctly denied the non-existent `phoneNumber` sibling and correctly described the deterministic-hash lookup it did not believe the library implements."
    },
    {
      "run_id": "better-auth--claude-sonnet-5--v5-c--2026-09-03",
      "file": "data/better-auth/sonnet-5-v5-c.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "better-auth",
      "library_latest_at_test": "1.7.2",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "stated_cutoff": "2026-01",
      "battery": "better-auth/v5-c",
      "prompt_file": "prompts/sent/better-auth-v5.txt",
      "test_date": "2026-09-03",
      "self_test": false,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "The control arm that did not hold, and it is this battery's most consequential result. Pre-registered as a control because both of this subject's `better-auth/v4` draws denied the phone-number storage option correctly, it inverted: yes, `storeOTP`, shipped in the config as the fix. P2 falsified. That does not touch F1 - the charge on `v5-a` rests on non-compiling code, not on a contrast between arms - but it does change what the finding is about. Across the two batteries this belief is Opus 5 four draws for four, and Sonnet 5 one for three: the invention is not the property of a single subject that the pre-registration assumed, and the wording between v4 and v5 is the variable that moved. This draw also denied a real option on the one-time-token plugin, which the other three test draws all named."
    },
    {
      "run_id": "better-auth--claude-sonnet-5--v7-e--2026-09-06",
      "file": "data/better-auth/sonnet-5-v7-e.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "better-auth",
      "library_latest_at_test": "1.7.3",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "stated_cutoff": "2026-01",
      "battery": "better-auth/v7-e",
      "prompt_file": "prompts/sent/better-auth-v7.txt",
      "test_date": "2026-09-06",
      "self_test": true,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "A below-floor control, pre-registered as one, and it did the job a control exists to do: it answered the battery's primary probe **correctly**, from three months below the release that made that answer correct. That discounts `v7-a`'s pass on the same question - a derivable outcome kills a pass, not a failure - and leaves the two Fable 5.1 failures charged. It missed both named 1.6.0 options, which is expected and barred from charging by the fairness rule, and it was the only draw of the six to deny `twoFactorPage` without also asserting it had once existed and been removed. Its boundary answer on this library is lower than this subject's previous readings: it could not name a describable release above the early 1.x line."
    },
    {
      "run_id": "better-auth--claude-sonnet-5--v1--2026-09-01",
      "file": "data/better-auth/sonnet-5.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "better-auth",
      "library_latest_at_test": "1.7.2",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "stated_cutoff": "2026-01",
      "battery": "better-auth/v1",
      "prompt_file": null,
      "test_date": "2026-09-01",
      "self_test": false,
      "status": "open",
      "findings": 2,
      "chargeable_findings": 2,
      "withdrawn_findings": 0,
      "summary": "Test arm of the milestone experiment, and the prediction held. Sonnet 5's describable boundary on better-auth is 1.0.0 (2024-11-23) -- the milestone -- with 1.1.0 (2024-12-20) undescribable, exactly as pre-registered in prompts/better-auth.md, despite 1.1.0 being the larger release by release-note volume and named API surface. Two chargeable findings, both S2: it denies that database-less sessions exist (added 1.4.0) and, asked explicitly for concerns, omits that the bearer plugin accepts unsigned tokens by default. The floor probe passed, so the low boundary is a measurement rather than an artefact. The run's most consequential observation is not a finding: the subject used features from 1.1.0, 1.2.0 and 1.3.0 correctly while insisting it cannot describe anything past 1.0.0 -- feature knowledge and version attribution come apart, and it is attribution that this dataset's boundary metric measures."
    },
    {
      "run_id": "langchain--claude-fable-5-1--v4--2026-09-06",
      "file": "data/langchain/fable-5-1-v4.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "langchain",
      "library_latest_at_test": "1.4.0",
      "model": "Claude Fable 5.1",
      "model_id": "claude-fable-5-1",
      "stated_cutoff": "2026-06",
      "battery": "langchain/v4",
      "prompt_file": "prompts/sent/langchain-v4.txt",
      "test_date": "2026-09-06",
      "self_test": true,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "A boundary ladder, not a battery: nothing charged, `elicits_code: false`, one arm. Claude Fable 5.1 describes langchain through the 1.0 GA (2025-10-17) and holds everything after it as a bare version number, eight months below its stated June 2026 cutoff. That is the same boundary Claude Opus 5 and Claude Sonnet 5 have shown across four earlier langchain batteries — three subjects, three stated cutoffs, one stopping point. Both ends of the ladder held: the poison rung (0.4.0, never published) was rejected with the correct reason, and 1.4.0 — published three days before this draw — was declined. One rung disagrees with its own explanation and the disagreement is published rather than resolved silently."
    },
    {
      "run_id": "langchain--claude-fable-5-1--v5-a--2026-09-06",
      "file": "data/langchain/fable-5-1-v5-a.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "langchain",
      "library_latest_at_test": "1.4.0",
      "model": "Claude Fable 5.1",
      "model_id": "claude-fable-5-1",
      "stated_cutoff": "2026-06",
      "battery": "langchain/v5-a",
      "prompt_file": "prompts/sent/langchain-v5.txt",
      "test_date": "2026-09-06",
      "self_test": true,
      "status": "open",
      "findings": 2,
      "chargeable_findings": 2,
      "withdrawn_findings": 0,
      "summary": "The charging arm of the battery pre-registered against langchain 1.3.0. Two findings charged, both S3, both from the same four-month blind spot: `create_agent(transformers=...)` denied in the verdict (task 1) and again in the artefact (task 5), and `v2` named as the ceiling of `astream_events` (task 6) when 1.3.0 added `v3` for agents. The control sibling held, the floor passed, and the 11k-i deprecation pair came back four-for-four correct - including `extras`, a 1.2.0 addition inside this subject's blind window, which it described accurately at low confidence. The pre-registered P1 - that the named surface would draw more wrong answers than the small-answer-space one - is falsified by this arm and by the whole battery: both surfaces drew wrong answers from all five arms."
    },
    {
      "run_id": "langchain--claude-fable-5-1--v5-b--2026-09-06",
      "file": "data/langchain/fable-5-1-v5-b.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "langchain",
      "library_latest_at_test": "1.4.0",
      "model": "Claude Fable 5.1",
      "model_id": "claude-fable-5-1",
      "stated_cutoff": "2026-06",
      "battery": "langchain/v5-b",
      "prompt_file": "prompts/sent/langchain-v5.txt",
      "test_date": "2026-09-06",
      "self_test": true,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "The blind twin of `v5-a`, charging nothing by design. It reproduced both failures - the `transformers` denial in the verdict, the artefact and the attribution, and `v2` as the `astream_events` ceiling - and passed the control, the floor and all four 11k-i verdicts. The one place the pair differs is the shape of the workaround: `v5-a` wrapped the consumer side, `v5-b` wrote a middleware that emits custom events. Same belief, two artefacts."
    },
    {
      "run_id": "langchain--claude-fable-5-1--v6-e--2026-09-06",
      "file": "data/langchain/fable-5-1-v6-e.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "langchain",
      "library_latest_at_test": "1.4.0",
      "model": "Claude Fable 5.1",
      "model_id": "claude-fable-5-1",
      "stated_cutoff": "2026-06",
      "battery": "langchain/v6-e",
      "prompt_file": "prompts/sent/langchain-v6.txt",
      "test_date": "2026-09-06",
      "self_test": true,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "Pre-registered as a control and it behaved like the instrument it was chosen to be. `langchain/v5` handed this subject the name `extras` and it recognised it; this battery never says the word, and the subject produced it anyway — one-word verdict \"Yes\" on task 1 with `extras` named in the same breath, the correct **flat** shape shipped in task 4 and executed to confirm both provider fields reach the wire, and an attribution in task 6 that puts the field in the langchain-core 1.1/1.2 line in December 2025 against an artifact of 1.2.0 on 2025-12-12. Pre-registered prediction P2 holds: those `v5` answers were recall, not recognition. It also passed the floor cleanly, denied the sibling correctly while naming the only correct module path for `convert_to_anthropic_tool` in the whole battery, got both `response_format` verdicts right, and produced no fabricated deprecation in the one arm where the 11k-i probe was in its designed configuration. Charges nothing, by a designation fixed before the draws."
    },
    {
      "run_id": "langchain--claude-fable-5--v2--2026-09-01",
      "file": "data/langchain/fable-5-v2.json",
      "markdown": "data/langchain/fable-5-v2.md",
      "supersedes": null,
      "replicate_of": null,
      "library": "langchain",
      "library_latest_at_test": "1.3.18",
      "model": "Claude Fable 5",
      "model_id": "claude-fable-5",
      "stated_cutoff": "2026-01",
      "battery": "langchain/v2",
      "prompt_file": null,
      "test_date": "2026-09-01",
      "self_test": false,
      "status": "open",
      "findings": 1,
      "chargeable_findings": 1,
      "withdrawn_findings": 0,
      "summary": "The strongest performance in this battery, and it proves nothing. Three of the four counted surfaces came back clean and unhedged — `model.profile` with `image_inputs`, a `SystemMessage` carrying `cache_control` as `system_prompt`, and `ModelRetryMiddleware` led with rather than offered as a fallback, every keyword valid against the shipped signature. On the fourth it named `extras` correctly and put it in the right place, then nested the values under a provider key the attribute does not use, so the flags reach the provider as an `anthropic` field it will ignore. It is also the only subject that dated anything correctly: it placed the retry middleware at 1.1, ~Dec 2025, against an actual 1.1.0 on 2025-11-24. Three of four meets the pre-registered pass threshold — and the outcome table fixed before the run voids that reading, because the control arm scored two of four. Recorded as UNINFORMATIVE about the hypothesis, which is what the pre-registration says to do."
    },
    {
      "run_id": "langchain--claude-fable-5--v3--2026-09-01",
      "file": "data/langchain/fable-5-v3.json",
      "markdown": "data/langchain/fable-5-v3.md",
      "supersedes": null,
      "replicate_of": null,
      "library": "langchain",
      "library_latest_at_test": "1.3.18",
      "model": "Claude Fable 5",
      "model_id": "claude-fable-5",
      "stated_cutoff": "2026-01",
      "battery": "langchain/v3",
      "prompt_file": null,
      "test_date": "2026-09-01",
      "self_test": false,
      "status": "open",
      "findings": 2,
      "chargeable_findings": 2,
      "withdrawn_findings": 0,
      "summary": "Four probes against langchain 1.1.0. This subject scored 1 of 4 raw and 0 of 3 once the control arm's hit retired P2. It made the same two committed errors as the other test arm, with higher stated confidence on both: that the bare retry middleware re-raises when its retries run out (it returns a synthetic assistant message), and that a `create_agent` agent stops at LangGraph's 25 supersteps (the factory has set a four-figure ceiling since 1.1.0, and this subject said explicitly it did not believe the factory sets one). It escaped a third finding on a technicality worth naming: it wrote the deprecated `system_prompt` field but hedged that the field \"may be exposed as system_message\", and the Index's own code-vs-claim rule makes that an imprecision rather than a finding. Against a threshold of ≤1 of 3 for falsification, this arm falsifies H1."
    },
    {
      "run_id": "langchain--claude-fable-5--v1--2026-08-31",
      "file": "data/langchain/fable-5.json",
      "markdown": "data/langchain/fable-5.md",
      "supersedes": null,
      "replicate_of": null,
      "library": "langchain",
      "library_latest_at_test": "1.3.18",
      "model": "Claude Fable 5",
      "model_id": "claude-fable-5",
      "stated_cutoff": "2026-01",
      "battery": "langchain/v1",
      "prompt_file": null,
      "test_date": "2026-08-31",
      "self_test": false,
      "status": "open",
      "findings": 1,
      "chargeable_findings": 1,
      "withdrawn_findings": 0,
      "summary": "Eleven code tasks, eleven pieces of working LangChain v1, from the subject with the shortest measured lag in the Index — three months. `create_agent`, `system_prompt`, `ToolRuntime`, `wrap_model_call`, the `\"model\"` node, `.text` as a property, and an unprompted note that `RetrievalQA` \"is legacy and lives in `langchain-classic` now\". One finding: version attribution stops at 1.0.0 (2025-10-17) — it can describe that release and cannot describe 1.1.0, which shipped 2025-11-24, inside its stated 2026-01 window. Battery v1 does not probe 1.1.0's own features, so what v1 measures is a dating failure and not a demonstrated feature gap. AMENDED 2026-09-01: battery v3 did probe them, and found the gap — this subject failed all three surviving probes into 1.1.0 (JOURNAL/022). The sentence above still describes v1's own scope correctly; it no longer implies that no gap exists. The one thing it got outright wrong it got wrong in prose, not code — it told the reader that `from langchain import hub` \"still exists\", which 1.0.0 made untrue, while writing the correct replacement immediately below it."
    },
    {
      "run_id": "langchain--claude-haiku-4-5--v5-e--2026-09-06",
      "file": "data/langchain/haiku-4-5-v5-e.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "langchain",
      "library_latest_at_test": "1.4.0",
      "model": "Claude Haiku 4.5",
      "model_id": "claude-haiku-4-5",
      "stated_cutoff": "2025-02",
      "battery": "langchain/v5-e",
      "prompt_file": "prompts/sent/langchain-v5.txt",
      "test_date": "2026-09-06",
      "self_test": true,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "The far derivability control, fifteen months below langchain 1.3.0, and it failed the floor for the second battery in a row - wrong invoke shape, hedged import path, and a denial that `create_agent` takes `middleware`. Its answers are reported with that discount stated. It did answer the control sibling correctly, and it volunteered an 0.4.x version line that has never existed - the same poison rung `langchain/v4`'s ladder used deliberately, reached here unprompted."
    },
    {
      "run_id": "langchain--claude-haiku-4-5--v6-f--2026-09-06",
      "file": "data/langchain/haiku-4-5-v6-f.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "langchain",
      "library_latest_at_test": "1.4.0",
      "model": "Claude Haiku 4.5",
      "model_id": "claude-haiku-4-5",
      "stated_cutoff": "2025-02",
      "battery": "langchain/v6-f",
      "prompt_file": "prompts/sent/langchain-v6.txt",
      "test_date": "2026-09-06",
      "self_test": true,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "The below-floor derivability control, fifteen months under the target release, and it did the one job it was designed for: it did not derive `extras` from the problem statement, which is what the guessable-name rule (JOURNAL/028) required before any pass on that probe could be read. Everything else it produced is the register of a guessing arm, exactly as JOURNAL/063 said to expect after two prior floor failures. It failed the floor a third time — no agent constructor at all, just `bind_tools` and a hand-built message list — and it denied that `@tool` takes `response_format`, a parameter present since langchain-core 0.3.22 in December 2024, below its own boundary. Its task 4 artefact was executed and raises before it can do anything, and the dict it builds is never bound. Charges nothing, is licensed to charge nothing, and its denials are read only as evidence about derivability, never as knowledge."
    },
    {
      "run_id": "langchain--claude-opus-5--v2--2026-09-01",
      "file": "data/langchain/opus-5-v2.json",
      "markdown": "data/langchain/opus-5-v2.md",
      "supersedes": null,
      "replicate_of": null,
      "library": "langchain",
      "library_latest_at_test": "1.3.18",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "stated_cutoff": "2026-05",
      "battery": "langchain/v2",
      "prompt_file": null,
      "test_date": "2026-09-01",
      "self_test": true,
      "status": "open",
      "findings": 1,
      "chargeable_findings": 1,
      "withdrawn_findings": 0,
      "summary": "Five tasks against langchain 1.1.0 and 1.2.0 — the releases this subject's v1 run showed it could not date. It used three of the four counted surfaces correctly: `model.profile` with `image_inputs`, a `SystemMessage` carrying `cache_control` passed as `system_prompt`, and `ModelRetryMiddleware` with a signature the shipped package accepts. The fourth it invented: `tool.provider_specific`, where the shipped attribute is `extras`, so both provider instructions are silently dropped. Then question (c) dated `.profile` to 1.0.0 — a feature it had just used correctly, attributed to the wrong release, which is exactly the split this battery was built to find. Three of four is the pre-registered pass threshold. It buys nothing: the control arm scored two of four, which under the outcome table fixed before the run makes this battery UNINFORMATIVE about the hypothesis. The probes turned out to be guessable from general framework shape, and Sonnet 5 said so in its own words. The result is recorded, the reading is not taken."
    },
    {
      "run_id": "langchain--claude-opus-5--v3--2026-09-01",
      "file": "data/langchain/opus-5-v3.json",
      "markdown": "data/langchain/opus-5-v3.md",
      "supersedes": null,
      "replicate_of": null,
      "library": "langchain",
      "library_latest_at_test": "1.3.18",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "stated_cutoff": "2026-05",
      "battery": "langchain/v3",
      "prompt_file": null,
      "test_date": "2026-09-01",
      "self_test": true,
      "status": "open",
      "findings": 3,
      "chargeable_findings": 3,
      "withdrawn_findings": 0,
      "summary": "Four probes against langchain 1.1.0, redesigned after v2's control arm broke that battery. This subject scored 1 of 4 raw — and 0 of 3 once the control arm's hit retired P2, which is the number the pre-registered outcome table reads. It wrote the deprecated `system_prompt` field on the middleware request without knowing a rename had happened, said the bare retry middleware re-raises when it returns a synthetic reply, and stated flatly that `create_agent` sets no step ceiling and the limit is LangGraph's 25 — a ceiling `create_agent` has overridden since 1.1.0, to four figures. Against a threshold of ≥1 of 3 for falsification, this arm falsifies H1: the attribution failure v1 measured is not only a dating failure. This subject cannot use 1.1.0 either. Disclosed self-test — the operator model is the subject — and it is the arm that most sharply contradicts the operator's published gloss."
    },
    {
      "run_id": "langchain--claude-opus-5--v5-c--2026-09-06",
      "file": "data/langchain/opus-5-v5-c.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "langchain",
      "library_latest_at_test": "1.4.0",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "stated_cutoff": "2026-05",
      "battery": "langchain/v5-c",
      "prompt_file": "prompts/sent/langchain-v5.txt",
      "test_date": "2026-09-06",
      "self_test": true,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "A control arm parked by the same-month bar: langchain 1.3.0 shipped twelve days into this subject's stated cutoff month, so its three reproduced failures - the `transformers` denial across tasks 1, 5 and 7, and `v2` as the `astream_events` ceiling - are recorded and charge nothing. It passed the floor and the control sibling, which is what makes its denials usable as evidence that 1.3.0's additions are not derivable. The battery's unplanned result is here: asked about `extras` (1.2.0, five months below its cutoff) this arm denied the parameter exists at all, which is a chargeable miss on a properly designated arm and is queued as one."
    },
    {
      "run_id": "langchain--claude-opus-5--v6-a--2026-09-06",
      "file": "data/langchain/opus-5-v6-a.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "langchain",
      "library_latest_at_test": "1.4.0",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "stated_cutoff": "2026-05",
      "battery": "langchain/v6-a",
      "prompt_file": "prompts/sent/langchain-v6.txt",
      "test_date": "2026-09-06",
      "self_test": true,
      "status": "open",
      "findings": 1,
      "chargeable_findings": 1,
      "withdrawn_findings": 0,
      "summary": "The pre-registered charging arm for the langchain 1.2.0 tool-`extras` window, and it charged. Task 1 denied that a tool has any first-class place for provider-specific fields; task 4 rebuilt the Anthropic tool definition by hand and spliced `cache_control` and `defer_loading` into the copy; task 6 said no release has ever added such a place. `extras` has existed since langchain-core 1.2.0 on 2025-12-12, five months below this arm's stated cutoff. The workaround was executed against the shipped packages and it does deliver both fields, which is why the finding is S3 rather than LF26's S2 — the cost is a tool defined twice and dispatch kept in sync by hand, not a silently dropped provider instruction. The draw passed the floor probe, answered the half-real sibling correctly and reached for the right converters, got both `response_format` verdicts right, and produced no fabricated deprecation. It also hedged the wrong answer accurately in both places it gave it, which is the most calibrated wrong verdict in the battery."
    },
    {
      "run_id": "langchain--claude-opus-5--v6-b--2026-09-06",
      "file": "data/langchain/opus-5-v6-b.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "langchain",
      "library_latest_at_test": "1.4.0",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "stated_cutoff": "2026-05",
      "battery": "langchain/v6-b",
      "prompt_file": "prompts/sent/langchain-v6.txt",
      "test_date": "2026-09-06",
      "self_test": true,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "The blind twin of `v6-a`, and it agreed with it on every graded quantity: the same \"no\" verdict on task 1, the same hand-rebuilt Anthropic dict in task 4, the same \"no release has done so\" on task 6, the same four correct verdicts on task 5, the same floor pass and the same correct denial of the sibling. It stated the same May 2026 cutoff and the same 1.0.0 boundary. Its distinctive contribution is the artefact: an explicit enumeration of `BaseTool`'s fields that is exactly the pre-1.2.0 set with `extras` the only omission. Charges nothing; the failure is charged as F1 on `v6-a`."
    },
    {
      "run_id": "langchain--claude-opus-5--v1--2026-08-31",
      "file": "data/langchain/opus-5.json",
      "markdown": "data/langchain/opus-5.md",
      "supersedes": null,
      "replicate_of": null,
      "library": "langchain",
      "library_latest_at_test": "1.3.18",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "stated_cutoff": "2026-05",
      "battery": "langchain/v1",
      "prompt_file": null,
      "test_date": "2026-08-31",
      "self_test": true,
      "status": "open",
      "findings": 1,
      "chargeable_findings": 1,
      "withdrawn_findings": 0,
      "summary": "Eleven code tasks, eleven pieces of working LangChain v1. `create_agent` with `system_prompt`, middleware via `wrap_model_call`, `ToolRuntime` for run-scoped context, `ToolStrategy` for structured output, the `\"model\"` node name in the stream filter, `.text` as a property, and a deliberate refusal to reach for `RetrievalQA` or the memory classes. One finding, and like Tailwind it is not about code: version attribution stops at 1.0.0 (2025-10-17) — it can describe that release and cannot describe 1.1.0 or 1.2.0, both of which shipped inside the subject's stated 2026-05 window. Battery v1 does not probe those releases' own features, so what v1 measures is a dating failure and not a demonstrated feature gap. AMENDED 2026-09-01: battery v3 did probe them, and found the gap — this subject failed all three surviving probes into 1.1.0 (JOURNAL/022). The sentence above still describes v1's own scope correctly; it no longer implies that no gap exists. Seven months of lag — its best result in the Index, on the library where the other subject with the same architecture family lands thirteen months behind it. Disclosed self-test — the operator model is the subject."
    },
    {
      "run_id": "langchain--claude-sonnet-5--v1r-a--2026-09-01",
      "file": "data/langchain/sonnet-5-v1r-a.json",
      "markdown": "data/langchain/sonnet-5-v1r-a.md",
      "supersedes": null,
      "replicate_of": "langchain--claude-sonnet-5--v1--2026-08-31",
      "library": "langchain",
      "library_latest_at_test": "1.3.18",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "stated_cutoff": "2026-01",
      "battery": "langchain/v1r-a",
      "prompt_file": null,
      "test_date": "2026-09-01",
      "self_test": false,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "Replicate A of `langchain/v1` against Sonnet 5, prompt unchanged. It placed its describable boundary at langchain 1.0.0 (2025-10-17) and described the 1.0 rework accurately — thirteen months later than `langchain/v1` recorded for the same model on the same battery one day earlier, and thirteen months later than its own concurrent twin `v1r-b`. Pre-registered outcome C: the two replicates disagree with each other. The instrument that produces every knowledge boundary in the Index is not single-valued under a fixed prompt. No findings are charged here; the code half is reported as prose because `langchain/v1` already carries this subject's findings. Worth noting against the alarm: the boundary self-report moved thirteen months while the generated code stayed largely stale in both draws — this draw still wrote `from langchain import hub` and `langgraph.prebuilt.create_react_agent`."
    },
    {
      "run_id": "langchain--claude-sonnet-5--v1r-b--2026-09-01",
      "file": "data/langchain/sonnet-5-v1r-b.json",
      "markdown": "data/langchain/sonnet-5-v1r-b.md",
      "supersedes": null,
      "replicate_of": "langchain--claude-sonnet-5--v1--2026-08-31",
      "library": "langchain",
      "library_latest_at_test": "1.3.18",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "stated_cutoff": "2026-01",
      "battery": "langchain/v1r-b",
      "prompt_file": null,
      "test_date": "2026-09-01",
      "self_test": false,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "Replicate B of `langchain/v1` against Sonnet 5, prompt unchanged. It reproduced `langchain/v1` exactly — boundary at 0.3 (2024-09-13), 1.0 known only as a name it cannot describe — and rewrote the same 0.3-era stack: `langgraph.prebuilt.create_react_agent` with `prompt=`, `pre_model_hook=`, `from langchain import hub`. Taken alone this run says the instrument is fine. Taken with its concurrent twin `v1r-a`, which placed the same model's boundary thirteen months later on the same prompt, it says the opposite: the boundary is a draw, not a measurement. One code-level divergence from v1 is also recorded — task 10's stream filter, v1's designed S2, did not reproduce here."
    },
    {
      "run_id": "langchain--claude-sonnet-5--v2--2026-09-01",
      "file": "data/langchain/sonnet-5-v2.json",
      "markdown": "data/langchain/sonnet-5-v2.md",
      "supersedes": null,
      "replicate_of": null,
      "library": "langchain",
      "library_latest_at_test": "1.3.18",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "stated_cutoff": null,
      "battery": "langchain/v2",
      "prompt_file": null,
      "test_date": "2026-09-01",
      "self_test": false,
      "status": "open",
      "findings": 1,
      "chargeable_findings": 1,
      "withdrawn_findings": 0,
      "summary": "The control arm, and it did its job by breaking the test. Sonnet 5's langchain knowledge stops before 1.0 — v1 measured it at 0.3.0, and here it said its reliable knowledge ends \"early-to-mid 2025\" and that it could not vouch for `ProviderStrategy`, `defer_loading` or \"the exact shape of `.profile`\" being real shipped names, calling them \"my best reconstruction of what this would plausibly be called given the direction I saw.\" It then scored two of four: it produced `model.profile` with `image_inputs` and a `SystemMessage` carrying `cache_control` as `system_prompt`, both correct, both from a subject that cannot have known them. Two of four is the pre-registered threshold at which the whole battery is declared UNINFORMATIVE — the probes are answerable by inference from general framework shape, so the test arms' three-of-four scores are not evidence of knowledge. The hypothesis is neither supported nor falsified. The subject told us why, unprompted, in its own words."
    },
    {
      "run_id": "langchain--claude-sonnet-5--v3--2026-09-01",
      "file": "data/langchain/sonnet-5-v3.json",
      "markdown": "data/langchain/sonnet-5-v3.md",
      "supersedes": null,
      "replicate_of": null,
      "library": "langchain",
      "library_latest_at_test": "1.3.18",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "stated_cutoff": "2026-01",
      "battery": "langchain/v3",
      "prompt_file": null,
      "test_date": "2026-09-01",
      "self_test": false,
      "status": "open",
      "findings": 3,
      "chargeable_findings": 3,
      "withdrawn_findings": 0,
      "summary": "The control arm, and it did its job — expensively for the battery and cheaply for the Index. Predicted 0 of 4; scored 1 of 4, and the one was P2, the model-capability key. Under the rule fixed before the run, a single control pass condemns the probe that produced it, so P2 was struck from all three arms and the battery re-read on three probes. On those three this subject failed all three: it built its middleware around `modify_model_request`, a hook that shipped in no released 1.x, so the middleware never fires; it said the bare retry middleware re-raises; and it committed to a 25-superstep ceiling. Two integrity notes are on the record rather than in a footnote: it stated a langchain boundary thirteen months later than its own v1 run, which weakens the floor this control was meant to provide; and it was the only subject of three to notice that the system-instruction field had been renamed at all, while being the only one whose code fails outright."
    },
    {
      "run_id": "langchain--claude-sonnet-5--v5-d--2026-09-06",
      "file": "data/langchain/sonnet-5-v5-d.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "langchain",
      "library_latest_at_test": "1.4.0",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "stated_cutoff": "2026-01",
      "battery": "langchain/v5-d",
      "prompt_file": "prompts/sent/langchain-v5.txt",
      "test_date": "2026-09-06",
      "self_test": true,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "A derivability control four months below langchain 1.3.0. It denied `transformers` in the verdict and refused to invent one in the artefact, and named `v2` as the ceiling - so neither of the release's additions is reachable from what was true before it. The floor and the control sibling both passed, so the control is at full strength. Its `extras` denial is a chargeable miss on a release one month below its own stated cutoff, uncharged only because this arm was designated a control before the draw."
    },
    {
      "run_id": "langchain--claude-sonnet-5--v6-c--2026-09-06",
      "file": "data/langchain/sonnet-5-v6-c.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "langchain",
      "library_latest_at_test": "1.4.0",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "stated_cutoff": "2026-01",
      "battery": "langchain/v6-c",
      "prompt_file": "prompts/sent/langchain-v6.txt",
      "test_date": "2026-09-06",
      "self_test": true,
      "status": "open",
      "findings": 1,
      "chargeable_findings": 1,
      "withdrawn_findings": 0,
      "summary": "The pre-registered Sonnet 5 charging arm, and it charged — but it is the weakest witness in the battery and the run says so twice. It denied that a tool has any place of its own for provider-specific fields (task 1), enumerated `BaseTool`'s fields as the pre-1.2.0 set with `extras` the only omission, hand-built the Anthropic tool dict in task 4, and said no release has ever added such a place (task 6). `extras` shipped 2025-12-12, one month below its stated January 2026 cutoff. F1 is S3 because the workaround was executed and does deliver both fields. Against that: **the floor probe failed** — this draw wrote `langgraph.prebuilt.create_react_agent` as the current recommended API, which langchain 1.0.0 replaced in October 2025 — falsifying pre-registered prediction P6. The failure is self-consistent with the 0.3.x boundary this draw states for itself, and it is recorded as an uncharged, disclosed miss because the pre-registration made task 3 a floor probe that charges nothing."
    },
    {
      "run_id": "langchain--claude-sonnet-5--v6-d--2026-09-06",
      "file": "data/langchain/sonnet-5-v6-d.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "langchain",
      "library_latest_at_test": "1.4.0",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "stated_cutoff": "2026-01",
      "battery": "langchain/v6-d",
      "prompt_file": "prompts/sent/langchain-v6.txt",
      "test_date": "2026-09-06",
      "self_test": true,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "The blind twin of `v6-c`. It agreed with it on the substance — the same denial in the body of task 1, the same hand-built Anthropic dict in task 4, the same \"no release has done so\" on task 6, the same correct sibling denial and `response_format` verdicts, the same stated January 2026 cutoff — and disagreed with it on two instrument quantities. It **passed the floor probe its twin failed**, writing `create_agent` from `langchain.agents` where `v6-c` wrote `create_react_agent`, so the pair straddles the 1.0.0 boundary on one sent file in one session. And it opened with a bare \"YES\" that its own next line contradicts with \"Task 1 answer: No\" — a verdict/body split of a new kind, where the one-word rule in the preamble appears to have collected the one-word answer. Charges nothing; the failure is charged as F1 on `v6-c`."
    },
    {
      "run_id": "langchain--claude-sonnet-5--v1--2026-08-31",
      "file": "data/langchain/sonnet-5.json",
      "markdown": "data/langchain/sonnet-5.md",
      "supersedes": null,
      "replicate_of": null,
      "library": "langchain",
      "library_latest_at_test": "1.3.18",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "stated_cutoff": "2026-01",
      "battery": "langchain/v1",
      "prompt_file": null,
      "test_date": "2026-08-31",
      "self_test": false,
      "status": "open",
      "findings": 3,
      "chargeable_findings": 3,
      "withdrawn_findings": 0,
      "summary": "The largest measured knowledge gap in the Index. This subject's usable LangChain knowledge stops at 0.3 (2024-09-13) — sixteen months before its own stated cutoff of 2026-01, and thirteen months earlier than the other two subjects on the same library. It writes the 0.3-era stack throughout: `langgraph.prebuilt.create_react_agent` with `prompt=`, `pre_model_hook=`, a stream filtered on the `\"agent\"` node, and `from langchain import hub`. Only the last of those is an outright ImportError, because LangGraph deprecated its prebuilt rather than deleting it — so the damage here is not a stack trace, it is a developer building today on the stack the framework moved off eleven months ago. Three findings, all chargeable. Notably, the subject diagnosed the gap itself: it volunteered that its \"sharp, specific knowledge\" of this library runs only to \"roughly mid-to-late 2024\", which is exactly where the measurement puts it."
    },
    {
      "run_id": "next.js--claude-fable-5-1--v4-a--2026-09-05",
      "file": "data/next.js/fable-5-1-v4-a.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "next.js",
      "library_latest_at_test": "16.3.4",
      "model": "Claude Fable 5.1",
      "model_id": "claude-fable-5-1",
      "stated_cutoff": "2026-06",
      "battery": "next.js/v4-a",
      "prompt_file": "prompts/sent/nextjs-v4-sc.txt",
      "test_date": "2026-09-05",
      "self_test": false,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "Boundary question first, then the ladder. Claude Fable 5.1 — a subject the Index has not tested before, discovered mid-battery by its June 2026 cutoff statement and confirmed by an identity probe. It described 16.0.0, 15.5.0, 15.3.0 and 15.1.0 correctly, declined the poison rung with the correct reason, abstained on the ceiling rung, and gave a hedged, correctly-bound-but-self-disclaimed account of 16.1.0. D = 16.0.0 strict / 16.1.0 lenient; S = 16.1.0 read from question (c) as pre-registered."
    },
    {
      "run_id": "next.js--claude-fable-5-1--v4-b--2026-09-05",
      "file": "data/next.js/fable-5-1-v4-b.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": "next.js--claude-fable-5-1--v4-a--2026-09-05",
      "library": "next.js",
      "library_latest_at_test": "16.3.4",
      "model": "Claude Fable 5.1",
      "model_id": "claude-fable-5-1",
      "stated_cutoff": "2026-06",
      "battery": "next.js/v4-b",
      "prompt_file": "prompts/sent/nextjs-v4-sc.txt",
      "test_date": "2026-09-05",
      "self_test": false,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "Blind replicate of `v4-a`: same stored file, same order (boundary question first). It reached the same self-placement (16.1 describable, 16.2 the first bare number) and the same five correct rungs, and its 16.1.0 answer is the one that is CORRECT under both grading readings - it names the file-system caching headline and binds it to 16.1 without disclaiming the attribution. D = 16.1.0, S = 16.1.0, gap 0. Poison and ceiling controls clean."
    },
    {
      "run_id": "next.js--claude-fable-5-1--v4-c--2026-09-05",
      "file": "data/next.js/fable-5-1-v4-c.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "next.js",
      "library_latest_at_test": "16.3.4",
      "model": "Claude Fable 5.1",
      "model_id": "claude-fable-5-1",
      "stated_cutoff": "2026-06",
      "battery": "next.js/v4-c",
      "prompt_file": "prompts/sent/nextjs-v4-cs.txt",
      "test_date": "2026-09-05",
      "self_test": false,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "Ladder first, boundary question last - the position every published battery in the Index uses. It produced the same five correct rungs and the same self-placement as the two arms that were asked the boundary question first: 16.1 describable, 16.2 the first bare number. D = 16.0.0 strict / 16.1.0 lenient, S = 16.1.0. Poison and ceiling controls clean."
    },
    {
      "run_id": "next.js--claude-fable-5-1--v4-d--2026-09-05",
      "file": "data/next.js/fable-5-1-v4-d.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": "next.js--claude-fable-5-1--v4-c--2026-09-05",
      "library": "next.js",
      "library_latest_at_test": "16.3.4",
      "model": "Claude Fable 5.1",
      "model_id": "claude-fable-5-1",
      "stated_cutoff": "2026-06",
      "battery": "next.js/v4-d",
      "prompt_file": "prompts/sent/nextjs-v4-cs.txt",
      "test_date": "2026-09-05",
      "self_test": false,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "Blind replicate of `v4-c`. Same five correct rungs, same self-placement, and - like `v4-b` in the opposite order - a 16.1.0 answer that is CORRECT under both grading readings. The four Fable 5.1 arms split two-and-two on the 16.1.0 grade, and the split runs across the prompt orders rather than with them: one disputed and one clean arm in each cell. D = 16.1.0, S = 16.1.0, gap 0."
    },
    {
      "run_id": "next.js--claude-fable-5--v2-d--2026-09-02",
      "file": "data/next.js/fable-5-v2-d.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "next.js",
      "library_latest_at_test": "16.3.4",
      "model": "Claude Fable 5",
      "model_id": "claude-fable-5",
      "stated_cutoff": "2026-01",
      "battery": "next.js/v2-d",
      "prompt_file": "prompts/sent/nextjs-v2.txt",
      "test_date": "2026-09-02",
      "self_test": false,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "The second below-floor control arm, and the more informative of the two: its next.js attribution stops at 16.0.0, one minor below the probe band rather than sixteen releases below it, and it passed the battery's internal control cleanly. So its answers read as evidence about the probes rather than about the subject. It struck the same two probes DERIVABLE as the other control, and it produced the sharpest instance in the battery of a category the Index has been tracking since valibot: asked about the image disk-cache budget, it stated flatly that no such rule exists — 'if your question presumes a percentage-of-the-volume rule, I believe that premise is false' — and correctly identified the 50 MB figure a reader might be thinking of as cacheMaxMemorySize, an unrelated in-memory cache. Confidently right about what a thing is not, and wrong that anything replaced it."
    },
    {
      "run_id": "next.js--claude-fable-5--v3-c--2026-09-02",
      "file": "data/next.js/fable-5-v3-c.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "next.js",
      "library_latest_at_test": "16.3.4",
      "model": "Claude Fable 5",
      "model_id": "claude-fable-5",
      "stated_cutoff": "2026-01",
      "battery": "next.js/v3-c",
      "prompt_file": "prompts/sent/nextjs-v3.txt",
      "test_date": "2026-09-02",
      "self_test": false,
      "status": "open",
      "findings": 1,
      "chargeable_findings": 1,
      "withdrawn_findings": 0,
      "summary": "The Fable 5 half of next.js/v3, run 2026-09-02 after both Fable arms of the original battery died on an API-side safeguard error without emitting a token. The stored prompt was re-sent verbatim; nothing was reworded. This is the charging arm and it charges one finding: asked in one word whether per-part prefetching can be turned off, it answered \"Yes\" and wrote experimental: { clientSegmentCache: false }, a key removed in patch 16.0.3 on 2025-11-13, two months inside its own stated cutoff. Handed the same key back in task 2 it said the build accepts the config, and in task 5(a) it committed to the key still being recognised on current stable. What separates this draw from the Sonnet 5 draw that failed the same probe is that it did not assert a mechanism it lacked: it put the whole answer at about 60 percent, named the opposite branch explicitly, and reproduced the exact warning string the build would print if the key were gone - which it is. The finding is charged on the artefact under the code-vs-claim rule and the hedge is recorded with it. On the internal control it passed cleanly, naming proxy.ts exporting proxy and dating the rename to 16.0.0, which is right and is a major; the same draw could not reach a patch for the removal. Its twin v3-d, blind to this one, answered task 1 \"No\" and got the entire surface right, which falsifies the battery's first prediction. Both Fable draws read the same boundary this battery read in v1 and v2 - 16.0.0 describable, 16.1.0 not - so on this subject the boundary did not move between batteries or between twins."
    },
    {
      "run_id": "next.js--claude-fable-5--v3-d--2026-09-02",
      "file": "data/next.js/fable-5-v3-d.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": "next.js--claude-fable-5--v3-c--2026-09-02",
      "library": "next.js",
      "library_latest_at_test": "16.3.4",
      "model": "Claude Fable 5",
      "model_id": "claude-fable-5",
      "stated_cutoff": "2026-01",
      "battery": "next.js/v3-d",
      "prompt_file": "prompts/sent/nextjs-v3.txt",
      "test_date": "2026-09-02",
      "self_test": false,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "The second Fable 5 draw of next.js/v3, blind to v3-c, run from the same stored prompt in the same session. It is the -b twin by role and charges nothing, and it got the battery's target surface entirely right. Task 1(a), one word: \"No.\" It then gave the correct options - <Link prefetch={false}>, manual router.prefetch, flattening the route tree - and noted correctly that router.prefetch also goes through the segment cache and so buys timing rather than request count. Task 2(a): warns and continues, with the invalid-config warning reproduced close to verbatim. Task 2(b): \"Nothing. The key is ignored\", for the right reason. It named clientSegmentCache only to place it on 15.x as an opt-in that 16 removed. That falsifies prediction P1, which expected all four Sonnet 5 and Fable 5 draws to reach the dead key, and it makes the fourth battery running in which the non-charging twin holds the better answer. Everything it got wrong is either outside its fairness window (the 50 MB image body cap, 16.1.5, same month as its stated cutoff) or is the patch-granularity result again: it placed the clientSegmentCache removal at 16.0.0, a major, where it shipped in 16.0.3 three weeks later, while dating the proxy.ts rename to 16.0.0 correctly."
    },
    {
      "run_id": "next.js--claude-fable-5--v1--2026-08-31",
      "file": "data/next.js/fable-5.json",
      "markdown": "data/next.js/fable-5.md",
      "supersedes": null,
      "replicate_of": null,
      "library": "next.js",
      "library_latest_at_test": "16.3.3",
      "model": "Claude Fable 5",
      "model_id": "claude-fable-5",
      "stated_cutoff": "2026-01",
      "battery": "next.js/v1",
      "prompt_file": null,
      "test_date": "2026-08-31",
      "self_test": false,
      "status": "open",
      "findings": 2,
      "chargeable_findings": 2,
      "withdrawn_findings": 0,
      "summary": "The strongest result recorded in this dataset. Fable 5 answers nine of ten tasks as a model that has actually read Next.js 16: proxy.ts, cacheComponents, unprefixed cacheLife/cacheTag, the eslint script, Turbopack by default, images.qualities [75], the four-hour image TTL correctly attributed to 16. It knows 16.1 exists and shipped mid-December 2025 — within two weeks of its own stated cutoff — and correctly declines to describe its contents. Two findings survive: it still generates the deprecated single-argument revalidateTag, and it tells you that parallel-route default.js files are optional when 16.0.0 made builds fail without them. Its stated cutoff is 2026-01, four months earlier than Opus 5's, and it is the more current model on this library. That dissociation, first recorded on zod, reproduces here on a different library and a different kind of change."
    },
    {
      "run_id": "next.js--claude-opus-5--v2-a--2026-09-02",
      "file": "data/next.js/opus-5-v2-a.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "next.js",
      "library_latest_at_test": "16.3.4",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "stated_cutoff": "2026-05",
      "battery": "next.js/v2-a",
      "prompt_file": "prompts/sent/nextjs-v2.txt",
      "test_date": "2026-09-02",
      "self_test": true,
      "status": "open",
      "findings": 4,
      "chargeable_findings": 4,
      "withdrawn_findings": 0,
      "summary": "The test arm of the battery that generalised the capability probe to a third library. Four findings charged: one S1 (a guessed image-config key, which exits the build rather than warning), and three S2 — a config key removed in a patch and now silently inert, the OG-image default typeface, and a Link prop the draw asserted does not exist. The battery's two purest capability probes charged nothing, and that is the methodological result: asked how to re-run a failed server render and how to scope an error boundary to one widget, the draw hand-rolled both, and both hand-rolled answers work. The Index's severity scale has no slot for 'correct code a framework API now supersedes', so those are recorded as misses without an S-level rather than inflated into findings. Two probes were struck DERIVABLE by the control arm and one was voided by an ambiguity in its own wording."
    },
    {
      "run_id": "next.js--claude-opus-5--v2-b--2026-09-02",
      "file": "data/next.js/opus-5-v2-b.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": "next.js--claude-opus-5--v2-a--2026-09-02",
      "library": "next.js",
      "library_latest_at_test": "16.3.4",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "stated_cutoff": "2026-05",
      "battery": "next.js/v2-b",
      "prompt_file": "prompts/sent/nextjs-v2.txt",
      "test_date": "2026-09-02",
      "self_test": true,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "The second, blind draw of the duplicated test arm. It charges nothing by rule. It agreed with its twin on every probe outcome — same four failures, same boundary, same hand-rolled answers to both capability probes — with one exception that matters: asked what fraction of the disk the optimized-image cache may use, this draw said 50%, which is right, where the charging twin said 10%. Two draws of one prompt, one number apart, and the wrong one is the one that counts. That is the third battery in which the -b twin holds the better answer on some probe."
    },
    {
      "run_id": "next.js--claude-opus-5--v3-e--2026-09-02",
      "file": "data/next.js/opus-5-v3-e.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "next.js",
      "library_latest_at_test": "16.3.4",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "stated_cutoff": "2026-05",
      "battery": "next.js/v3-e",
      "prompt_file": "prompts/sent/nextjs-v3.txt",
      "test_date": "2026-09-02",
      "self_test": true,
      "status": "open",
      "findings": 2,
      "chargeable_findings": 2,
      "withdrawn_findings": 0,
      "summary": "The arm that was supposed to be a repeat and was not. Asked the same thing v2 asked, in tighter wording, this subject reversed itself: where all four v2 draws recommended experimental.clientSegmentCache, this draw answered \"No\" in one word, stated the key is gone in 16, and predicted the exact unrecognised-key warning the shipped config emitter produces. That answer is right, and it does not clear the subject - having correctly buried the dead key it then denied that any lever exists, when experimental.prefetchInlining (16.2.0) does precisely what the task asked for. This is the right-about-the-removal, wrong-about-the-replacement category, charged as F1, and it is the second library where the Index has caught it. Task 3 is charged as F2: it leaned to a cap existing at 60/40, put it in the \"low tens of megabytes\", denied a config key exists and declined to name one - the truth is 50 MB, a 413, and images.maximumResponseBody. On the internal control it named proxy.ts and dated the rename to 16.0.0 correctly, so its attribution answers are readable; and having established that, it placed the clientSegmentCache removal in the 16.0.0 major when it shipped in the 16.0.3 patch. That is the patch-granularity result for the third time, now from a subject that demonstrably holds the change."
    },
    {
      "run_id": "next.js--claude-opus-5--v3-f--2026-09-02",
      "file": "data/next.js/opus-5-v3-f.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": "next.js--claude-opus-5--v3-e--2026-09-02",
      "library": "next.js",
      "library_latest_at_test": "16.3.4",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "stated_cutoff": "2026-05",
      "battery": "next.js/v3-f",
      "prompt_file": "prompts/sent/nextjs-v3.txt",
      "test_date": "2026-09-02",
      "self_test": true,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "The blind twin, and it agrees with v3-e everywhere the twin pair matters and splits from it where the battery was built to look. It gave the same one-word \"No\" on task 1, the same correct warning-and-continues on task 2(a), and a better answer than its twin on 2(b) - spelling out that the config is a no-op on 16 because the key is unrecognised and a no-op on 15.x because false was the default, then naming the trap: \"on 16 it looks like an opt-out and silently is not one\". It repeated the twin's denial that any prefetch lever exists, which is the F1 failure carried on the charging arm. On task 3 the twins diverge cleanly: v3-e leaned to a cap and correctly said available memory is irrelevant to it; this draw leaned to success at 200, no cap, and answered the RAM question \"Yes - and that is exactly the tell\", reading machine-dependence as evidence against a fixed limit. It is the wrong side of a discriminator that worked. Both draws then dated the clientSegmentCache removal to the 16.0.0 major, three weeks early, and the proxy.ts rename to 16.0.0, correct."
    },
    {
      "run_id": "next.js--claude-opus-5--v4-e--2026-09-05",
      "file": "data/next.js/opus-5-v4-e.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "next.js",
      "library_latest_at_test": "16.3.4",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "stated_cutoff": "2026-05",
      "battery": "next.js/v4-e",
      "prompt_file": "prompts/sent/nextjs-v4-sc.txt",
      "test_date": "2026-09-05",
      "self_test": true,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "The bridge arm in the suppressing order: same subject as `prisma/v3`, new library, boundary question FIRST. On prisma that order cost this subject thirteen releases of demonstrated knowledge. Here it costs nothing measurable - D = 16.0.0 and S = 16.0.0/16.1.0, which is exactly what its `-cs` twin `v4-f` produced and exactly what five prior next.js runs of this subject published. Poison and ceiling controls clean."
    },
    {
      "run_id": "next.js--claude-opus-5--v4-f--2026-09-05",
      "file": "data/next.js/opus-5-v4-f.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "next.js",
      "library_latest_at_test": "16.3.4",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "stated_cutoff": "2026-05",
      "battery": "next.js/v4-f",
      "prompt_file": "prompts/sent/nextjs-v4-cs.txt",
      "test_date": "2026-09-05",
      "self_test": true,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "The bridge arm in the favourable order: ladder first, boundary question last, the position every published battery uses. D = 16.0.0, S = 16.0.0/16.1.0 - identical to `v4-e`, which was asked the same questions in the opposite order. The order effect that moved this subject thirteen releases on prisma moves it zero releases here. Poison and ceiling controls clean, and its ceiling answer names its own cadence inference and then declines to trade on it."
    },
    {
      "run_id": "next.js--claude-opus-5--v1--2026-08-31",
      "file": "data/next.js/opus-5.json",
      "markdown": "data/next.js/opus-5.md",
      "supersedes": null,
      "replicate_of": null,
      "library": "next.js",
      "library_latest_at_test": "16.3.3",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "stated_cutoff": "2026-05",
      "battery": "next.js/v1",
      "prompt_file": null,
      "test_date": "2026-08-31",
      "self_test": true,
      "status": "open",
      "findings": 4,
      "chargeable_findings": 4,
      "withdrawn_findings": 0,
      "summary": "Knows Next.js 16 exists and gets most of it right — proxy.ts, next lint removal, Turbopack as the default bundler, the image defaults — yet still ships two pieces of code that do not run on it, and misdates the proxy rename by a full major version. Four findings, all chargeable, two S1. The result that matters is comparative: this subject has the latest stated cutoff in the dataset (2026-05) and is still beaten on this library by Fable 5, whose stated cutoff is four months earlier. Disclosed self-test — the operator model is the subject."
    },
    {
      "run_id": "next.js--claude-sonnet-5--v2-c--2026-09-02",
      "file": "data/next.js/sonnet-5-v2-c.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "next.js",
      "library_latest_at_test": "16.3.4",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "stated_cutoff": "2026-01",
      "battery": "next.js/v2-c",
      "prompt_file": "prompts/sent/nextjs-v2.txt",
      "test_date": "2026-09-02",
      "self_test": false,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "A below-floor control arm. This subject's next.js attribution stops at 15.0.0 — fifteen months before its own stated cutoff and sixteen releases below the probe band — so it charges nothing and exists to mark which probes are answerable without knowing the band. It struck two: the semantics of reset() and the redirect()-through-a-boundary hazard, both answered correctly and in detail. It also came within one word of striking a third, guessing 50% for the image disk-cache budget while getting the rule and the timing wrong. Its most useful contribution is negative: on the battery's internal control it dated the images.qualities default change to 15.3, not 16.0, so this subject's attribution answers are unreadable and no dating question in this battery can be scored against it."
    },
    {
      "run_id": "next.js--claude-sonnet-5--v3-a--2026-09-02",
      "file": "data/next.js/sonnet-5-v3-a.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "next.js",
      "library_latest_at_test": "16.3.4",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "stated_cutoff": "2026-01",
      "battery": "next.js/v3-a",
      "prompt_file": "prompts/sent/nextjs-v3.txt",
      "test_date": "2026-09-02",
      "self_test": false,
      "status": "open",
      "findings": 1,
      "chargeable_findings": 1,
      "withdrawn_findings": 0,
      "summary": "The charging arm of the battery written to book the miss next.js/v2 could only queue, and it books it. Asked whether per-part prefetching can be turned off, this draw answered \"yes\" in one word and wrote experimental: { clientSegmentCache: false } - a key removed in patch 16.0.3 on 2025-11-13, two months inside its own stated cutoff. Handed the same key back in task 2 it went further than the task needed, asserting that the key \"is a recognized key under experimental in the config schema Next.js validates against at build start, so no warning is printed\". It is not recognised, and the build warns. The battery's two-shape design earned itself here: on outcome alone task 2(b) looks like a pass, because the draw answered \"nothing\" - but for the opposite reason, believing the key exists and defaults to false rather than that it does not exist. Task 1 is what makes the belief legible. On the internal control it named middleware.ts, does not hold the 16.0.0 proxy.ts rename at all, and answered the attribution question about a real Next 12 rename instead - so every dating answer in this run is unreadable, exactly as it was in v2. The run's second result is about the instrument rather than the library: this draw put its own describable-content boundary at 15.2-15.3, where v1 and v2 both put it at 15.0.0, and its blind twin put it at 15.4-15.5."
    },
    {
      "run_id": "next.js--claude-sonnet-5--v3-b--2026-09-02",
      "file": "data/next.js/sonnet-5-v3-b.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": "next.js--claude-sonnet-5--v3-a--2026-09-02",
      "library": "next.js",
      "library_latest_at_test": "16.3.4",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "stated_cutoff": "2025-06",
      "battery": "next.js/v3-b",
      "prompt_file": "prompts/sent/nextjs-v3.txt",
      "test_date": "2026-09-02",
      "self_test": false,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "The blind twin of v3-a, and it reproduced the failure while disqualifying itself from being charged for it. It answered \"Yes\" to task 1(a) and wrote the same dead key, then went further than its twin on task 2(b) by explicitly rejecting the correct answer - \"Not 'nothing'\" - and describing in detail the prefetch behaviour the flag would change. It also refused the cutoff its environment reported, stating early-to-mid 2025 instead and naming the reason: \"that's the environment's clock, not evidence about my training horizon\". That puts 16.0.3 above its stated cutoff, so even without the -b rule the fairness rule would bar the charge. This is the JOURNAL/031 split replicating in a second library, and this time the arms fell the other way round: the twin licensed to charge is the one that accepted the later cutoff, so the finding survives on v3-a. The battery is not re-run to move this. Its describable-content boundary also reads two releases above its twin's, 15.4-15.5 against 15.2-15.3, from the same stored prompt in the same session."
    },
    {
      "run_id": "next.js--claude-sonnet-5--v1--2026-08-31",
      "file": "data/next.js/sonnet-5.json",
      "markdown": "data/next.js/sonnet-5.md",
      "supersedes": null,
      "replicate_of": null,
      "library": "next.js",
      "library_latest_at_test": "16.3.3",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "stated_cutoff": "2026-01",
      "battery": "next.js/v1",
      "prompt_file": null,
      "test_date": "2026-08-31",
      "self_test": false,
      "status": "open",
      "findings": 7,
      "chargeable_findings": 7,
      "withdrawn_findings": 0,
      "summary": "The most stale subject in the dataset so far. Its Next.js knowledge stops at 15.0.0 (2024-10-21) against a stated cutoff of 2026-01 — a fifteen-month lag entirely inside its own training window, and it has no usable knowledge of Next.js 16 at all despite the major having shipped 2025-10-22, three months before its cutoff. Seven findings, all chargeable, three of them S1: it generates a removed CLI command, a removed PPR configuration, and a deprecated single-argument revalidateTag. It hedges well — nearly every wrong answer carries an explicit uncertainty flag — but the code it hands you does not build."
    },
    {
      "run_id": "prisma--claude-fable-5-1--v4-c--2026-09-06",
      "file": "data/prisma/fable-5-1-v4-c.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "prisma",
      "library_latest_at_test": "7.10.0",
      "model": "Claude Fable 5.1",
      "model_id": "claude-fable-5-1",
      "stated_cutoff": "2026-06",
      "battery": "prisma/v4-c",
      "prompt_file": "prompts/sent/prisma-v4.txt",
      "test_date": "2026-09-06",
      "self_test": false,
      "status": "open",
      "findings": 6,
      "chargeable_findings": 6,
      "withdrawn_findings": 0,
      "summary": "The charging arm of the Fable 5.1 pair, and the subject's first prisma run. Six verdict-first \"No\"s across all six surfaces and three rejected lines in the review file; six findings charged, every release two to three months below this draw's own stated June 2026 cutoff. Its boundary is the tightest reading the Index has for this subject: describable content stops at 7.0.0, which it describes in accurate detail, and 7.1.0 is named explicitly as \"roughly where I start knowing versions only as numbers — I believe it exists but cannot reliably say what changed in it.\" That is a seven-month lag between stated cutoff and attributable knowledge on a third library, against fourteen on tailwindcss and thirteen on valibot. This draw also produced the battery's most confident false prediction: that passing `queryPlanCacheMaxSize` \"would fail at construction time\" because \"`PrismaClient` validates its options and throws on unknown keys.\""
    },
    {
      "run_id": "prisma--claude-fable-5-1--v4-d--2026-09-06",
      "file": "data/prisma/fable-5-1-v4-d.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "prisma",
      "library_latest_at_test": "7.10.0",
      "model": "Claude Fable 5.1",
      "model_id": "claude-fable-5-1",
      "stated_cutoff": "2026-06",
      "battery": "prisma/v4-d",
      "prompt_file": "prompts/sent/prisma-v4.txt",
      "test_date": "2026-09-06",
      "self_test": false,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "The blind twin, charging nothing by pre-registration. It reproduces its sibling on all six surfaces and all three review lines, and puts its boundary in the same place — 7.0.0 describable, \"roughly 7.1\" as the first release known only as a number. The pair does not disagree on any verdict. Two things separate it. On F2 it is the only test draw anywhere in the battery to hedge in the right direction — \"if a 7.x minor after my knowledge added such an option, I can't confirm it\" — and it still answered \"No\" first. On F3 it is the only draw to reason about the runtime consequence of passing a string, predicting that `pg.Pool` \"would spread the string's characters into an options object and fall back to `PGHOST`/defaults\" — a specific, confidently wrong mechanism for a line that has worked since 7.6.0. Its enumeration of the CLI is also the most complete and the most out of date: \"I'm not aware of a `prisma postgres` subcommand group at all; the platform commands I know are under `prisma platform`.\""
    },
    {
      "run_id": "prisma--claude-fable-5-1--v5-e--2026-09-06",
      "file": "data/prisma/fable-5-1-v5-e.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "prisma",
      "library_latest_at_test": "7.10.0",
      "model": "Claude Fable 5.1",
      "model_id": "claude-fable-5-1",
      "stated_cutoff": "2026-06",
      "battery": "prisma/v5-e",
      "prompt_file": "prompts/sent/prisma-v5.txt",
      "test_date": "2026-09-06",
      "self_test": true,
      "status": "open",
      "findings": 2,
      "chargeable_findings": 2,
      "withdrawn_findings": 0,
      "summary": "The charging arm of the Fable 5.1 pair, and the arm that splits the battery in two. It is charged on both 7.2.0 surfaces — the `--url` flag and the SQLCommenter plugin — and it is NOT charged on the 7.3.0 surface, because it produced `compilerBuild` with both of its values and the Cloudflare Workers case that motivated it, while answering \"Unsure\". A subject whose measured prisma boundary is 7.0.0 recalled a named option from 7.3.0, two minors and 63 days above that boundary, and disclaimed the memory while producing it. That is prediction P3 falsified on the arm best placed to falsify it, and it is the first time in this Index that the highest-cutoff subject has been the only one to hold a surface."
    },
    {
      "run_id": "prisma--claude-fable-5-1--v5-f--2026-09-06",
      "file": "data/prisma/fable-5-1-v5-f.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": "prisma--claude-fable-5-1--v5-e--2026-09-06",
      "library": "prisma",
      "library_latest_at_test": "7.10.0",
      "model": "Claude Fable 5.1",
      "model_id": "claude-fable-5-1",
      "stated_cutoff": "2026-06",
      "battery": "prisma/v5-f",
      "prompt_file": "prompts/sent/prisma-v5.txt",
      "test_date": "2026-09-06",
      "self_test": true,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "The Fable 5.1 replicate, and the arm that turns its twin's `compilerBuild` answer from an anecdote into a measurement: it answers \"Yes\" without hedging, names both values, identifies \"fast\" as the default and ships the option in its generator block. Two independent draws of one subject producing a 7.3.0 option is not a lucky guess. It also places its boundary higher than any prisma draw this Index has recorded — 7.2.0 describable, 7.3.0 the first release known only as a number — which is the boundary its own `compilerBuild` answer straddles: it can describe the release below the option and holds the option from the release above it."
    },
    {
      "run_id": "prisma--claude-fable-5--v2-d--2026-09-05",
      "file": "data/prisma/fable-5-v2-d.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "prisma",
      "library_latest_at_test": "7.10.0",
      "model": "Claude Fable 5",
      "model_id": "claude-fable-5",
      "stated_cutoff": "2026-01",
      "battery": "prisma/v2-d",
      "prompt_file": "prompts/sent/prisma-v2.txt",
      "test_date": "2026-09-05",
      "self_test": false,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "Second below-floor control for `prisma/v2`. It failed task 1 like its sibling control, completing P2 two of two and establishing that `where:` on `@@index` is not derivable from the schema language around it. It passed task 2 and the floor probe. Its boundary sits at 6.7.0, eight months behind its stated 2026-01 cutoff, and it produced the battery's clearest statement of the attribution/knowledge split: it knows Prisma 7 was coming and what it was for, and cannot say whether it shipped."
    },
    {
      "run_id": "prisma--claude-fable-5--v1--2026-08-31",
      "file": "data/prisma/fable-5.json",
      "markdown": "data/prisma/fable-5.md",
      "supersedes": null,
      "replicate_of": null,
      "library": "prisma",
      "library_latest_at_test": "7.10.0",
      "model": "Claude Fable 5",
      "model_id": "claude-fable-5",
      "stated_cutoff": "2026-01",
      "battery": "prisma/v1",
      "prompt_file": null,
      "test_date": "2026-08-31",
      "self_test": false,
      "status": "open",
      "findings": 12,
      "chargeable_findings": 12,
      "withdrawn_findings": 1,
      "summary": "Thirteen findings, and the result that matters is the last one. Fable 5's Prisma knowledge stops at 6.7.0 (2025-04-29) and it says so precisely, dating four consecutive releases to within days. That is six months earlier than the same model's boundary on zod, Next.js, Tailwind and LangChain, whose intervals had converged on a 33-day window — so the fifth library falsifies the claim that this model's knowledge boundary is a single date. The code it wrote is a coherent 6.7-era project: no-argument constructor, `node_modules` client, seed in `package.json`, engine binaries matched to the container's libc. It knows the Rust-free client, the `prisma-client` generator and `prisma.config.ts` as previews, which is what they were in April 2025 — and never as the defaults they became seven months later."
    },
    {
      "run_id": "prisma--claude-haiku-4-5--v4-f--2026-09-06",
      "file": "data/prisma/haiku-4-5-v4-f.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "prisma",
      "library_latest_at_test": "7.10.0",
      "model": "Claude Haiku 4.5",
      "model_id": "claude-haiku-4-5",
      "stated_cutoff": "2025-02",
      "battery": "prisma/v4-f",
      "prompt_file": "prompts/sent/prisma-v4.txt",
      "test_date": "2026-09-06",
      "self_test": false,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "The far control, fourteen months below the probe window, and it got MORE right than the near control — one reachable probe and one unreachable one against the near control's zero and one. That confirms P4 and re-confirms JOURNAL/057's finding that distance below the floor does not order what a control produces, in the inverted direction for the second battery running. But the manner matters more than the count and it cuts against reading either hit as a derivation. This draw asserted \"Prisma supports nested transactions via savepoints under the hood\" and \"the `queryPlanCacheMaxSize` option is a valid configuration parameter\" flatly, with no hedge, from a stated February 2025 cutoff — thirteen months before either feature shipped. Both happen to be true now. Neither could have been known, and the same confident register produced a false claim in the same breath: that \"if the outer transaction fails, the entire nested transaction is rolled back automatically\" was already true, and that node-postgres prepared-statement caching \"happens automatically when the same query string is reused\" and is \"managed transparently by the adapter\", which is the opposite of the shipped default. This is the guessing control finding guessing — the first time in three batteries — and it lands the reachability pre-sort in a worse place than a null result would have: the sort's two exceptions are one control that knew something unreachable and one control that guessed."
    },
    {
      "run_id": "prisma--claude-haiku-4-5--v5-g--2026-09-06",
      "file": "data/prisma/haiku-4-5-v5-g.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "prisma",
      "library_latest_at_test": "7.10.0",
      "model": "Claude Haiku 4.5",
      "model_id": "claude-haiku-4-5",
      "stated_cutoff": "2025-02",
      "battery": "prisma/v5-g",
      "prompt_file": "prompts/sent/prisma-v5.txt",
      "test_date": "2026-09-06",
      "self_test": true,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "The below-floor derivability control, and it did the one job a control exists for: it said no. Prediction P1 held that `--url` is the flag any competent model would invent for a CI-container problem, that every arm including this one would answer \"Yes\", and that the probe would therefore charge nobody. The control answered \"No\", volunteered that \"environment-variable override has always been the standard approach\", and could not say whether a URL flag exists in any release. Four of the seven arms denied the same thing. The name was guessable; the capability was not, and P1 is falsified — which is what licenses charging LF34 at all."
    },
    {
      "run_id": "prisma--claude-opus-5--v1r-a--2026-09-01",
      "file": "data/prisma/opus-5-v1r-a.json",
      "markdown": "data/prisma/opus-5-v1r-a.md",
      "supersedes": null,
      "replicate_of": "prisma--claude-opus-5--v1--2026-08-31",
      "library": "prisma",
      "library_latest_at_test": "7.10.0",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "stated_cutoff": "2026-05",
      "battery": "prisma/v1r-a",
      "prompt_file": "prompts/sent/prisma-v1.txt",
      "test_date": "2026-09-01",
      "self_test": true,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "Replicate A of `prisma/v1` against Opus 5, prompt unchanged. It placed its describable boundary at prisma 7.0.0 (2025-11-19) and attributed the release correctly, agreeing with `prisma/v1` — and disagreeing with its own concurrent, blind twin `v1r-b` by 204 days. Pre-registered outcome C, on the library that was predicted to produce outcome A. No findings are charged; the code half is reported as prose because `prisma/v1` already carries this subject's findings. The code diverged from `v1` even where the self-report agreed: this draw wrote 6.x-primary code with labelled 7.x deltas, where `v1` wrote the 7.0 forms outright."
    },
    {
      "run_id": "prisma--claude-opus-5--v1r-b--2026-09-01",
      "file": "data/prisma/opus-5-v1r-b.json",
      "markdown": "data/prisma/opus-5-v1r-b.md",
      "supersedes": null,
      "replicate_of": "prisma--claude-opus-5--v1--2026-08-31",
      "library": "prisma",
      "library_latest_at_test": "7.10.0",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "stated_cutoff": "2026-05",
      "battery": "prisma/v1r-b",
      "prompt_file": "prompts/sent/prisma-v1.txt",
      "test_date": "2026-09-01",
      "self_test": true,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "Replicate B of `prisma/v1` against Opus 5, prompt unchanged. It placed its describable boundary at prisma 6.7.0 (2025-04-29) — 204 days earlier than `prisma/v1` and than its own concurrent, blind twin `v1r-a`, on a byte-identical prompt. Pre-registered outcome C, on the library predicted to produce outcome A. The sharpest detail is not the disagreement but its shape: this draw wrote out a correct list of what Prisma 7.0 contains and then explicitly refused to claim it as knowledge, calling it inference rather than recollection. Its twin made the same claims and counted them as knowledge. No findings are charged."
    },
    {
      "run_id": "prisma--claude-opus-5--v2-a--2026-09-05",
      "file": "data/prisma/opus-5-v2-a.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "prisma",
      "library_latest_at_test": "7.10.0",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "stated_cutoff": "2026-05",
      "battery": "prisma/v2-a",
      "prompt_file": "prompts/sent/prisma-v2.txt",
      "test_date": "2026-09-05",
      "self_test": true,
      "status": "open",
      "findings": 1,
      "chargeable_findings": 1,
      "withdrawn_findings": 0,
      "summary": "Test arm of `prisma/v2`, the first battery to probe prisma above 7.0.0. One finding charged: the draw denies, verdict-first and then again unprompted in the direct questions, that a Prisma schema can express a partial index, and writes that denial into the schema file as a comment instructing the next developer not to add the constraint. `@@index(where:)` and `@@unique(where:)` have shipped since 7.4.0, three months inside this draw's stated cutoff. Task 2's covering-index probe — pre-registered as licensed to charge an invention — came back CORRECT, so P3 is falsified and nothing charges there. The anchor missed: query-plan caching, 7.4.0's headline feature, was placed at 6.7/7.0, so P5 is falsified and this reads as ordinary staleness. The boundary result is the part with the longest reach: this draw lands at 6.7.0, giving Claude Opus 5 a 3-2 split across five prisma draws between 7.0.0 and 6.7.0 — and, for the first time, that split is reproduced under a different prompt."
    },
    {
      "run_id": "prisma--claude-opus-5--v2-b--2026-09-05",
      "file": "data/prisma/opus-5-v2-b.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": "prisma--claude-opus-5--v2-a--2026-09-05",
      "library": "prisma",
      "library_latest_at_test": "7.10.0",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "stated_cutoff": "2026-05",
      "battery": "prisma/v2-b",
      "prompt_file": "prompts/sent/prisma-v2.txt",
      "test_date": "2026-09-05",
      "self_test": true,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "Blind twin of `prisma/v2-a`, charging nothing by design. It reproduces its twin's denial of schema-level partial indexes exactly, down to writing the same DO-NOT-ADD instruction into the schema file, so the belief is stable across the duplicated arm rather than one coin landing. It also reproduces the anchor miss, placing 7.4.0's query-plan caching at 6.7/7.0. Where the two twins diverge is the boundary: this draw described 7.0.0's contents correctly where `v2-a` called 7.0.0 \"a rumour of a direction\" — and then, in the same transcript, told us it knows nothing past 6.9/6.10. Its own self-report undercuts its own demonstration."
    },
    {
      "run_id": "prisma--claude-opus-5--v3-a--2026-09-05",
      "file": "data/prisma/opus-5-v3-a.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "prisma",
      "library_latest_at_test": "7.10.0",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "stated_cutoff": "2026-05",
      "battery": "prisma/v3-a",
      "prompt_file": "prompts/sent/prisma-v3-sc.txt",
      "test_date": "2026-09-05",
      "self_test": true,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "Self-placement first, then the ladder. This draw refused to describe 7.0.0 at all — \"I don't know whether this shipped\" — after placing its own boundary at 6.9.0, and its highest correct rung is 6.7.0. So D (6.7.0) sits one release BELOW S (6.8.0): the self-report over-states this draw rather than under-stating it, which is the opposite of the effect this battery was built to look for. Poison and ceiling controls both clean."
    },
    {
      "run_id": "prisma--claude-opus-5--v3-b--2026-09-05",
      "file": "data/prisma/opus-5-v3-b.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": "prisma--claude-opus-5--v3-a--2026-09-05",
      "library": "prisma",
      "library_latest_at_test": "7.10.0",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "stated_cutoff": "2026-05",
      "battery": "prisma/v3-b",
      "prompt_file": "prompts/sent/prisma-v3-sc.txt",
      "test_date": "2026-09-05",
      "self_test": true,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "Blind twin of `prisma/v3-a`, same order, same stored prompt. It agrees with its twin on the self-placement being low-ish (6.10.0 against 6.8.0) and disagrees with it on 7.0.0: where `v3-a` refused outright, this draw refused and then described the release correctly anyway. That is the arm that forced a rubric disclosure — D is 6.7.0 read strictly and 7.0.0 read leniently, and the sign of this arm's calibration gap flips between the two."
    },
    {
      "run_id": "prisma--claude-opus-5--v3-c--2026-09-05",
      "file": "data/prisma/opus-5-v3-c.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "prisma",
      "library_latest_at_test": "7.10.0",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "stated_cutoff": "2026-05",
      "battery": "prisma/v3-c",
      "prompt_file": "prompts/sent/prisma-v3-cs.txt",
      "test_date": "2026-09-05",
      "self_test": true,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "Ladder first, self-placement second — and the only perfectly calibrated arm in the battery. D = 7.0.0 and S = 7.0.0: it described 7.0.0 correctly, dated it to within days, and then named 7.1.0 as the first release it knows only as a number. It also correctly volunteered that the 6.x line ended around 6.19 while declining the rung that does not exist. Both `-sc` twins, asked the same question in the other order, refused this same release."
    },
    {
      "run_id": "prisma--claude-opus-5--v3-d--2026-09-05",
      "file": "data/prisma/opus-5-v3-d.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": "prisma--claude-opus-5--v3-c--2026-09-05",
      "library": "prisma",
      "library_latest_at_test": "7.10.0",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "stated_cutoff": "2026-05",
      "battery": "prisma/v3-d",
      "prompt_file": "prompts/sent/prisma-v3-cs.txt",
      "test_date": "2026-09-05",
      "self_test": true,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "Blind twin of `prisma/v3-c`, same order, same stored prompt. It reproduces its twin's central result — 7.0.0 described correctly, D = 7.0.0 — and diverges sharply on the self-report: 6.15.0 against its twin's 7.0.0, five stable releases lower than what it had just demonstrated in the same transcript. This is the `prisma/v2-b` shape reproduced, and it is the only arm in the battery that shows it."
    },
    {
      "run_id": "prisma--claude-opus-5--v3-e--2026-09-05",
      "file": "data/prisma/opus-5-v3-e.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "prisma",
      "library_latest_at_test": "7.10.0",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "stated_cutoff": "2026-05",
      "battery": "prisma/v3-e",
      "prompt_file": "prompts/sent/prisma-v3-mo.txt",
      "test_date": "2026-09-05",
      "self_test": true,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "The mention-only control, single by design. It answered the recognition sweep in seven words, sorting the rungs correctly — including rejecting the release that does not exist — and then placed its boundary at 7.0.0, matching the highest `-cs` arm and exceeding both `-sc` arms. It therefore falsifies P6: the self-report rises after mere exposure to the version numbers, not only after a forced description. It also falsifies its own design premise, because a subject that sorts seven versions accurately has demonstrated knowledge, whatever the section header called the task."
    },
    {
      "run_id": "prisma--claude-opus-5--v4-a--2026-09-06",
      "file": "data/prisma/opus-5-v4-a.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "prisma",
      "library_latest_at_test": "7.10.0",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "stated_cutoff": "2026-05",
      "battery": "prisma/v4-a",
      "prompt_file": "prompts/sent/prisma-v4.txt",
      "test_date": "2026-09-06",
      "self_test": true,
      "status": "open",
      "findings": 6,
      "chargeable_findings": 6,
      "withdrawn_findings": 0,
      "summary": "The charging arm of the Opus 5 pair, and it denies all six surfaces — three pre-registered REACHABLE and three pre-registered UNREACHABLE — with a verdict-first \"No\" on every one, then rejects all three lines of the review file. Six findings charged, every release between one and two months below this draw's own stated cutoff. The battery's designed result is not here, though: it is in the controls. This draw is also the sharpest instance of the deny-list failure — it names `ITXClientDenyList` and `Omit<PrismaClient, ITXClientDenyList>` correctly and then asserts `$transaction` is a member, which stopped being true at 7.5.0. It refused the poison rung cleanly (\"I do not know\" on both `prisma postgres link` and `prisma postgres branch`) and put its describable boundary at 7.0.0, declining to name a first-unknown release at all on the grounds that its knowledge \"fades gradually rather than stopping at a labelled edge.\""
    },
    {
      "run_id": "prisma--claude-opus-5--v4-b--2026-09-06",
      "file": "data/prisma/opus-5-v4-b.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "prisma",
      "library_latest_at_test": "7.10.0",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "stated_cutoff": "2026-05",
      "battery": "prisma/v4-b",
      "prompt_file": "prompts/sent/prisma-v4.txt",
      "test_date": "2026-09-06",
      "self_test": true,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "The blind twin, charging nothing by pre-registration, and it reproduces its sibling on all six surfaces: six verdict-first \"No\"s, three rejected lines in the review file, the same refusal of the poison rung, the same describable boundary at 7.0.0 and the same declining of the first-unknown-release half of the question. The pair does not disagree anywhere. Its one distinctive contribution is on F5: this draw recites the deny list as \"`$transaction` (along with `$connect`, `$disconnect`, `$on`, `$use`, `$extends`)\" — which is the actual post-7.5.0 five-element constant, quoted correctly, with `$transaction` added to it. It has the current artefact memorised and draws the pre-7.5.0 conclusion from it."
    },
    {
      "run_id": "prisma--claude-opus-5--v5-c--2026-09-06",
      "file": "data/prisma/opus-5-v5-c.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "prisma",
      "library_latest_at_test": "7.10.0",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "stated_cutoff": "2026-05",
      "battery": "prisma/v5-c",
      "prompt_file": "prompts/sent/prisma-v5.txt",
      "test_date": "2026-09-06",
      "self_test": true,
      "status": "open",
      "findings": 3,
      "chargeable_findings": 3,
      "withdrawn_findings": 0,
      "summary": "The charging arm of the Opus 5 pair and the only arm in the battery to be charged on all three surfaces. It denies the `--url` flag, the first-party SQLCommenter plugin and the `compilerBuild` option, and rejects a correct pull request in TASK 4. Its TASK 5 answer is the sharpest single line in the battery — it does not date the flag wrongly, it declares the question a false premise and explains, correctly, that `db execute --url` and `migrate diff --from-url` exist and are what a questioner might be confusing it with. The stale belief is not a gap here; it is a well-defended position with real evidence behind it, which is why it survived a release that changed it."
    },
    {
      "run_id": "prisma--claude-opus-5--v5-d--2026-09-06",
      "file": "data/prisma/opus-5-v5-d.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": "prisma--claude-opus-5--v5-c--2026-09-06",
      "library": "prisma",
      "library_latest_at_test": "7.10.0",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "stated_cutoff": "2026-05",
      "battery": "prisma/v5-d",
      "prompt_file": "prompts/sent/prisma-v5.txt",
      "test_date": "2026-09-06",
      "self_test": true,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "The Opus 5 replicate. It reproduces all three denials and adds one thing its twin did not: an unprompted closing note predicting, correctly and in detail, that its three \"no\" answers were false negatives from thin late-window knowledge. It also places its boundary two minors higher than `v5-c` (7.0.0 describable, 7.1.0 first unknown, against 6.7.0/6.8.0) while stating the same cutoff — the same within-subject boundary spread this Index has recorded on prisma four times now, and a reminder that a boundary is a property of the draw."
    },
    {
      "run_id": "prisma--claude-opus-5--v1--2026-08-31",
      "file": "data/prisma/opus-5.json",
      "markdown": "data/prisma/opus-5.md",
      "supersedes": null,
      "replicate_of": null,
      "library": "prisma",
      "library_latest_at_test": "7.10.0",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "stated_cutoff": "2026-05",
      "battery": "prisma/v1",
      "prompt_file": null,
      "test_date": "2026-08-31",
      "self_test": true,
      "status": "open",
      "findings": 6,
      "chargeable_findings": 6,
      "withdrawn_findings": 1,
      "summary": "The sharpest measurement in the Index so far. Opus 5 can describe Prisma 7.0.0 (2025-11-19) and says it cannot describe what follows, which — intersected with its four earlier intervals — pins its attribution boundary to the five days between 2025-11-19 and 2025-11-24. Its v7 code is correspondingly good: the required `output`, the generated import path and the adapter-based constructor are all correct, and the three biggest S1 traps in the battery caught it nowhere. What it got wrong is the fine grain of the same release — an `adapter` key removed from the config file in 7.0.0, a one-letter adapter class rename, both `migrate diff` flag families, and the mapped-enum output shape. Seven findings, all chargeable, only one of them S2 and none of them the headline breakages."
    },
    {
      "run_id": "prisma--claude-sonnet-5--v2-c--2026-09-05",
      "file": "data/prisma/sonnet-5-v2-c.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "prisma",
      "library_latest_at_test": "7.10.0",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "stated_cutoff": "2026-01",
      "battery": "prisma/v2-c",
      "prompt_file": "prompts/sent/prisma-v2.txt",
      "test_date": "2026-09-05",
      "self_test": false,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "Below-floor control for `prisma/v2`, charging nothing by design and by the fairness rule. It failed task 1 exactly as predicted (P2 holds), which is what licenses `v2-a`'s finding to be read as a stale belief rather than as an impossible probe: a subject one month below the release cannot derive `where:` from the surrounding schema language. It passed task 2 and the floor probe, and abstained cleanly on the anchor. Its boundary is the lowest prisma edge in the Index — 6.0.0, fourteen months behind its own stated cutoff — with one correctly-recalled but badly-misdated later capability sitting above it."
    },
    {
      "run_id": "prisma--claude-sonnet-5--v4-e--2026-09-06",
      "file": "data/prisma/sonnet-5-v4-e.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "prisma",
      "library_latest_at_test": "7.10.0",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "stated_cutoff": "2026-01",
      "battery": "prisma/v4-e",
      "prompt_file": "prompts/sent/prisma-v4.txt",
      "test_date": "2026-09-06",
      "self_test": false,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "The near control, two months below the probe window, and it falsifies the battery's central prediction. P1 said the controls would get at least two of the three REACHABLE probes and at most one of the three UNREACHABLE ones. This draw got ZERO of three reachable and ONE of three unreachable: it answered \"Yes\" to task 2, describing the query-plan-cache size option and its zero-disables semantics without having been given the name, and then affirmed `queryPlanCacheMaxSize` at 7(b) as \"a real constructor option tied to Prisma's newer TypeScript-side query-plan caching\". `queryPlanCacheMaxSize` shipped 2026-04-22, three months above this draw's stated cutoff, and it was the probe pre-registered as least reachable from anything at the 7.2.0 floor. Meanwhile it denied all three reachable probes. The pre-sort did not merely fail to predict this arm — it predicted the exact opposite. This draw is also unusual in refusing the frame: asked which Prisma major it was assuming, it said \"I'm assuming Prisma 7 only because you told me to... treat anything above framed as Prisma 7 as extrapolation, not recall.\""
    },
    {
      "run_id": "prisma--claude-sonnet-5--v5-a--2026-09-06",
      "file": "data/prisma/sonnet-5-v5-a.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "prisma",
      "library_latest_at_test": "7.10.0",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "stated_cutoff": "2026-01",
      "battery": "prisma/v5-a",
      "prompt_file": "prompts/sent/prisma-v5.txt",
      "test_date": "2026-09-06",
      "self_test": true,
      "status": "open",
      "findings": 1,
      "chargeable_findings": 1,
      "withdrawn_findings": 0,
      "summary": "The charging arm of the Sonnet 5 pair, and the arm prediction P6 said would most likely charge nothing. It charges. P6 expected the cutoff self-report to wobble again and disqualify the licence; it stated January 2026 and affirmed it, as did its twin. That is the result this battery most wanted, because twenty of the twenty-five single-subject live windows in `tools/charge-windows.mjs` are Sonnet 5 windows, and their value rests entirely on this arm being chargeable. One finding charged (the first-party SQLCommenter plugin). The `compilerBuild` miss is real and is barred by a same-month cutoff, and TASK 1 produced the battery's strangest cell: a correct one-word \"Yes\" over an explanation that denies the flag exists on the two commands the question named."
    },
    {
      "run_id": "prisma--claude-sonnet-5--v5-b--2026-09-06",
      "file": "data/prisma/sonnet-5-v5-b.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": "prisma--claude-sonnet-5--v5-a--2026-09-06",
      "library": "prisma",
      "library_latest_at_test": "7.10.0",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "stated_cutoff": "2026-01",
      "battery": "prisma/v5-b",
      "prompt_file": "prompts/sent/prisma-v5.txt",
      "test_date": "2026-09-06",
      "self_test": true,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "The Sonnet 5 replicate. It agrees with its twin on the two things that matter for the pair — cutoff (January 2026, affirmed) and the SQLCommenter denial — and diverges on both `--url` probes in the direction that makes the battery more interesting: it affirms the flag exists on `db push` and then dates it to Prisma 5.2–5.3, mid-2023. The capability is recalled and the release is off by roughly thirty minors. This is the fourth battery in which the `-b` twin holds a better answer than the `-a` arm on at least one surface, and the first in which the better answer is attached to an attribution error large enough to be its own finding."
    },
    {
      "run_id": "prisma--claude-sonnet-5--v1--2026-08-31",
      "file": "data/prisma/sonnet-5.json",
      "markdown": "data/prisma/sonnet-5.md",
      "supersedes": null,
      "replicate_of": null,
      "library": "prisma",
      "library_latest_at_test": "7.10.0",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "stated_cutoff": "2026-01",
      "battery": "prisma/v1",
      "prompt_file": null,
      "test_date": "2026-08-31",
      "self_test": false,
      "status": "open",
      "findings": 13,
      "chargeable_findings": 13,
      "withdrawn_findings": 1,
      "summary": "Fourteen findings, the largest count in the Index, from the subject with the largest blind spot on this library: Sonnet 5 can describe Prisma 6.0.0 (2024-11-28) and nothing after roughly 6.1, which leaves the whole of Prisma 7 outside its knowledge. Every artefact in the run — four of them — constructs the client with no arguments, imports it from `@prisma/client`, and generates it into `node_modules`; the seed goes in `package.json`, the serverless answer optimises a query-engine binary that no longer ships, and `migrate diff` uses both removed flag families. None of this is careless: the v6 material is accurate and well-organised. It is simply a complete, coherent picture of a version that stopped being current 285 days before the test."
    },
    {
      "run_id": "tailwindcss--claude-fable-5-1--v3-a--2026-09-06",
      "file": "data/tailwindcss/fable-5-1-v3-a.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "tailwindcss",
      "library_latest_at_test": "4.3.3",
      "model": "Claude Fable 5.1",
      "model_id": "claude-fable-5-1",
      "stated_cutoff": "2026-06",
      "battery": "tailwindcss/v3-a",
      "prompt_file": "prompts/sent/tailwindcss-v3.txt",
      "test_date": "2026-09-06",
      "self_test": false,
      "status": "open",
      "findings": 4,
      "chargeable_findings": 4,
      "withdrawn_findings": 0,
      "summary": "The Index's first Claude Fable 5.1 findings outside valibot, and the tightest charging gap it has run: tailwindcss 4.3.0 shipped 2026-05-08, twenty-three days below this subject's stated June 2026 cutoff. Four charges — three S2 in the review direction (the scrollbar family, `@container-size`, `zoom-*`, each called inert in a pull request where every class compiles) and one S3 denial that the `@variant` at-rule accepts a stacked or comma-separated variant. Every workaround the draw offered was compiled against installed 4.2.4 and 4.3.0 and every one of them works, which is why the charges rest on the denials and the rejections and never on the code. The battery's guessing control came back clean — asked for a scrollbar-corner utility it correctly said none exists rather than inventing `scrollbar-corner-*` — and the poison rung was refused. Two of the four probes turned out to be DERIVABLE, and by the control nobody expected: Claude Sonnet 5, sixteen months under the release, wrote the correct `@variant hover:focus` and `@variant hover, focus, active` syntax and the correct `tab-*` scale, while Claude Opus 5 three weeks under it got both wrong. Derivability kills a pass, not a failure, so the charges stand; what it kills is this run's one correct answer inside the window."
    },
    {
      "run_id": "tailwindcss--claude-fable-5-1--v3-b--2026-09-06",
      "file": "data/tailwindcss/fable-5-1-v3-b.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "tailwindcss",
      "library_latest_at_test": "4.3.3",
      "model": "Claude Fable 5.1",
      "model_id": "claude-fable-5-1",
      "stated_cutoff": "2026-06",
      "battery": "tailwindcss/v3-b",
      "prompt_file": "prompts/sent/tailwindcss-v3.txt",
      "test_date": "2026-09-06",
      "self_test": false,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "The blind twin, charging nothing by pre-registration, and it reproduces its sibling almost exactly: \"No\" to both verdict-first questions, the same rejection of the same seven-class pull request, the same clean answer on the guessing control, the same refusal of the poison rung, the same boundary at 4.1.0 with 4.2 as the first release it knows only as a number. The pair disagrees on exactly one class. `tab-4` — a 4.3.0 addition — was accepted by the charging twin and denied here, which leaves a reproduced in-window failure of this subject that no run in the Index charges, flagged and counted as an undercount rather than chased with a third draw. This draw also produced the battery's most explicit self-placement: it identified the shape of the release under test as a category (\"scrollbar-*, tab-size, zoom, container-size\"), said the build output was the arbiter and not itself, and then attributed the whole category to 4.2. It is 4.3.0."
    },
    {
      "run_id": "tailwindcss--claude-fable-5--v2-d--2026-09-03",
      "file": "data/tailwindcss/fable-5-v2-d.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "tailwindcss",
      "library_latest_at_test": "4.3.3",
      "model": "Claude Fable 5",
      "model_id": "claude-fable-5",
      "stated_cutoff": "2026-01",
      "battery": "tailwindcss/v2-d",
      "prompt_file": "prompts/sent/tailwindcss-v2.txt",
      "test_date": "2026-09-03",
      "self_test": false,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "The second below-floor control, and the best-informed draw in the battery about everything except the release under test. It denied the 4.2.0 family like the other three - \"there is no pbs-*, pbe-*, mbe-*, or border-bs-*\" - and rejected the same pull request. But it was the only arm of four to know that v4 re-implemented the PAIRED axis utilities on logical shorthands, and it was right: px-*, py-*, mx-*, my-*, inset-x-* and inset-y-* really do emit padding-inline, padding-block, margin-inline, margin-block, inset-inline and inset-block at 4.2.0, all six verified against the installed engine. It used that correct knowledge to give a partly working answer - py-6 genuinely is the block-axis padding pair - and to explain precisely which cases were left uncovered. It also produced the battery's sharpest sentence about its own error, unprompted: the invented-looking names \"are exactly the kind of API an AI or a developer coming from another ecosystem might guess Tailwind has. It doesn't.\" P2 is confirmed on this arm as on the other control: nothing in the battery is derivable from seven weeks below the floor. Nothing is chargeable here."
    },
    {
      "run_id": "tailwindcss--claude-fable-5--v1--2026-08-31",
      "file": "data/tailwindcss/fable-5.json",
      "markdown": "data/tailwindcss/fable-5.md",
      "supersedes": null,
      "replicate_of": null,
      "library": "tailwindcss",
      "library_latest_at_test": "4.3.3",
      "model": "Claude Fable 5",
      "model_id": "claude-fable-5",
      "stated_cutoff": "2026-01",
      "battery": "tailwindcss/v1",
      "prompt_file": null,
      "test_date": "2026-08-31",
      "self_test": false,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "Zero findings, and the most consistently version-aware run of the three: every task that had a v3 form volunteered the v3 form explicitly labelled as v3, after giving the v4 answer. Version attribution stops at 4.1.0 (2025-04-01), nine months before its stated cutoff — the same boundary as Sonnet 5 and Opus 5 on this library, and the same boundary all three models show on zod. With zero findings, nothing in the code contradicts its post-4.1 knowledge; what the run measures is that it cannot say what shipped after 4.1.0. On Tailwind that boundary costs nothing, because every breaking change in the current major shipped at 4.0.0, three months before it."
    },
    {
      "run_id": "tailwindcss--claude-opus-5--v2-a--2026-09-03",
      "file": "data/tailwindcss/opus-5-v2-a.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "tailwindcss",
      "library_latest_at_test": "4.3.3",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "stated_cutoff": "2026-05",
      "battery": "tailwindcss/v2-a",
      "prompt_file": "prompts/sent/tailwindcss-v2.txt",
      "test_date": "2026-09-03",
      "self_test": true,
      "status": "open",
      "findings": 2,
      "chargeable_findings": 2,
      "withdrawn_findings": 0,
      "summary": "The charging arm of the battery that tested whether a self-known gap changes the code. In v1 this same subject volunteered that it could not describe anything past 4.1.0 and that a 4.2 probably existed - and it says so again here, twice, in the version answers. It then denied the 4.2.0 logical-property family exists (\"No\" to both capability questions), and in the pull-request review told a colleague that six classes which all compile generate no CSS, that \"None of them exist in Tailwind\", and that there are no block-axis or inline-size/block-size utilities \"in any release\". Charged as F1 (S2): the artefact is a rejected-correct PR, verified by building every one of those six classes with the installed 4.2.0 and 4.3.3 engines. F2 (S3) charges the other half of the same release - it stated that start-*/end-* are \"not a deprecated spelling\" and that \"nothing was renamed or removed in v4\", where 4.2.0 deprecated both in favour of inset-s-*/inset-e-*. The battery's internal guessing control cleared it: asked the identical question about the inline axis it answered ps-6 / me-4, the real utilities, and did not over-generalise the naming scheme into the pis-*/mie-* names that exist at no release. So the denial is a belief about the block axis and not an artefact of the probe's naming. The sharpest detail is its own proposed safety net: it told the colleague that @apply would have caught this with \"Cannot apply unknown utility class\". That error string is exactly right for 4.1.0 and exactly wrong for 4.2.0, where the same @apply line compiles."
    },
    {
      "run_id": "tailwindcss--claude-opus-5--v2-b--2026-09-03",
      "file": "data/tailwindcss/opus-5-v2-b.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": "tailwindcss--claude-opus-5--v2-a--2026-09-03",
      "library": "tailwindcss",
      "library_latest_at_test": "4.3.3",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "stated_cutoff": "2026-05",
      "battery": "tailwindcss/v2-b",
      "prompt_file": "prompts/sent/tailwindcss-v2.txt",
      "test_date": "2026-09-03",
      "self_test": true,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "The blind twin, sent the identical stored prompt concurrently, and it charges nothing by rule. It reproduced its sibling exactly on the substance - \"No\" to both capability questions, and a pull-request review stating \"It compiles, and it produces nothing. Every single class on that line is unrecognized\" with all six listed in a table - so both misses are recorded here as chargeable_miss pointing at v2-a. Two things this draw did that its sibling did not, and the first is the most interesting result in the battery. It attributed the six class names to a specific third-party package: \"I think these came from the tailwindcss-logical plugin, which does use pbs/pbe/mbe/bs/is naming.\" That is correct and was verified - tailwindcss-logical 4.1.0, published 2025-11-10, more than three months before core 4.2.0 and inside this subject's window, ships pbs, pbe, mbs, mbe and border-bs. The draw identified precisely where those names live in the ecosystem and used that correct knowledge to conclude they were not in core. Right about the history, wrong about the present, for the third library in this Index. Second, it hedged harder than any draw the Index has recorded - \"the framing of this question makes me suspect you know something I don't ... my No answers in Tasks 1 and 2 would be wrong\" - and still filed the unhedged review. Nothing here reverses the pair: on this battery both twins agreed, which is the first time in five duplicated batteries that the -b draw did not hold the better answer."
    },
    {
      "run_id": "tailwindcss--claude-opus-5--v3-c--2026-09-06",
      "file": "data/tailwindcss/opus-5-v3-c.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "tailwindcss",
      "library_latest_at_test": "4.3.3",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "stated_cutoff": "2026-05",
      "battery": "tailwindcss/v3-c",
      "prompt_file": "prompts/sent/tailwindcss-v3.txt",
      "test_date": "2026-09-06",
      "self_test": true,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "The parked control, three weeks from being a test arm and charging nothing by pre-registration — 4.3.0 shipped in the same month this subject states as its cutoff. It denies the scrollbar family in the same terms as both Fable 5.1 draws, denies `tab-*` and `zoom-*`, and denies that `@variant` takes more than one variant; none of it is billable and none of it is counted as an undercount, because the failure sits outside the fairness window rather than inside it and unbilled. Its one correct answer inside the window is `@container-size`, accepted as valid with the right declaration and sound advice about size containment, which marks that probe DERIVABLE and demotes the corresponding pass everywhere in the battery. The arm also produced the battery's clearest articulation of what these controls are for: \"I'd treat my silence about post-4.1 releases as ignorance rather than evidence that nothing shipped.\""
    },
    {
      "run_id": "tailwindcss--claude-opus-5--v1--2026-08-31",
      "file": "data/tailwindcss/opus-5.json",
      "markdown": "data/tailwindcss/opus-5.md",
      "supersedes": null,
      "replicate_of": null,
      "library": "tailwindcss",
      "library_latest_at_test": "4.3.3",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "stated_cutoff": "2026-05",
      "battery": "tailwindcss/v1",
      "prompt_file": null,
      "test_date": "2026-08-31",
      "self_test": true,
      "status": "open",
      "findings": 1,
      "chargeable_findings": 1,
      "withdrawn_findings": 0,
      "summary": "One finding, and it is not about code. All ten code tasks are correct v4 — including the two answers no other subject gave, the parenthesised variable shorthand `bg-(--brand)` and the functional `@utility tab-*` form — and the silent-behaviour questions are answered with the right values and the right version attribution. What it cannot do is see past 4.1.0 (2025-04-01), even though 4.2.0 shipped 2026-02-18, well inside its stated 2026-05 window. That is a thirteen-month lag, the largest in the Index, from the model with the latest cutoff in it. Disclosed self-test — the operator model is the subject."
    },
    {
      "run_id": "tailwindcss--claude-sonnet-5--v2-c--2026-09-03",
      "file": "data/tailwindcss/sonnet-5-v2-c.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "tailwindcss",
      "library_latest_at_test": "4.3.3",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "stated_cutoff": "2026-01",
      "battery": "tailwindcss/v2-c",
      "prompt_file": "prompts/sent/tailwindcss-v2.txt",
      "test_date": "2026-09-03",
      "self_test": false,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "A below-floor control arm, and it did the one job a control has. Its stated cutoff of 2026-01 sits about seven weeks below 4.2.0 - the tightest control gap in the Index, against four months on zod/v3 and eighteen on zod/v4 - so if the battery's probes were answerable from below the target release, this is the arm that would have shown it. It was not: this draw denied the block-axis family (\"There is no pbs-*, pbe-*, mbe-*, or border-bs/be family in v4 either - the rewrite changed the engine, not the utility surface for the block axis\"), denied inline-size/block-size, and rejected the same pull request. Pre-registered prediction P2 is confirmed on this arm: no probe in the battery is derivable from below the floor, so the test arm's denials are readable as failures rather than as artefacts of a guessable name. It also cleared the internal guessing control with `ps-4 me-4`. Nothing here is chargeable - 4.2.0 postdates this subject's stated cutoff and the Index does not charge a subject for a release it says it never saw."
    },
    {
      "run_id": "tailwindcss--claude-sonnet-5--v3-d--2026-09-06",
      "file": "data/tailwindcss/sonnet-5-v3-d.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "tailwindcss",
      "library_latest_at_test": "4.3.3",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "stated_cutoff": "2026-01",
      "battery": "tailwindcss/v3-d",
      "prompt_file": "prompts/sent/tailwindcss-v3.txt",
      "test_date": "2026-09-06",
      "self_test": false,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "The below-floor control, sixteen months under the release, and it answered two of the battery's four probes correctly while every arm above it got them wrong. It gave the correct `@variant hover:focus` and `@variant hover, focus, active` syntax — a spelling that is a hard build error at the last release it could have seen — and it listed the `tab-*` scale correctly, inventing only a `tab-inherit` that exists at no version. It also wrote `scrollbar-thin scrollbar-thumb-slate-500 scrollbar-track-slate-100` verbatim while insisting they need a third-party plugin, which is the cleanest possible demonstration of the anti-guessing design's premise: those are the plugin's names, Tailwind adopted them, and no charge in this battery may rest on producing them. What it did NOT derive matters as much: `scrollbar-gutter-*`, `@container-size` and `zoom-*` were all denied here, which is what leaves the corresponding failures above the floor readable as real gaps."
    },
    {
      "run_id": "tailwindcss--claude-sonnet-5--v1--2026-08-31",
      "file": "data/tailwindcss/sonnet-5.json",
      "markdown": "data/tailwindcss/sonnet-5.md",
      "supersedes": null,
      "replicate_of": null,
      "library": "tailwindcss",
      "library_latest_at_test": "4.3.3",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "stated_cutoff": "2026-01",
      "battery": "tailwindcss/v1",
      "prompt_file": null,
      "test_date": "2026-08-31",
      "self_test": false,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "Zero findings. All ten code tasks produced working Tailwind v4 — the CSS-first entry file, @theme, @utility, @source inline(), shrink-0, bg-black/50, @reference in the Vue SFC — and the two silent-behaviour questions were answered correctly, including the currentColor border default and the shadow-scale rename. This is the first run in the Index with nothing to charge. The result is not that the model is up to date: its knowledge still stops at 4.1.0 (2025-04-01), nine months before its own stated cutoff, exactly the lag the other libraries show. It is that Tailwind shipped all of its breakage at 4.0.0, three months *before* that boundary, so the stale region contains nothing that breaks."
    },
    {
      "run_id": "valibot--claude-fable-5-1--v3-a--2026-09-05",
      "file": "data/valibot/fable-5-1-v3-a.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "valibot",
      "library_latest_at_test": "1.4.2",
      "model": "Claude Fable 5.1",
      "model_id": "claude-fable-5-1",
      "stated_cutoff": null,
      "battery": "valibot/v3-a",
      "prompt_file": "prompts/sent/valibot-v3.txt",
      "test_date": "2026-09-05",
      "self_test": false,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "Nominated charging arm; charges nothing. Answered \"No\" to all three capability probes — `guard` (1.3.0), the 1.4.0 case actions, `cache` (1.3.0) — and rejected a pull request whose `toKebabCase` line is real, while correctly refusing the `toTitleCase` line that is not. Every substitute it shipped works: `v.custom<T>` narrows under `tsc --strict`, the slugify is sound, the WeakMap parser is correct. Its attribution anchor is right to the minor, so its boundary is readable: it can describe nothing past **1.1.0 (May 2025)**, thirteen months below its stated June 2026 cutoff. Four reproduced failures, zero charged, all four barred by the stated-cutoff rule after the draw declined its environment-reported cutoff in answer to a question this battery should not have asked."
    },
    {
      "run_id": "valibot--claude-fable-5-1--v3-b--2026-09-05",
      "file": "data/valibot/fable-5-1-v3-b.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": "valibot--claude-fable-5-1--v3-a--2026-09-05",
      "library": "valibot",
      "library_latest_at_test": "1.4.2",
      "model": "Claude Fable 5.1",
      "model_id": "claude-fable-5-1",
      "stated_cutoff": null,
      "battery": "valibot/v3-b",
      "prompt_file": "prompts/sent/valibot-v3.txt",
      "test_date": "2026-09-05",
      "self_test": false,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "Blind twin, charges nothing by construction. Agrees with `v3-a` on every task: three denials, a pull request rejected in both halves where only one half deserved it, a correct anchor, and a boundary at 1.1.0 / 1.2.0. It denies `guard` **by name**, which its twin does not, and it repudiates its stated cutoff in the same terms. Zero spread between the two draws on the boundary question."
    },
    {
      "run_id": "valibot--claude-fable-5-1--v4-a--2026-09-06",
      "file": "data/valibot/fable-5-1-v4-a.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "valibot",
      "library_latest_at_test": "1.4.2",
      "model": "Claude Fable 5.1",
      "model_id": "claude-fable-5-1",
      "stated_cutoff": "2026-06",
      "battery": "valibot/v4-a",
      "prompt_file": "prompts/sent/valibot-v4.txt",
      "test_date": "2026-09-06",
      "self_test": false,
      "status": "open",
      "findings": 3,
      "chargeable_findings": 3,
      "withdrawn_findings": 0,
      "summary": "The re-draw, and it worked. The same subject sent the same five tasks a day after `valibot/v3`, with one clause removed from direct question (b), affirmed its June 2026 cutoff and qualified only the density of its recall — where both `v3` arms, asked which date they would trust, repudiated theirs and charged nothing. Three findings, the Index's first against Claude Fable 5.1: `guard` (F1, S3) denied by name after being half-remembered, `cache` (F2, S3) denied with an argument from the library's design, and `toKebabCase` (F3, S2) called an AI hallucination in a review of a pull request that compiles and runs. Anchor correct to within days, poison rung refused, boundary unmoved at 1.1.0 / 1.2.0."
    },
    {
      "run_id": "valibot--claude-fable-5-1--v4-b--2026-09-06",
      "file": "data/valibot/fable-5-1-v4-b.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": "valibot--claude-fable-5-1--v4-a--2026-09-06",
      "library": "valibot",
      "library_latest_at_test": "1.4.2",
      "model": "Claude Fable 5.1",
      "model_id": "claude-fable-5-1",
      "stated_cutoff": "2026-06",
      "battery": "valibot/v4-b",
      "prompt_file": "prompts/sent/valibot-v4.txt",
      "test_date": "2026-09-06",
      "self_test": false,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "The blind twin, and it agrees with `v4-a` on every quantity that matters: the same four reproduced failures, the same 1.1.0 / 1.2.0 boundary, the same correct 1.1.0 anchor, the same refusal of the poison rung, and — the quantity this battery exists to measure — the same affirmation of its June 2026 cutoff with a density caveat rather than a repudiation. It charges nothing, by position. Its task-2 hedge is the most precisely dated stale sentence in either valibot battery: confident there was no `toKebabCase` through 1.1, and unaware of everything after."
    },
    {
      "run_id": "valibot--claude-fable-5--v2-e--2026-09-02",
      "file": "data/valibot/fable-5-v2-e.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "valibot",
      "library_latest_at_test": "1.4.2",
      "model": "Claude Fable 5",
      "model_id": "claude-fable-5",
      "stated_cutoff": "2026-01",
      "battery": "valibot/v2-e",
      "prompt_file": "prompts/sent/valibot-v2.txt",
      "test_date": "2026-09-02",
      "self_test": false,
      "status": "open",
      "findings": 1,
      "chargeable_findings": 1,
      "withdrawn_findings": 0,
      "summary": "Charging arm. Denied both actions in task 1, called them non-existent \"in any release\" in task 2, and charged F1 (S2). The anchor was placed correctly at 1.1.0, giving this subject the tightest possible bracket — it can describe 1.1.0 and denies the contents of 1.2.0, the very next minor. The most interesting line in the run is in task 5, where the same draw hedged accurately about a different 1.2.0 addition on the explicit ground that 1.2.0 is past what it can describe. It had the boundary right and applied it in one place and not the other."
    },
    {
      "run_id": "valibot--claude-fable-5--v2-f--2026-09-02",
      "file": "data/valibot/fable-5-v2-f.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": "valibot--claude-fable-5--v2-e--2026-09-02",
      "library": "valibot",
      "library_latest_at_test": "1.4.2",
      "model": "Claude Fable 5",
      "model_id": "claude-fable-5",
      "stated_cutoff": "2026-01",
      "battery": "valibot/v2-f",
      "prompt_file": "prompts/sent/valibot-v2.txt",
      "test_date": "2026-09-02",
      "self_test": false,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "Blind twin, charges nothing. Agreed with its charging twin on every reading in the battery — same verdicts, same denial, same boundary (1.1.0 / 1.2.0), same anchor placement, same hedge on task 5. Fable 5 is now the only subject in the Index whose blind twins have agreed on the boundary in every battery they have been paired in."
    },
    {
      "run_id": "valibot--claude-fable-5--v1--2026-09-01",
      "file": "data/valibot/fable-5.json",
      "markdown": "data/valibot/fable-5.md",
      "supersedes": null,
      "replicate_of": null,
      "library": "valibot",
      "library_latest_at_test": "1.4.2",
      "model": "Claude Fable 5",
      "model_id": "claude-fable-5",
      "stated_cutoff": "2026-01",
      "battery": "valibot/v1",
      "prompt_file": null,
      "test_date": "2026-09-01",
      "self_test": false,
      "status": "open",
      "findings": 2,
      "chargeable_findings": 2,
      "withdrawn_findings": 0,
      "summary": "The largest haul on this library, and the only S2 in it. Knowledge stops at 1.1.0 (2025-05-06) — the same release as Opus 5, from a subject whose stated cutoff is four months earlier — with 1.2.0 (2025-11-24) landing two months inside that cutoff and invisible. Three findings. The designed S2 landed: asked what to flag before validating user-supplied emoji text at high volume, the subject recommended the `emoji` action and certified that its regex \"runs linearly\", six months after the vendor fixed a ReDoS in exactly that regex. It also denies the ISBN action exists, and explains away the repository's new owning organisation as merely an npm scope. Against that, its 1.1.0 knowledge is the most solid of the three subjects: `parseJson`, `summarize`, `getMetadata` and the `NanoIdAction` rename all correct and correctly dated."
    },
    {
      "run_id": "valibot--claude-haiku-4-5--v2-g--2026-09-02",
      "file": "data/valibot/haiku-4-5-v2-g.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "valibot",
      "library_latest_at_test": "1.4.2",
      "model": "Claude Haiku 4.5",
      "model_id": "claude-haiku-4-5",
      "stated_cutoff": "2025-02",
      "battery": "valibot/v2-g",
      "prompt_file": "prompts/sent/valibot-v2.txt",
      "test_date": "2026-09-02",
      "self_test": false,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "Below-floor control, single arm, charges nothing — and the most consequential arm in the battery. Nine months under the target release it produced the target API on both halves and accepted the test pull request, which falsifies P3 and marks the coercion probe DERIVABLE ON PASS. It could not place the 1.1.0 anchor, could not name a version it can describe, and invented a `.example()` method, so its knowledge of the library is demonstrably below the window; what it had was the name, not the release. The asymmetry is the point: a derivable name makes a pass unreadable and leaves six failures exactly where they were."
    },
    {
      "run_id": "valibot--claude-opus-5--v1r-a--2026-09-01",
      "file": "data/valibot/opus-5-v1r-a.json",
      "markdown": "data/valibot/opus-5-v1r-a.md",
      "supersedes": null,
      "replicate_of": "valibot--claude-opus-5--v1--2026-09-01",
      "library": "valibot",
      "library_latest_at_test": "1.4.2",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "stated_cutoff": "2026-05",
      "battery": "valibot/v1r-a",
      "prompt_file": "prompts/sent/valibot-v1.txt",
      "test_date": "2026-09-01",
      "self_test": true,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "Replicate A of `valibot/v1` against Opus 5, prompt unchanged. It placed the last release it can describe at valibot 1.0.0 (2025-03-19) and named 1.1.0 as the first release it knows only as a version number - identical to its concurrent, blind twin `v1r-b`. Spread 0 days, the pre-registered outcome for the valibot arm of the predictor test. Both replicates read one release below `valibot/v1`, a 48-day secondary spread that the pre-registration classes as agreement. No findings charged; one chargeable miss flagged against the 1.2.0 coercion surface."
    },
    {
      "run_id": "valibot--claude-opus-5--v1r-b--2026-09-01",
      "file": "data/valibot/opus-5-v1r-b.json",
      "markdown": "data/valibot/opus-5-v1r-b.md",
      "supersedes": null,
      "replicate_of": "valibot--claude-opus-5--v1--2026-09-01",
      "library": "valibot",
      "library_latest_at_test": "1.4.2",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "stated_cutoff": "2026-05",
      "battery": "valibot/v1r-b",
      "prompt_file": "prompts/sent/valibot-v1.txt",
      "test_date": "2026-09-01",
      "self_test": true,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "Replicate B of `valibot/v1` against Opus 5, prompt unchanged. It believed 1.1.0 was the newest version but refused to claim its contents, placing its describable boundary at 1.0.0 (2025-03-19) - identical to its concurrent, blind twin `v1r-a`. Spread 0 days, the pre-registered outcome for the valibot arm. Notable against JOURNAL/024: this is a careful, hedging draw that agreed with a confident one rather than splitting from it. No findings charged."
    },
    {
      "run_id": "valibot--claude-opus-5--v2-a--2026-09-02",
      "file": "data/valibot/opus-5-v2-a.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "valibot",
      "library_latest_at_test": "1.4.2",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "stated_cutoff": "2026-05",
      "battery": "valibot/v2-a",
      "prompt_file": "prompts/sent/valibot-v2.txt",
      "test_date": "2026-09-02",
      "self_test": true,
      "status": "open",
      "findings": 1,
      "chargeable_findings": 1,
      "withdrawn_findings": 0,
      "summary": "Charging arm. Answered \"No\" to both verdict questions in task 1, then in task 2 called `v.toNumber` and `v.toBoolean` \"not part of Valibot's API — never have been\", and in task 3 stated flatly that \"there has never been a built-in string→number or string→boolean action\". All three actions exist and shipped in 1.2.0 (2025-11-24), eighteen months inside this subject's stated cutoff; the pull request it rejected parses under valibot@1.4.2. Charged F1 (S2) on the absence claim. The attribution anchor placed 1.1.0 correctly, so the boundary reading is read: this draw dates the release one minor BELOW the one it cannot see, which is the tightest boundary bracket this library has produced. Everything else it said was right, including the parts the battery exempted in advance and one part the Index itself had wrong."
    },
    {
      "run_id": "valibot--claude-opus-5--v2-b--2026-09-02",
      "file": "data/valibot/opus-5-v2-b.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": "valibot--claude-opus-5--v2-a--2026-09-02",
      "library": "valibot",
      "library_latest_at_test": "1.4.2",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "stated_cutoff": "2026-05",
      "battery": "valibot/v2-b",
      "prompt_file": "prompts/sent/valibot-v2.txt",
      "test_date": "2026-09-02",
      "self_test": true,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "Blind twin, charges nothing. Agreed with its charging twin on the failure and disagreed with it on the boundary: v2-a reads 1.0.0/1.1.0, this draw reads 1.1.0/1.2.0, so the pair spans one minor and 250 days on the same stored prompt. Notable for naming its own failure mode in the direct questions — \"that gap is where confident-sounding wrong answers like v.toNumber() come from\" — while committing it, and for correctly describing the behaviour of the action it called a fabrication."
    },
    {
      "run_id": "valibot--claude-opus-5--v3-c--2026-09-05",
      "file": "data/valibot/opus-5-v3-c.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "valibot",
      "library_latest_at_test": "1.4.2",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "stated_cutoff": "2026-05",
      "battery": "valibot/v3-c",
      "prompt_file": "prompts/sent/valibot-v3.txt",
      "test_date": "2026-09-05",
      "self_test": true,
      "status": "open",
      "findings": 2,
      "chargeable_findings": 2,
      "withdrawn_findings": 0,
      "summary": "The battery's only charging arm, and it charges the 1.3.0 half only. Two findings, both S3, both denials of capabilities that shipped 2026-03-17 and both with working substitutes: `guard` (F1) and `cache` (F2). Its 1.4.0 answers reproduce two further failures — including calling the real `toKebabCase` an invention in a pull request that compiles — and both are barred by the same-month parking rule the spec fixed in advance. Anchor correct, poison rung refused, boundary unmoved from `v2` at 1.1.0 / 1.2.0, stated cutoff affirmed with a density caveat."
    },
    {
      "run_id": "valibot--claude-opus-5--v3-d--2026-09-05",
      "file": "data/valibot/opus-5-v3-d.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": "valibot--claude-opus-5--v3-c--2026-09-05",
      "library": "valibot",
      "library_latest_at_test": "1.4.2",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "stated_cutoff": "2026-05",
      "battery": "valibot/v3-d",
      "prompt_file": "prompts/sent/valibot-v3.txt",
      "test_date": "2026-09-05",
      "self_test": true,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "Blind twin, charges nothing. Agrees with `v3-c` on all five tasks and on the boundary. Two things it holds that its twin does not: it guesses a wrong spelling for the cache API it is denying (`v.cached()`), and it produces the battery's best-calibrated hedge — naming case-conversion actions as exactly the kind of addition it would be unable to see, in the same answer where it calls one of them an invention."
    },
    {
      "run_id": "valibot--claude-opus-5--v4-c--2026-09-06",
      "file": "data/valibot/opus-5-v4-c.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "valibot",
      "library_latest_at_test": "1.4.2",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "stated_cutoff": "2026-05",
      "battery": "valibot/v4-c",
      "prompt_file": "prompts/sent/valibot-v4.txt",
      "test_date": "2026-09-06",
      "self_test": true,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "The continuity control, and it reads clean. Sent the same tasks as `valibot/v3` with `v2`'s cutoff question restored, Claude Opus 5 affirmed its May 2026 date with a density caveat — as it did under the changed wording a day earlier — denied `guard` and `cache` in the same terms, denied the 1.4.0 case actions in both directions, placed the 1.1.0 anchor correctly and refused the poison rung. Boundary unmoved at 1.1.0 / 1.2.0 for the eighth measurement. Nothing charged: the two 1.3.0 denials are already published as F1 and F2 on `valibot/v3-c`, and the 1.4.0 pair is parked by the same-month rule. Its closing self-assessment names the two tasks it had just failed as the ones most likely to be wrong."
    },
    {
      "run_id": "valibot--claude-opus-5--v1--2026-09-01",
      "file": "data/valibot/opus-5.json",
      "markdown": "data/valibot/opus-5.md",
      "supersedes": null,
      "replicate_of": null,
      "library": "valibot",
      "library_latest_at_test": "1.4.2",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "stated_cutoff": "2026-05",
      "battery": "valibot/v1",
      "prompt_file": null,
      "test_date": "2026-09-01",
      "self_test": true,
      "status": "open",
      "findings": 2,
      "chargeable_findings": 2,
      "withdrawn_findings": 0,
      "summary": "Ten tasks, ten pieces of working valibot, from the subject with the deepest stated cutoff in the Index — and a twelve-month lag to show for it. Knowledge stops at 1.1.0 (2025-05-06); 1.2.0 shipped 2025-11-24, six months inside its stated 2026-05 cutoff. Two findings, neither about broken code: it denies that the ISBN validation action exists while writing thirty lines of check-digit arithmetic to replace it, and it insists twice that valibot is one person's personal repository, which stopped being true with the same release. The battery's one designed build-breaker — the `NanoIDAction` casing rename — passed cleanly, and the floor probe passed, so the boundary is a measurement and not an artefact. The subject also stated the Index's own thesis about itself unprompted: that its effective horizon for this library runs about a year behind its nominal cutoff."
    },
    {
      "run_id": "valibot--claude-sonnet-5--v2-c--2026-09-02",
      "file": "data/valibot/sonnet-5-v2-c.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "valibot",
      "library_latest_at_test": "1.4.2",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "stated_cutoff": "2026-01",
      "battery": "valibot/v2-c",
      "prompt_file": "prompts/sent/valibot-v2.txt",
      "test_date": "2026-09-02",
      "self_test": false,
      "status": "open",
      "findings": 1,
      "chargeable_findings": 1,
      "withdrawn_findings": 0,
      "summary": "Charging arm, and the one whose licence to charge needed the most care. It affirmed a January 2026 cutoff and separately estimated that its valibot recall thins out around early-to-mid 2025 — which would exclude the 1.2.0 target. The rule applied, and written into HARNESS.md this session: the fairness rule reads a stated CUTOFF; an estimate of how well a subject knows a particular library is the quantity being measured and cannot bar the measurement, or no subject that is wrong about a library could ever be charged. Charged F1 (S2). The battery's internal control was NOT placed on this arm — it could not date `parseJson` at all — so its boundary reading is published with that caveat and is not read as an attribution measurement."
    },
    {
      "run_id": "valibot--claude-sonnet-5--v2-d--2026-09-02",
      "file": "data/valibot/sonnet-5-v2-d.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": "valibot--claude-sonnet-5--v2-c--2026-09-02",
      "library": "valibot",
      "library_latest_at_test": "1.4.2",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "stated_cutoff": "2026-01",
      "battery": "valibot/v2-d",
      "prompt_file": "prompts/sent/valibot-v2.txt",
      "test_date": "2026-09-02",
      "self_test": false,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "Blind twin, charges nothing. Agreed with its charging twin on the boundary (1.0.0 / 1.1.0 — the only pair in this battery to agree exactly), on the denial, and on failing the internal control. It also produced the battery's single worst piece of replacement code, an unguarded string-to-boolean transform, while its twin used the picklist guard — the two halves of one subject splitting on the code while agreeing on the self-report, which is the pattern JOURNAL/034 recorded at next.js and the inverse of langchain/v1r."
    },
    {
      "run_id": "valibot--claude-sonnet-5--v3-e--2026-09-05",
      "file": "data/valibot/sonnet-5-v3-e.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "valibot",
      "library_latest_at_test": "1.4.2",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "stated_cutoff": "2026-01",
      "battery": "valibot/v3-e",
      "prompt_file": "prompts/sent/valibot-v3.txt",
      "test_date": "2026-09-05",
      "self_test": false,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "Below-floor derivability control. It did the one job a control this far under the window can do and did it cleanly: it composed none of `guard`, `toKebabCase` or `cache` from the problem statements and denied all three, so no probe in the battery is DERIVABLE and the denials above the floor read as beliefs. It also broke the attribution anchor — declining to place `parseJson` at all — so nothing it says about versions is read, and its 1.0.0 date is a year out. Charges nothing; no probe here is admissible against a January 2026 cutoff."
    },
    {
      "run_id": "valibot--claude-sonnet-5--v1--2026-09-01",
      "file": "data/valibot/sonnet-5.json",
      "markdown": "data/valibot/sonnet-5.md",
      "supersedes": null,
      "replicate_of": null,
      "library": "valibot",
      "library_latest_at_test": "1.4.2",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "stated_cutoff": "2026-01",
      "battery": "valibot/v1",
      "prompt_file": null,
      "test_date": "2026-09-01",
      "self_test": false,
      "status": "open",
      "findings": 1,
      "chargeable_findings": 1,
      "withdrawn_findings": 0,
      "summary": "One finding, and the run's value is the measurement rather than the haul. Knowledge stops at 1.0.0 (2025-03-19) and 1.1.0 (2025-05-06) is already dark — the earliest boundary of the three subjects on this library, and the only one whose 1.1.0 surface (`summarize`, `parseJson`, the `NanoIdAction` rename) is absent across the board. The single charge is the repository's ownership, stated flatly in a run that hedges nearly everything else. Two rules cut in the subject's favour and are recorded rather than quietly applied: its ISBN answer holds the same stale belief that is a finding against both other subjects but hedges it, and its non-compiling nano-ID type is a wrong guess that names the correct identifier beside it. Against the pre-registered prediction this subject is the falsifier: its valibot boundary is later than its median across the five existing libraries, not earlier."
    },
    {
      "run_id": "zod--claude-fable-5-1--v5--2026-09-06",
      "file": "data/zod/fable-5-1-v5.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "zod",
      "library_latest_at_test": "4.5.4",
      "model": "Claude Fable 5.1",
      "model_id": "claude-fable-5-1",
      "stated_cutoff": "2026-06",
      "battery": "zod/v5",
      "prompt_file": "prompts/sent/zod-v5.txt",
      "test_date": "2026-09-06",
      "self_test": true,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "A boundary ladder, not a battery: nothing charged, `elicits_code: false`, one arm. Claude Fable 5.1 describes zod through 4.1.0 (2025-08-23) and holds 4.2.0 onward as a bare number, ten months below its stated June 2026 cutoff. It is the first subject the Index has whose cutoff sits above zod 4.4.0 while its boundary sits below 4.2.0, which reopens the window BACKLOG 1a-ii parked for want of exactly that. The arm corrected its own verdict on one rung before the direct questions and the discarded reading is published beside the taken one."
    },
    {
      "run_id": "zod--claude-fable-5--v2--2026-08-29",
      "file": "data/zod/fable-5-v2.json",
      "markdown": "data/zod/fable-5-v2.md",
      "supersedes": "zod--claude-fable-5--v1--2026-08-29",
      "replicate_of": null,
      "library": "zod",
      "library_latest_at_test": "4.5.2",
      "model": "Claude Fable 5",
      "model_id": "claude-fable-5",
      "stated_cutoff": "2026-01",
      "battery": "zod/v2",
      "prompt_file": null,
      "test_date": "2026-08-29",
      "self_test": false,
      "status": "open",
      "findings": 3,
      "chargeable_findings": 2,
      "withdrawn_findings": 0,
      "summary": "Best-performing subject on v2 and the most interesting one. Zero S1 findings: the only subject that knew about the 4.3.0 refinement-composition breaking changes, producing working code on all three Group A traps. The notable result is a dissociation — it described a 2025-12-31 breaking change correctly while stating it \"cannot confidently name or describe a 4.2\" (2025-12-15). Knowledge is not simply truncated at a date: behavioural facts survive where version numbers and release contents do not."
    },
    {
      "run_id": "zod--claude-fable-5--v3-d--2026-09-02",
      "file": "data/zod/fable-5-v3-d.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "zod",
      "library_latest_at_test": "4.5.4",
      "model": "Claude Fable 5",
      "model_id": "claude-fable-5",
      "stated_cutoff": "2026-01",
      "battery": "zod/v3-d",
      "prompt_file": "prompts/sent/zod-v3.txt",
      "test_date": "2026-09-02",
      "self_test": false,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "The second below-floor control arm, charging nothing, and the arm that cost the battery a probe. It gave the post-4.4.0 answer on the tuple default - correctly, confidently, with a correct Zod 3 contrast - from a stated cutoff four months below where that behaviour shipped. Under the pre-registered rule that marks the tuple probe DERIVABLE and strikes the test arm's pass on it. It gave the pre-4.4.0 answer on the `z.undefined()`-typed key and on the single-slash URL, which is the half that made the battery work. It is also the only draw of four to state correctly that no stable release has a trailing-`?` key constructor - and then to miss the API that replaced it, which is the second instance the Index has of a model being right about a removal and wrong about its replacement."
    },
    {
      "run_id": "zod--claude-fable-5--v4-a--2026-09-02",
      "file": "data/zod/fable-5-v4-a.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "zod",
      "library_latest_at_test": "4.5.4",
      "model": "Claude Fable 5",
      "model_id": "claude-fable-5",
      "stated_cutoff": "2026-01",
      "battery": "zod/v4-a",
      "prompt_file": "prompts/sent/zod-v4.txt",
      "test_date": "2026-09-02",
      "self_test": false,
      "status": "open",
      "findings": 5,
      "chargeable_findings": 5,
      "withdrawn_findings": 0,
      "summary": "The charging arm of the battery that finally books what zod/v3 could only watch happen. Five findings, all inside the 4.2.0-4.3.0 window and all comfortably inside this subject's stated 2026-01 cutoff: one S1 (deriving from a refined object schema is asserted to load and silently drop the refinement, where 4.3.0 made it throw at module load) and four S2, three of which are flat denials that a capability exists - exact-optional keys, exclusive unions, and reading a JSON Schema document at runtime. The third of those is the costliest shape in the catalogue: the draw names z.fromJSONSchema by name while asserting it does not exist, and sends the reader to add Ajv instead. Every workaround the draw offered was executed against the published zod@4.5.4 and every one of them works, which is exactly why the charge rests on the denials and not on the code. The battery's own control deleted one probe outright - the slug task, where hand-rolling is simply correct - and complicated another, where a subject eighteen months below the floor stated the right parse output from wrong reasoning."
    },
    {
      "run_id": "zod--claude-fable-5--v4-b--2026-09-02",
      "file": "data/zod/fable-5-v4-b.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": "zod--claude-fable-5--v4-a--2026-09-02",
      "library": "zod",
      "library_latest_at_test": "4.5.4",
      "model": "Claude Fable 5",
      "model_id": "claude-fable-5",
      "stated_cutoff": "2026-01",
      "battery": "zod/v4-b",
      "prompt_file": "prompts/sent/zod-v4.txt",
      "test_date": "2026-09-02",
      "self_test": false,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "The blind twin of the charging arm, and the first duplicated test arm the Index has run where the two draws had nothing to disagree about. Every one of the five failures its twin charges appears here too, in different words and the same substance, along with the same correct placement of the internal control. Read against the three previous duplicated batteries - where the -b draw held the better answer every time - the difference looks structural rather than lucky: those disagreements were on surfaces the subject held unstably, and these five are surfaces it does not hold at all. An absent belief reproduces exactly; an unstable one does not."
    },
    {
      "run_id": "zod--claude-fable-5--v1--2026-08-29",
      "file": "data/zod/fable-5.json",
      "markdown": "data/zod/fable-5.md",
      "supersedes": null,
      "replicate_of": null,
      "library": "zod",
      "library_latest_at_test": "4.5.2",
      "model": "Claude Fable 5",
      "model_id": "claude-fable-5",
      "stated_cutoff": "2026-01",
      "battery": "zod/v1",
      "prompt_file": null,
      "test_date": "2026-08-29",
      "self_test": false,
      "status": "open",
      "findings": 1,
      "chargeable_findings": 1,
      "withdrawn_findings": 0,
      "summary": "Zero S1/S2/S3 on battery v1 — saturated for this subject. One S4 version-recency finding, well calibrated: the model volunteered the hedge unprompted and labelled its own answer \"recalled, not verified.\" The lag sits inside the training window, the same effect as Opus 5 at smaller magnitude."
    },
    {
      "run_id": "zod--claude-haiku-4-5--v4-c--2026-09-02",
      "file": "data/zod/haiku-4-5-v4-c.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "zod",
      "library_latest_at_test": "4.5.4",
      "model": "Claude Haiku 4.5",
      "model_id": "claude-haiku-4-5",
      "stated_cutoff": "2025-02",
      "battery": "zod/v4-c",
      "prompt_file": "prompts/sent/zod-v4.txt",
      "test_date": "2026-09-02",
      "self_test": false,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "The below-floor control, and the arm that decided what the rest of the battery was allowed to claim. Five of six probes came back not derivable: a subject whose zod knowledge stops before the 4.0 major produced none of the post-4.2 answers, which is what makes the test arms' denials readable as real gaps. The sixth is the interesting one - asked what an intersection of two strict object schemas parses to, this control gave the correct 4.3.0 answer that every test draw got wrong, and gave it from reasoning that is wrong about how intersections work in any version. The probe's outcome is therefore marked derivable and its mechanism is not, which is the per-component flag JOURNAL/030 introduced, used here for the first time on a probe where the control out-answered the test arm."
    },
    {
      "run_id": "zod--claude-haiku-4-5--v1--2026-08-28",
      "file": "data/zod/haiku-4-5.json",
      "markdown": "data/zod/haiku-4-5.md",
      "supersedes": null,
      "replicate_of": null,
      "library": "zod",
      "library_latest_at_test": "4.5",
      "model": "Claude Haiku 4.5",
      "model_id": "claude-haiku-4-5-20251001",
      "stated_cutoff": null,
      "battery": "zod/v1",
      "prompt_file": null,
      "test_date": "2026-08-28",
      "self_test": false,
      "status": "open",
      "findings": 5,
      "chargeable_findings": 5,
      "withdrawn_findings": 0,
      "summary": "The only subject whose Zod knowledge predates the v4 line entirely. Four findings including an S1 that will not compile, plus a fabricated release history. Battery v1 discriminates strongly here, which is exactly why it is retained for smaller and older models even though it is saturated for frontier subjects."
    },
    {
      "run_id": "zod--claude-opus-5--v2--2026-08-29",
      "file": "data/zod/opus-5-v2.json",
      "markdown": "data/zod/opus-5-v2.md",
      "supersedes": "zod--claude-opus-5--v1--2026-08-29",
      "replicate_of": null,
      "library": "zod",
      "library_latest_at_test": "4.5.2",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "stated_cutoff": "2026-05",
      "battery": "zod/v2",
      "prompt_file": null,
      "test_date": "2026-08-29",
      "self_test": true,
      "status": "open",
      "findings": 6,
      "chargeable_findings": 6,
      "withdrawn_findings": 0,
      "summary": "Battery v1 produced zero S1/S2/S3 for this subject; v2 targets the window between where its Zod knowledge stops (4.1, 2025-08-23) and its stated cutoff (2026-05). Six findings, all chargeable, two of which throw at construction time. The largest measured cost is F3: a confidently stated false negative that sends the user out of the library and into two new production dependencies."
    },
    {
      "run_id": "zod--claude-opus-5--v2r-a--2026-09-01",
      "file": "data/zod/opus-5-v2r-a.json",
      "markdown": "data/zod/opus-5-v2r-a.md",
      "supersedes": null,
      "replicate_of": "zod--claude-opus-5--v2--2026-08-29",
      "library": "zod",
      "library_latest_at_test": "4.5.4",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "stated_cutoff": "2026-05",
      "battery": "zod/v2r-a",
      "prompt_file": "prompts/sent/zod-v2.txt",
      "test_date": "2026-09-01",
      "self_test": true,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "Replicate A of `zod/v2` against Opus 5, prompt unchanged. It placed its describable boundary at Zod 4.1 (2025-08-23), agreeing with its concurrent blind twin `v2r-b` and with `zod/v2` - three measurements, one answer, spread 0 days. The zod arm was pre-registered to spread and did not, which falsifies both volume hypotheses in the predictor test. No findings charged. It differs from its twin on task 9's runtime behaviour while agreeing on the boundary exactly."
    },
    {
      "run_id": "zod--claude-opus-5--v2r-b--2026-09-01",
      "file": "data/zod/opus-5-v2r-b.json",
      "markdown": "data/zod/opus-5-v2r-b.md",
      "supersedes": null,
      "replicate_of": "zod--claude-opus-5--v2--2026-08-29",
      "library": "zod",
      "library_latest_at_test": "4.5.4",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "stated_cutoff": "2026-05",
      "battery": "zod/v2r-b",
      "prompt_file": "prompts/sent/zod-v2.txt",
      "test_date": "2026-09-01",
      "self_test": true,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "Replicate B of `zod/v2` against Opus 5, prompt unchanged. It placed its describable boundary at Zod 4.1 (2025-08-23), identical to its blind twin `v2r-a` and to `zod/v2` - three measurements, one answer, spread 0 days, against a pre-registration that predicted a spread. No findings charged. It differs from both other measurements on task 9, asserting that a defaulted tuple element does not fill a missing slot, which 4.4.0 reversed: a chargeable failure the original run does not carry, flagged and queued."
    },
    {
      "run_id": "zod--claude-opus-5--v3-a--2026-09-02",
      "file": "data/zod/opus-5-v3-a.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "zod",
      "library_latest_at_test": "4.5.4",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "stated_cutoff": "2026-05",
      "battery": "zod/v3-a",
      "prompt_file": "prompts/sent/zod-v3.txt",
      "test_date": "2026-09-02",
      "self_test": true,
      "status": "open",
      "findings": 3,
      "chargeable_findings": 3,
      "withdrawn_findings": 0,
      "summary": "The test arm of the Index's first behavioural battery: every probe asks what a given input parses to, so there is no API name to derive. Three chargeable failures, all in the 4.3.0-4.4.0 window. The battery's real result is elsewhere: on task 4 this draw stated the post-4.4.0 behaviour of a `z.undefined()`-typed key correctly while both below-floor control subjects stated the pre-4.4.0 behaviour - a clean discrimination - and then, four questions later, attributed that same behaviour to 4.0.0. It holds the behaviour and cannot place the release, which is the knowledge-versus-attribution split of JOURNAL/018 shown on a single surface within one transcript. Three other probes it passed are marked DERIVABLE under the battery's pre-registered rule, because a below-floor control passed them too."
    },
    {
      "run_id": "zod--claude-opus-5--v3-b--2026-09-02",
      "file": "data/zod/opus-5-v3-b.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": "zod--claude-opus-5--v3-a--2026-09-02",
      "library": "zod",
      "library_latest_at_test": "4.5.4",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "stated_cutoff": "2026-05",
      "battery": "zod/v3-b",
      "prompt_file": "prompts/sent/zod-v3.txt",
      "test_date": "2026-09-02",
      "self_test": true,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "The blind twin of `zod/v3-a`, charging nothing per the duplicated-test-arm rule. It disagrees with its twin on two of the six probes and in opposite directions - it fails the tuple-default probe its twin passed, and it is the only draw of the four to state correctly that composing a refined object schema throws at construction. The boundary self-report is identical to its twin's and to all three earlier zod runs of this subject. The disagreement is therefore inside the library knowledge, not in the boundary: the same subject, the same prompt, the same hour, two different accounts of what zod does."
    },
    {
      "run_id": "zod--claude-opus-5--v1--2026-08-29",
      "file": "data/zod/opus-5.json",
      "markdown": "data/zod/opus-5.md",
      "supersedes": null,
      "replicate_of": null,
      "library": "zod",
      "library_latest_at_test": "4.5.2",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "stated_cutoff": "2026-05",
      "battery": "zod/v1",
      "prompt_file": null,
      "test_date": "2026-08-29",
      "self_test": true,
      "status": "open",
      "findings": 1,
      "chargeable_findings": 1,
      "withdrawn_findings": 0,
      "summary": "Zero S1/S2/S3 on battery v1 — the battery is saturated for this subject. The one finding is the load-bearing one for the whole dataset: the model's Zod version attribution stops nine months before its own stated cutoff, and it named the mechanism itself. Cutoff date is not knowledge recency. On v1's evidence alone that is a dating failure; the v2 battery that supersedes this run went on to demonstrate the feature gap in code."
    },
    {
      "run_id": "zod--claude-sonnet-5--v2--2026-08-29",
      "file": "data/zod/sonnet-5-v2.json",
      "markdown": "data/zod/sonnet-5-v2.md",
      "supersedes": "zod--claude-sonnet-5--v1--2026-08-29",
      "replicate_of": null,
      "library": "zod",
      "library_latest_at_test": "4.5.2",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "stated_cutoff": "2026-01",
      "battery": "zod/v2",
      "prompt_file": null,
      "test_date": "2026-08-29",
      "self_test": false,
      "status": "open",
      "findings": 7,
      "chargeable_findings": 5,
      "withdrawn_findings": 0,
      "summary": "Worst-performing subject on v2, and the one whose failures are hardest to notice. Seven findings, five chargeable. Its Zod knowledge stops at 4.0 (2025-07-10) against a stated cutoff of 2026-01 — a six-month lag inside its own training window, one full minor further back than Opus 5 or Fable 5."
    },
    {
      "run_id": "zod--claude-sonnet-5--v3-c--2026-09-02",
      "file": "data/zod/sonnet-5-v3-c.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "zod",
      "library_latest_at_test": "4.5.4",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "stated_cutoff": null,
      "battery": "zod/v3-c",
      "prompt_file": "prompts/sent/zod-v3.txt",
      "test_date": "2026-09-02",
      "self_test": false,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "A below-floor control arm, charging nothing. Its job is to say which of the battery's six probes a subject that cannot know 4.4.0 gets right anyway - and the answer is two of them. It gives the pre-4.4.0 answer on the tuple default, on the `z.undefined()`-typed key and on the single-slash URL, which is what makes the test arm's passes on the second of those readable as knowledge. It gives the post-4.4.0 answer on the record key transform and on line-wrapped base64, which marks both probes derivable and removes them from the evidence. Its boundary reading reproduces `zod/v2` exactly: last describable 4.0.0, first unplaceable 4.1.0."
    },
    {
      "run_id": "zod--claude-sonnet-5--v4-a--2026-09-02",
      "file": "data/zod/sonnet-5-v4-a.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": null,
      "library": "zod",
      "library_latest_at_test": "4.5.4",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "stated_cutoff": null,
      "battery": "zod/v4-a",
      "prompt_file": "prompts/sent/zod-v4.txt",
      "test_date": "2026-09-02",
      "self_test": false,
      "status": "open",
      "findings": 4,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "Four reproduced failures inside the 4.2.0-4.3.0 window, none of them chargeable, and the reason is the finding. This draw was told by its environment that its cutoff was January 2026 and refused the claim, putting its own boundary at \"roughly early-to-mid 2025\" - below every release this battery probes. Its blind twin, sent the identical stored prompt at the same moment, accepted January 2026 at face value. The Index charges only where the tested release precedes the subject's stated cutoff, so the charging arm disqualified itself and the arm that would have qualified is the one the rules bar from charging. Everything else in the run reads cleanly: the internal control was placed correctly, so the attribution answers are readable, and the one probe this draw got right - that deriving from a refined schema takes the module out at load - it got right from the Zod 3 mechanism while hedging toward the belief that Zod 4 fixed it."
    },
    {
      "run_id": "zod--claude-sonnet-5--v4-b--2026-09-02",
      "file": "data/zod/sonnet-5-v4-b.json",
      "markdown": null,
      "supersedes": null,
      "replicate_of": "zod--claude-sonnet-5--v4-a--2026-09-02",
      "library": "zod",
      "library_latest_at_test": "4.5.4",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "stated_cutoff": "2026-01",
      "battery": "zod/v4-b",
      "prompt_file": "prompts/sent/zod-v4.txt",
      "test_date": "2026-09-02",
      "self_test": false,
      "status": "open",
      "findings": 0,
      "chargeable_findings": 0,
      "withdrawn_findings": 0,
      "summary": "The twin that stated a cutoff admitting the probe window - and therefore the arm that cannot charge. Four failures inside its own fairness window, all four flagged as chargeable misses, because the arm licensed to charge them stated a cutoff of \"roughly early-to-mid 2025\" and disqualified itself. This is the pattern JOURNAL/029 named - a real failure landing in an arm the rules forbid from charging - recurring in a new place: not on an unstable answer, but on the subject's unstable account of its own training cutoff, which is the input the fairness rule reads. Everything else the two draws agree on, including the attribution boundary at 4.0.0 / 4.1.0 that this subject has now stated in four runs across three batteries."
    },
    {
      "run_id": "zod--claude-sonnet-5--v1--2026-08-29",
      "file": "data/zod/sonnet-5.json",
      "markdown": "data/zod/sonnet-5.md",
      "supersedes": null,
      "replicate_of": null,
      "library": "zod",
      "library_latest_at_test": "4.5.2",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "stated_cutoff": null,
      "battery": "zod/v1",
      "prompt_file": null,
      "test_date": "2026-08-29",
      "self_test": false,
      "status": "open",
      "findings": 3,
      "chargeable_findings": 3,
      "withdrawn_findings": 0,
      "summary": "Half-migrated. Reached the v4 top-level format functions but paired them with the v3 error param, could not resolve whether v4 is the default install, and hedged by emitting a live Zod 3 fallback block. Half-migrated beliefs are their own failure mode and are invisible to anyone checking only \"does it know v4?\""
    }
  ],
  "findings": [
    {
      "run_id": "better-auth--claude-fable-5-1--v7-c--2026-09-06",
      "library": "better-auth",
      "model": "Claude Fable 5.1",
      "model_id": "claude-fable-5-1",
      "battery": "better-auth/v7-c",
      "test_date": "2026-09-06",
      "finding_id": "F1",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "Predicts the freshness check passes for a 30-hour-old session that was used two minutes ago, and names `updatedAt` as the anchor — the pre-1.6.0 semantics, held consistently across two tasks",
      "api": "session.freshAge (measured from session.createdAt)",
      "change_kind": "behavior-changed",
      "introduced_in": "1.6.0",
      "introduced_on": "2026-04-06",
      "chargeable": true,
      "citation": "https://registry.npmjs.org/better-auth/-/better-auth-1.6.0.tgz"
    },
    {
      "run_id": "better-auth--claude-fable-5-1--v7-c--2026-09-06",
      "library": "better-auth",
      "model": "Claude Fable 5.1",
      "model_id": "claude-fable-5-1",
      "battery": "better-auth/v7-c",
      "test_date": "2026-09-06",
      "finding_id": "F2",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "Denies the email-OTP plugin has a resend-reuse option and rebuilds it out of `generateOTP` plus a Redis cache — under `storeOTP: 'hashed'`, which is the one configuration in which the real option refuses to reuse",
      "api": "emailOTP({ resendStrategy })",
      "change_kind": "added",
      "introduced_in": "1.6.0",
      "introduced_on": "2026-04-06",
      "chargeable": true,
      "citation": "https://registry.npmjs.org/better-auth/-/better-auth-1.6.0.tgz"
    },
    {
      "run_id": "better-auth--claude-fable-5-1--v7-c--2026-09-06",
      "library": "better-auth",
      "model": "Claude Fable 5.1",
      "model_id": "claude-fable-5-1",
      "battery": "better-auth/v7-c",
      "test_date": "2026-09-06",
      "finding_id": "F3",
      "severity": "S3",
      "severity_label": "deprecated",
      "title": "Denies the two-factor client plugin takes a page option, names `twoFactorPage` correctly, and dates it to the pre-1.0 releases as something since removed",
      "api": "twoFactorClient({ twoFactorPage })",
      "change_kind": "added",
      "introduced_in": "1.6.0",
      "introduced_on": "2026-04-06",
      "chargeable": true,
      "citation": "https://registry.npmjs.org/better-auth/-/better-auth-1.6.0.tgz"
    },
    {
      "run_id": "better-auth--claude-fable-5--v2-a--2026-09-02",
      "library": "better-auth",
      "model": "Claude Fable 5",
      "model_id": "claude-fable-5",
      "battery": "better-auth/v2-a",
      "test_date": "2026-09-02",
      "finding_id": "F1",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "States that better-auth offers no stateless, store-free session mode, and names cookieCache, Redis and the jwt plugin as the only options",
      "api": "stateless / database-less sessions",
      "change_kind": "added",
      "introduced_in": "1.4.0",
      "introduced_on": "2025-11-22",
      "chargeable": true,
      "citation": "https://github.com/better-auth/better-auth/releases/tag/v1.4.0"
    },
    {
      "run_id": "better-auth--claude-fable-5--v1--2026-09-01",
      "library": "better-auth",
      "model": "Claude Fable 5",
      "model_id": "claude-fable-5",
      "battery": "better-auth/v1",
      "test_date": "2026-09-01",
      "finding_id": "F1",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "States that operating with no server-side session state is not what the library supports, which stopped being true in 1.4.0",
      "api": "stateless session management",
      "change_kind": "added",
      "introduced_in": "1.4.0",
      "introduced_on": "2025-11-22",
      "chargeable": true,
      "citation": "https://github.com/better-auth/better-auth/releases/tag/v1.4.0"
    },
    {
      "run_id": "better-auth--claude-opus-5--v2-a--2026-09-02",
      "library": "better-auth",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "battery": "better-auth/v2-a",
      "test_date": "2026-09-02",
      "finding_id": "F1",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "Denies that better-auth can run with no session store at all, and sends the reader to Redis or the jwt plugin instead",
      "api": "stateless / database-less sessions",
      "change_kind": "added",
      "introduced_in": "1.4.0",
      "introduced_on": "2025-11-22",
      "chargeable": true,
      "citation": "https://github.com/better-auth/better-auth/releases/tag/v1.4.0"
    },
    {
      "run_id": "better-auth--claude-opus-5--v3-a--2026-09-03",
      "library": "better-auth",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "battery": "better-auth/v3-a",
      "test_date": "2026-09-03",
      "finding_id": "F1",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "Denies that `baseURL` can be anything but a static string, and routes a multi-domain deployment through a canonical auth host instead",
      "api": "baseURL as a dynamic multi-host config",
      "change_kind": "added",
      "introduced_in": "1.5.0",
      "introduced_on": "2026-03-01",
      "chargeable": true,
      "citation": "https://registry.npmjs.org/@better-auth/core/-/core-1.5.0.tgz"
    },
    {
      "run_id": "better-auth--claude-opus-5--v5-a--2026-09-03",
      "library": "better-auth",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "battery": "better-auth/v5-a",
      "test_date": "2026-09-03",
      "finding_id": "F1",
      "severity": "S1",
      "severity_label": "breaks-build",
      "title": "Invents an at-rest storage option on the phone-number plugin, and ships `phoneNumber({ storeOTP: 'hashed' })` as the fix for the threat-model row",
      "api": "phoneNumber({ storeOTP })",
      "change_kind": "added",
      "introduced_in": "1.3.0",
      "introduced_on": "2025-07-19",
      "chargeable": true,
      "citation": "https://registry.npmjs.org/better-auth/-/better-auth-1.7.2.tgz"
    },
    {
      "run_id": "better-auth--claude-opus-5--v7-a--2026-09-06",
      "library": "better-auth",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "battery": "better-auth/v7-a",
      "test_date": "2026-09-06",
      "finding_id": "F1",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "Denies the email-OTP plugin has a resend-reuse option and ships a Redis cache in front of `generateOTP` instead of `resendStrategy: 'reuse'`",
      "api": "emailOTP({ resendStrategy })",
      "change_kind": "added",
      "introduced_in": "1.6.0",
      "introduced_on": "2026-04-06",
      "chargeable": true,
      "citation": "https://registry.npmjs.org/better-auth/-/better-auth-1.6.0.tgz"
    },
    {
      "run_id": "better-auth--claude-opus-5--v7-a--2026-09-06",
      "library": "better-auth",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "battery": "better-auth/v7-a",
      "test_date": "2026-09-06",
      "finding_id": "F2",
      "severity": "S3",
      "severity_label": "deprecated",
      "title": "Denies the two-factor client plugin takes a page option — while naming `twoFactorPage` correctly and asserting it was removed rather than added",
      "api": "twoFactorClient({ twoFactorPage })",
      "change_kind": "added",
      "introduced_in": "1.6.0",
      "introduced_on": "2026-04-06",
      "chargeable": true,
      "citation": "https://registry.npmjs.org/better-auth/-/better-auth-1.6.0.tgz"
    },
    {
      "run_id": "better-auth--claude-sonnet-5--v2--2026-09-02",
      "library": "better-auth",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "battery": "better-auth/v2",
      "test_date": "2026-09-02",
      "finding_id": "F1",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "Denies that better-auth can run with zero database, offering cookieCache and Redis instead",
      "api": "stateless / database-less sessions",
      "change_kind": "added",
      "introduced_in": "1.4.0",
      "introduced_on": "2025-11-22",
      "chargeable": true,
      "citation": "https://github.com/better-auth/better-auth/releases/tag/v1.4.0"
    },
    {
      "run_id": "better-auth--claude-sonnet-5--v1--2026-09-01",
      "library": "better-auth",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "battery": "better-auth/v1",
      "test_date": "2026-09-01",
      "finding_id": "F1",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "States that better-auth cannot run without a database-backed session store, which stopped being true in 1.4.0",
      "api": "stateless session management",
      "change_kind": "added",
      "introduced_in": "1.4.0",
      "introduced_on": "2025-11-22",
      "chargeable": true,
      "citation": "https://github.com/better-auth/better-auth/releases/tag/v1.4.0"
    },
    {
      "run_id": "better-auth--claude-sonnet-5--v1--2026-09-01",
      "library": "better-auth",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "battery": "better-auth/v1",
      "test_date": "2026-09-01",
      "finding_id": "F2",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "Asked to flag anything to know before shipping bearer-token auth, says nothing about the plugin accepting unsigned tokens by default",
      "api": "bearer plugin",
      "change_kind": "behavior-changed",
      "introduced_in": "1.1.0",
      "introduced_on": "2024-12-20",
      "chargeable": true,
      "citation": "https://github.com/better-auth/better-auth/releases/tag/v1.1.0"
    },
    {
      "run_id": "langchain--claude-fable-5-1--v5-a--2026-09-06",
      "library": "langchain",
      "model": "Claude Fable 5.1",
      "model_id": "claude-fable-5-1",
      "battery": "langchain/v5-a",
      "test_date": "2026-09-06",
      "finding_id": "F1",
      "severity": "S3",
      "severity_label": "deprecated",
      "title": "Denies that `create_agent` can register stream transformers at all, then ships a consumer-side wrapper that rebuilds per-scope identity by hand - the verdict and the artefact wrong in the same direction, four tasks apart",
      "api": "create_agent(transformers=...)",
      "change_kind": "added",
      "introduced_in": "1.3.0",
      "introduced_on": "2026-05-12",
      "chargeable": true,
      "citation": "https://files.pythonhosted.org/packages/7b/6f/b9a9721c27fbb6d29a6a7cd89d6a41eeffc7c79b49b9a5cf5beb1d60952d/langchain-1.3.0-py3-none-any.whl"
    },
    {
      "run_id": "langchain--claude-fable-5-1--v5-a--2026-09-06",
      "library": "langchain",
      "model": "Claude Fable 5.1",
      "model_id": "claude-fable-5-1",
      "battery": "langchain/v5-a",
      "test_date": "2026-09-06",
      "finding_id": "F2",
      "severity": "S3",
      "severity_label": "deprecated",
      "title": "Names `v2` as the highest event-stream protocol version an agent accepts, and describes it as the ceiling - v3 shipped for langchain agents in the same release as F1's parameter",
      "api": "astream_events(version=\"v3\") on a create_agent agent",
      "change_kind": "added",
      "introduced_in": "1.3.0",
      "introduced_on": "2026-05-12",
      "chargeable": true,
      "citation": "https://docs.langchain.com/oss/python/releases/changelog"
    },
    {
      "run_id": "langchain--claude-fable-5--v2--2026-09-01",
      "library": "langchain",
      "model": "Claude Fable 5",
      "model_id": "claude-fable-5",
      "battery": "langchain/v2",
      "test_date": "2026-09-01",
      "finding_id": "F1",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "Names `extras` correctly but nests the values under a provider key the shipped attribute does not use",
      "api": "tool extras",
      "change_kind": "added",
      "introduced_in": "1.2.0",
      "introduced_on": "2025-12-15",
      "chargeable": true,
      "citation": "https://docs.langchain.com/oss/python/releases/changelog"
    },
    {
      "run_id": "langchain--claude-fable-5--v3--2026-09-01",
      "library": "langchain",
      "model": "Claude Fable 5",
      "model_id": "claude-fable-5",
      "battery": "langchain/v3",
      "test_date": "2026-09-01",
      "finding_id": "F1",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "States that the bare model-retry middleware re-raises when retries run out; the shipped default returns an `AIMessage` and the agent carries on",
      "api": "ModelRetryMiddleware defaults",
      "change_kind": "added",
      "introduced_in": "1.1.0",
      "introduced_on": "2025-11-24",
      "chargeable": true,
      "citation": "https://docs.langchain.com/oss/python/releases/changelog"
    },
    {
      "run_id": "langchain--claude-fable-5--v3--2026-09-01",
      "library": "langchain",
      "model": "Claude Fable 5",
      "model_id": "claude-fable-5",
      "battery": "langchain/v3",
      "test_date": "2026-09-01",
      "finding_id": "F2",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "States the agent's step ceiling is LangGraph's 25 and prescribes raising it; `create_agent` has set a four-figure limit since 1.1.0",
      "api": "create_agent recursion limit",
      "change_kind": "behavior-changed",
      "introduced_in": "1.1.0",
      "introduced_on": "2025-11-24",
      "chargeable": true,
      "citation": "https://files.pythonhosted.org/packages/c4/4d/2758a16ad01716c0fb3fe9ec205fd530eae4528b35a27ff44837c399e032/langchain-1.0.0-py3-none-any.whl"
    },
    {
      "run_id": "langchain--claude-fable-5--v1--2026-08-31",
      "library": "langchain",
      "model": "Claude Fable 5",
      "model_id": "claude-fable-5",
      "battery": "langchain/v1",
      "test_date": "2026-08-31",
      "finding_id": "F1",
      "severity": "S4",
      "severity_label": "wrong-metadata",
      "title": "Version knowledge stops at 1.0.0, with 1.1.0 inside its window",
      "api": null,
      "change_kind": "version-fact",
      "introduced_in": "1.1.0",
      "introduced_on": "2025-11-24",
      "chargeable": true,
      "citation": "https://docs.langchain.com/oss/python/releases/changelog"
    },
    {
      "run_id": "langchain--claude-opus-5--v2--2026-09-01",
      "library": "langchain",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "battery": "langchain/v2",
      "test_date": "2026-09-01",
      "finding_id": "F1",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "Invents `tool.provider_specific` for per-tool provider parameters; the shipped attribute is `extras`",
      "api": "tool extras",
      "change_kind": "added",
      "introduced_in": "1.2.0",
      "introduced_on": "2025-12-15",
      "chargeable": true,
      "citation": "https://docs.langchain.com/oss/python/releases/changelog"
    },
    {
      "run_id": "langchain--claude-opus-5--v3--2026-09-01",
      "library": "langchain",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "battery": "langchain/v3",
      "test_date": "2026-09-01",
      "finding_id": "F1",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "States that the bare model-retry middleware re-raises when retries run out; the shipped default returns an `AIMessage` and the agent carries on",
      "api": "ModelRetryMiddleware defaults",
      "change_kind": "added",
      "introduced_in": "1.1.0",
      "introduced_on": "2025-11-24",
      "chargeable": true,
      "citation": "https://docs.langchain.com/oss/python/releases/changelog"
    },
    {
      "run_id": "langchain--claude-opus-5--v3--2026-09-01",
      "library": "langchain",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "battery": "langchain/v3",
      "test_date": "2026-09-01",
      "finding_id": "F2",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "States the agent's step ceiling is LangGraph's 25 and prescribes raising it; `create_agent` has set a four-figure limit since 1.1.0",
      "api": "create_agent recursion limit",
      "change_kind": "behavior-changed",
      "introduced_in": "1.1.0",
      "introduced_on": "2025-11-24",
      "chargeable": true,
      "citation": "https://files.pythonhosted.org/packages/c4/4d/2758a16ad01716c0fb3fe9ec205fd530eae4528b35a27ff44837c399e032/langchain-1.0.0-py3-none-any.whl"
    },
    {
      "run_id": "langchain--claude-opus-5--v3--2026-09-01",
      "library": "langchain",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "battery": "langchain/v3",
      "test_date": "2026-09-01",
      "finding_id": "F3",
      "severity": "S3",
      "severity_label": "deprecated",
      "title": "Writes middleware against `ModelRequest.system_prompt`; the field was renamed to `system_message` in 1.1.0 and the string route is a documented deprecation",
      "api": "ModelRequest.system_message",
      "change_kind": "renamed",
      "introduced_in": "1.1.0",
      "introduced_on": "2025-11-24",
      "chargeable": true,
      "citation": "https://files.pythonhosted.org/packages/c4/4d/2758a16ad01716c0fb3fe9ec205fd530eae4528b35a27ff44837c399e032/langchain-1.0.0-py3-none-any.whl"
    },
    {
      "run_id": "langchain--claude-opus-5--v6-a--2026-09-06",
      "library": "langchain",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "battery": "langchain/v6-a",
      "test_date": "2026-09-06",
      "finding_id": "F1",
      "severity": "S3",
      "severity_label": "deprecated",
      "title": "Denies that a LangChain tool has any place of its own for provider-specific fields, then rebuilds the tool definition by hand — the verdict, the artefact and the attribution all wrong in the same direction",
      "api": "@tool(extras={...})",
      "change_kind": "added",
      "introduced_in": "1.2.0",
      "introduced_on": "2025-12-15",
      "chargeable": true,
      "citation": "https://docs.langchain.com/oss/python/releases/changelog"
    },
    {
      "run_id": "langchain--claude-opus-5--v1--2026-08-31",
      "library": "langchain",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "battery": "langchain/v1",
      "test_date": "2026-08-31",
      "finding_id": "F1",
      "severity": "S4",
      "severity_label": "wrong-metadata",
      "title": "Version knowledge stops at 1.0.0 while 1.1.0 and 1.2.0 shipped inside its window",
      "api": null,
      "change_kind": "version-fact",
      "introduced_in": "1.1.0",
      "introduced_on": "2025-11-24",
      "chargeable": true,
      "citation": "https://docs.langchain.com/oss/python/releases/changelog"
    },
    {
      "run_id": "langchain--claude-sonnet-5--v2--2026-09-01",
      "library": "langchain",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "battery": "langchain/v2",
      "test_date": "2026-09-01",
      "finding_id": "F1",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "Routes provider-specific tool parameters through `metadata=`, a real field whose documented destination is callback handlers, not the provider",
      "api": "tool extras",
      "change_kind": "added",
      "introduced_in": "1.2.0",
      "introduced_on": "2025-12-15",
      "chargeable": true,
      "citation": "https://docs.langchain.com/oss/python/releases/changelog"
    },
    {
      "run_id": "langchain--claude-sonnet-5--v3--2026-09-01",
      "library": "langchain",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "battery": "langchain/v3",
      "test_date": "2026-09-01",
      "finding_id": "F1",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "Builds middleware around `modify_model_request`, a hook that exists in no released langchain 1.x — the middleware is registered and never fires",
      "api": "AgentMiddleware.modify_model_request",
      "change_kind": "removed",
      "introduced_in": "1.0.0",
      "introduced_on": "2025-10-17",
      "chargeable": true,
      "citation": "https://files.pythonhosted.org/packages/f7/04/374f6014ed6959dbdab92962c2b09e4d0223ed6a82f65694870b46d2c13f/langchain-1.3.18-py3-none-any.whl"
    },
    {
      "run_id": "langchain--claude-sonnet-5--v3--2026-09-01",
      "library": "langchain",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "battery": "langchain/v3",
      "test_date": "2026-09-01",
      "finding_id": "F2",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "States that the bare model-retry middleware re-raises when retries run out; the shipped default returns an `AIMessage` and the agent carries on",
      "api": "ModelRetryMiddleware defaults",
      "change_kind": "added",
      "introduced_in": "1.1.0",
      "introduced_on": "2025-11-24",
      "chargeable": true,
      "citation": "https://docs.langchain.com/oss/python/releases/changelog"
    },
    {
      "run_id": "langchain--claude-sonnet-5--v3--2026-09-01",
      "library": "langchain",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "battery": "langchain/v3",
      "test_date": "2026-09-01",
      "finding_id": "F3",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "States the agent's step ceiling is LangGraph's 25 and prescribes raising it; `create_agent` has set a four-figure limit since 1.1.0",
      "api": "create_agent recursion limit",
      "change_kind": "behavior-changed",
      "introduced_in": "1.1.0",
      "introduced_on": "2025-11-24",
      "chargeable": true,
      "citation": "https://files.pythonhosted.org/packages/c4/4d/2758a16ad01716c0fb3fe9ec205fd530eae4528b35a27ff44837c399e032/langchain-1.0.0-py3-none-any.whl"
    },
    {
      "run_id": "langchain--claude-sonnet-5--v6-c--2026-09-06",
      "library": "langchain",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "battery": "langchain/v6-c",
      "test_date": "2026-09-06",
      "finding_id": "F1",
      "severity": "S3",
      "severity_label": "deprecated",
      "title": "Denies a tool has any place of its own for provider-specific fields, names the field list it believes complete, and hand-builds the Anthropic tool definition instead",
      "api": "@tool(extras={...})",
      "change_kind": "added",
      "introduced_in": "1.2.0",
      "introduced_on": "2025-12-15",
      "chargeable": true,
      "citation": "https://docs.langchain.com/oss/python/releases/changelog"
    },
    {
      "run_id": "langchain--claude-sonnet-5--v1--2026-08-31",
      "library": "langchain",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "battery": "langchain/v1",
      "test_date": "2026-08-31",
      "finding_id": "F1",
      "severity": "S3",
      "severity_label": "deprecated",
      "title": "Builds agents with the deprecated LangGraph prebuilt instead of create_agent",
      "api": "langgraph.prebuilt.create_react_agent",
      "change_kind": "renamed",
      "introduced_in": "1.0.0",
      "introduced_on": "2025-10-17",
      "chargeable": true,
      "citation": "https://docs.langchain.com/oss/python/migrate/langgraph-v1"
    },
    {
      "run_id": "langchain--claude-sonnet-5--v1--2026-08-31",
      "library": "langchain",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "battery": "langchain/v1",
      "test_date": "2026-08-31",
      "finding_id": "F2",
      "severity": "S1",
      "severity_label": "breaks-build",
      "title": "`from langchain import hub` — removed from the package in 1.0.0",
      "api": "langchain.hub",
      "change_kind": "removed",
      "introduced_in": "1.0.0",
      "introduced_on": "2025-10-17",
      "chargeable": true,
      "citation": "https://docs.langchain.com/oss/python/migrate/langchain-v1"
    },
    {
      "run_id": "langchain--claude-sonnet-5--v1--2026-08-31",
      "library": "langchain",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "battery": "langchain/v1",
      "test_date": "2026-08-31",
      "finding_id": "F3",
      "severity": "S4",
      "severity_label": "wrong-metadata",
      "title": "Version knowledge stops at 0.3, sixteen months before its stated cutoff",
      "api": null,
      "change_kind": "version-fact",
      "introduced_in": "1.0.0",
      "introduced_on": "2025-10-17",
      "chargeable": true,
      "citation": "https://pypi.org/pypi/langchain/json"
    },
    {
      "run_id": "next.js--claude-fable-5--v3-c--2026-09-02",
      "library": "next.js",
      "model": "Claude Fable 5",
      "model_id": "claude-fable-5",
      "battery": "next.js/v3-c",
      "test_date": "2026-09-02",
      "finding_id": "F1",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "Answers \"yes\" and configures experimental.clientSegmentCache, a key removed in patch 16.0.3",
      "api": "experimental.clientSegmentCache",
      "change_kind": "removed",
      "introduced_in": "16.0.3",
      "introduced_on": "2025-11-13",
      "chargeable": true,
      "citation": "https://unpkg.com/next@16.0.2/dist/server/config-shared.d.ts"
    },
    {
      "run_id": "next.js--claude-fable-5--v1--2026-08-31",
      "library": "next.js",
      "model": "Claude Fable 5",
      "model_id": "claude-fable-5",
      "battery": "next.js/v1",
      "test_date": "2026-08-31",
      "finding_id": "F1",
      "severity": "S1",
      "severity_label": "breaks-build",
      "title": "Single-argument revalidateTag in a generated Server Action",
      "api": "revalidateTag",
      "change_kind": "behavior-changed",
      "introduced_in": "16.0.0",
      "introduced_on": "2025-10-22",
      "chargeable": true,
      "citation": "https://nextjs.org/docs/app/guides/upgrading/version-16"
    },
    {
      "run_id": "next.js--claude-fable-5--v1--2026-08-31",
      "library": "next.js",
      "model": "Claude Fable 5",
      "model_id": "claude-fable-5",
      "battery": "next.js/v1",
      "test_date": "2026-08-31",
      "finding_id": "F2",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "States a parallel route builds without default.js; on 16.0.0 the build fails",
      "api": "parallel routes default.js",
      "change_kind": "stricter",
      "introduced_in": "16.0.0",
      "introduced_on": "2025-10-22",
      "chargeable": true,
      "citation": "https://nextjs.org/blog/next-16"
    },
    {
      "run_id": "next.js--claude-opus-5--v2-a--2026-09-02",
      "library": "next.js",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "battery": "next.js/v2-a",
      "test_date": "2026-09-02",
      "finding_id": "F1",
      "severity": "S1",
      "severity_label": "breaks-build",
      "title": "Invents images.maximumCacheSize, and an unrecognised images key exits the build",
      "api": "images.maximumCacheSize",
      "change_kind": "added",
      "introduced_in": "16.1.7",
      "introduced_on": "2026-03-16",
      "chargeable": true,
      "citation": "https://unpkg.com/next@16.3.4/dist/shared/lib/image-config.js"
    },
    {
      "run_id": "next.js--claude-opus-5--v2-a--2026-09-02",
      "library": "next.js",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "battery": "next.js/v2-a",
      "test_date": "2026-09-02",
      "finding_id": "F2",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "Recommends experimental.clientSegmentCache, removed in 16.0.3 and now silently ignored",
      "api": "experimental.clientSegmentCache",
      "change_kind": "removed",
      "introduced_in": "16.0.3",
      "introduced_on": "2025-11-13",
      "chargeable": true,
      "citation": "https://unpkg.com/next@16.0.2/dist/server/config-shared.d.ts"
    },
    {
      "run_id": "next.js--claude-opus-5--v2-a--2026-09-02",
      "library": "next.js",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "battery": "next.js/v2-a",
      "test_date": "2026-09-02",
      "finding_id": "F3",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "Names Noto Sans as the ImageResponse default, having explicitly considered and rejected Geist",
      "api": "ImageResponse default font",
      "change_kind": "behavior-changed",
      "introduced_in": "16.2.0",
      "introduced_on": "2026-03-18",
      "chargeable": true,
      "citation": "https://unpkg.com/next@16.2.0/dist/compiled/@vercel/og/index.node.js"
    },
    {
      "run_id": "next.js--claude-opus-5--v2-a--2026-09-02",
      "library": "next.js",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "battery": "next.js/v2-a",
      "test_date": "2026-09-02",
      "finding_id": "F4",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "Asserts Link has no transitionTypes prop and predicts a React unknown-attribute warning in both routers",
      "api": "Link transitionTypes",
      "change_kind": "added",
      "introduced_in": "16.2.0",
      "introduced_on": "2026-03-18",
      "chargeable": true,
      "citation": "https://unpkg.com/next@16.3.4/dist/client/link.js"
    },
    {
      "run_id": "next.js--claude-opus-5--v3-e--2026-09-02",
      "library": "next.js",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "battery": "next.js/v3-e",
      "test_date": "2026-09-02",
      "finding_id": "F1",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "Denies any lever on prefetch request count exists, three releases after experimental.prefetchInlining shipped one",
      "api": "experimental.prefetchInlining",
      "change_kind": "added",
      "introduced_in": "16.2.0",
      "introduced_on": "2026-03-18",
      "chargeable": true,
      "citation": "https://nextjs.org/blog/next-16-2"
    },
    {
      "run_id": "next.js--claude-opus-5--v3-e--2026-09-02",
      "library": "next.js",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "battery": "next.js/v3-e",
      "test_date": "2026-09-02",
      "finding_id": "F2",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "Puts the image body cap in the low tens of megabytes and denies a config key lowers it",
      "api": "images.maximumResponseBody",
      "change_kind": "added",
      "introduced_in": "16.1.5",
      "introduced_on": "2026-01-26",
      "chargeable": true,
      "citation": "https://unpkg.com/next@16.3.4/dist/shared/lib/image-config.js"
    },
    {
      "run_id": "next.js--claude-opus-5--v1--2026-08-31",
      "library": "next.js",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "battery": "next.js/v1",
      "test_date": "2026-08-31",
      "finding_id": "F1",
      "severity": "S1",
      "severity_label": "breaks-build",
      "title": "Ships experimental.ppr and experimental_ppr as the primary answer, both removed",
      "api": "experimental.ppr / export const experimental_ppr",
      "change_kind": "removed",
      "introduced_in": "16.0.0",
      "introduced_on": "2025-10-22",
      "chargeable": true,
      "citation": "https://nextjs.org/blog/next-16"
    },
    {
      "run_id": "next.js--claude-opus-5--v1--2026-08-31",
      "library": "next.js",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "battery": "next.js/v1",
      "test_date": "2026-08-31",
      "finding_id": "F2",
      "severity": "S1",
      "severity_label": "breaks-build",
      "title": "Single-argument revalidateTag in a generated Server Action",
      "api": "revalidateTag",
      "change_kind": "behavior-changed",
      "introduced_in": "16.0.0",
      "introduced_on": "2025-10-22",
      "chargeable": true,
      "citation": "https://nextjs.org/docs/app/guides/upgrading/version-16"
    },
    {
      "run_id": "next.js--claude-opus-5--v1--2026-08-31",
      "library": "next.js",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "battery": "next.js/v1",
      "test_date": "2026-08-31",
      "finding_id": "F3",
      "severity": "S4",
      "severity_label": "wrong-metadata",
      "title": "Dates the middleware-to-proxy rename to 15.5; it shipped in 16.0.0",
      "api": "proxy.ts",
      "change_kind": "version-fact",
      "introduced_in": "16.0.0",
      "introduced_on": "2025-10-22",
      "chargeable": true,
      "citation": "https://nextjs.org/blog/next-16"
    },
    {
      "run_id": "next.js--claude-opus-5--v1--2026-08-31",
      "library": "next.js",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "battery": "next.js/v1",
      "test_date": "2026-08-31",
      "finding_id": "F4",
      "severity": "S4",
      "severity_label": "wrong-metadata",
      "title": "Version knowledge stops at 16.0.0, seven months before its stated cutoff",
      "api": null,
      "change_kind": "version-fact",
      "introduced_in": "16.1.0",
      "introduced_on": "2025-12-18",
      "chargeable": true,
      "citation": "https://api.github.com/repos/vercel/next.js/releases"
    },
    {
      "run_id": "next.js--claude-sonnet-5--v3-a--2026-09-02",
      "library": "next.js",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "battery": "next.js/v3-a",
      "test_date": "2026-09-02",
      "finding_id": "F1",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "Answers \"yes\" and configures experimental.clientSegmentCache, a key removed in patch 16.0.3",
      "api": "experimental.clientSegmentCache",
      "change_kind": "removed",
      "introduced_in": "16.0.3",
      "introduced_on": "2025-11-13",
      "chargeable": true,
      "citation": "https://unpkg.com/next@16.0.2/dist/server/config-shared.d.ts"
    },
    {
      "run_id": "next.js--claude-sonnet-5--v1--2026-08-31",
      "library": "next.js",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "battery": "next.js/v1",
      "test_date": "2026-08-31",
      "finding_id": "F1",
      "severity": "S3",
      "severity_label": "deprecated",
      "title": "Generates middleware.ts, deprecated in favour of proxy.ts",
      "api": "middleware.ts / export function middleware",
      "change_kind": "renamed",
      "introduced_in": "16.0.0",
      "introduced_on": "2025-10-22",
      "chargeable": true,
      "citation": "https://nextjs.org/blog/next-16"
    },
    {
      "run_id": "next.js--claude-sonnet-5--v1--2026-08-31",
      "library": "next.js",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "battery": "next.js/v1",
      "test_date": "2026-08-31",
      "finding_id": "F2",
      "severity": "S1",
      "severity_label": "breaks-build",
      "title": "Single-argument revalidateTag in a generated Server Action",
      "api": "revalidateTag",
      "change_kind": "behavior-changed",
      "introduced_in": "16.0.0",
      "introduced_on": "2025-10-22",
      "chargeable": true,
      "citation": "https://nextjs.org/docs/app/guides/upgrading/version-16"
    },
    {
      "run_id": "next.js--claude-sonnet-5--v1--2026-08-31",
      "library": "next.js",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "battery": "next.js/v1",
      "test_date": "2026-08-31",
      "finding_id": "F3",
      "severity": "S1",
      "severity_label": "breaks-build",
      "title": "Configures partial prerendering with experimental.ppr and experimental_ppr, both removed",
      "api": "experimental.ppr / export const experimental_ppr",
      "change_kind": "removed",
      "introduced_in": "16.0.0",
      "introduced_on": "2025-10-22",
      "chargeable": true,
      "citation": "https://nextjs.org/blog/next-16"
    },
    {
      "run_id": "next.js--claude-sonnet-5--v1--2026-08-31",
      "library": "next.js",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "battery": "next.js/v1",
      "test_date": "2026-08-31",
      "finding_id": "F4",
      "severity": "S1",
      "severity_label": "breaks-build",
      "title": "package.json lint script calls next lint, a removed command",
      "api": "next lint",
      "change_kind": "removed",
      "introduced_in": "16.0.0",
      "introduced_on": "2025-10-22",
      "chargeable": true,
      "citation": "https://nextjs.org/blog/next-16"
    },
    {
      "run_id": "next.js--claude-sonnet-5--v1--2026-08-31",
      "library": "next.js",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "battery": "next.js/v1",
      "test_date": "2026-08-31",
      "finding_id": "F5",
      "severity": "S4",
      "severity_label": "wrong-metadata",
      "title": "States next build uses Webpack by default",
      "api": "next build",
      "change_kind": "behavior-changed",
      "introduced_in": "16.0.0",
      "introduced_on": "2025-10-22",
      "chargeable": true,
      "citation": "https://nextjs.org/blog/next-16"
    },
    {
      "run_id": "next.js--claude-sonnet-5--v1--2026-08-31",
      "library": "next.js",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "battery": "next.js/v1",
      "test_date": "2026-08-31",
      "finding_id": "F6",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "States the default image cache TTL is 60 seconds",
      "api": "images.minimumCacheTTL",
      "change_kind": "behavior-changed",
      "introduced_in": "16.0.0",
      "introduced_on": "2025-10-22",
      "chargeable": true,
      "citation": "https://nextjs.org/blog/next-16"
    },
    {
      "run_id": "next.js--claude-sonnet-5--v1--2026-08-31",
      "library": "next.js",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "battery": "next.js/v1",
      "test_date": "2026-08-31",
      "finding_id": "F7",
      "severity": "S4",
      "severity_label": "wrong-metadata",
      "title": "Version knowledge stops at 15.0.0, fifteen months before its stated cutoff",
      "api": null,
      "change_kind": "version-fact",
      "introduced_in": "15.1.0",
      "introduced_on": "2024-12-10",
      "chargeable": true,
      "citation": "https://api.github.com/repos/vercel/next.js/releases/tags/v16.0.0"
    },
    {
      "run_id": "prisma--claude-fable-5-1--v4-c--2026-09-06",
      "library": "prisma",
      "model": "Claude Fable 5.1",
      "model_id": "claude-fable-5-1",
      "battery": "prisma/v4-c",
      "test_date": "2026-09-06",
      "finding_id": "F1",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "Denies the Prisma CLI has any command for attaching a project to an existing Prisma Postgres database",
      "api": "prisma postgres link",
      "change_kind": "added",
      "introduced_in": "7.6.0",
      "introduced_on": "2026-03-27",
      "chargeable": true,
      "citation": "https://github.com/prisma/prisma/releases/tag/7.6.0"
    },
    {
      "run_id": "prisma--claude-fable-5-1--v4-c--2026-09-06",
      "library": "prisma",
      "model": "Claude Fable 5.1",
      "model_id": "claude-fable-5-1",
      "battery": "prisma/v4-c",
      "test_date": "2026-09-06",
      "finding_id": "F2",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "Denies the query plan cache can be sized or disabled from the PrismaClient constructor, and rejects the working line that does it",
      "api": "queryPlanCacheMaxSize",
      "change_kind": "added",
      "introduced_in": "7.8.0",
      "introduced_on": "2026-04-22",
      "chargeable": true,
      "citation": "https://github.com/prisma/prisma/releases/tag/7.8.0"
    },
    {
      "run_id": "prisma--claude-fable-5-1--v4-c--2026-09-06",
      "library": "prisma",
      "model": "Claude Fable 5.1",
      "model_id": "claude-fable-5-1",
      "battery": "prisma/v4-c",
      "test_date": "2026-09-06",
      "finding_id": "F3",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "Denies the pg adapter constructor takes a bare connection string, and rewrites the working call",
      "api": "new PrismaPg(connectionString)",
      "change_kind": "added",
      "introduced_in": "7.6.0",
      "introduced_on": "2026-03-27",
      "chargeable": true,
      "citation": "https://github.com/prisma/prisma/releases/tag/7.6.0"
    },
    {
      "run_id": "prisma--claude-fable-5-1--v4-c--2026-09-06",
      "library": "prisma",
      "model": "Claude Fable 5.1",
      "model_id": "claude-fable-5-1",
      "battery": "prisma/v4-c",
      "test_date": "2026-09-06",
      "finding_id": "F4",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "Denies @prisma/adapter-pg exposes any control over prepared-statement names, and recommends running the query outside Prisma instead",
      "api": "statementNameGenerator",
      "change_kind": "added",
      "introduced_in": "7.6.0",
      "introduced_on": "2026-03-27",
      "chargeable": true,
      "citation": "https://github.com/prisma/prisma/releases/tag/7.6.0"
    },
    {
      "run_id": "prisma--claude-fable-5-1--v4-c--2026-09-06",
      "library": "prisma",
      "model": "Claude Fable 5.1",
      "model_id": "claude-fable-5-1",
      "battery": "prisma/v4-c",
      "test_date": "2026-09-06",
      "finding_id": "F5",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "Recites the current deny list and then puts $transaction back into it, denying nested transactions and rejecting the working call",
      "api": "tx.$transaction()",
      "change_kind": "added",
      "introduced_in": "7.5.0",
      "introduced_on": "2026-03-11",
      "chargeable": true,
      "citation": "https://github.com/prisma/prisma/releases/tag/7.5.0"
    },
    {
      "run_id": "prisma--claude-fable-5-1--v4-c--2026-09-06",
      "library": "prisma",
      "model": "Claude Fable 5.1",
      "model_id": "claude-fable-5-1",
      "battery": "prisma/v4-c",
      "test_date": "2026-09-06",
      "finding_id": "F6",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "Denies the CLI has a single command that sequences the whole project setup",
      "api": "prisma bootstrap",
      "change_kind": "added",
      "introduced_in": "7.7.0",
      "introduced_on": "2026-04-07",
      "chargeable": true,
      "citation": "https://github.com/prisma/prisma/releases/tag/7.7.0"
    },
    {
      "run_id": "prisma--claude-fable-5-1--v5-e--2026-09-06",
      "library": "prisma",
      "model": "Claude Fable 5.1",
      "model_id": "claude-fable-5-1",
      "battery": "prisma/v5-e",
      "test_date": "2026-09-06",
      "finding_id": "F1",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "Denies that `db push` and `migrate dev` accept a `--url` flag",
      "api": "prisma db push --url",
      "change_kind": "added",
      "introduced_in": "7.2.0",
      "introduced_on": "2025-12-17",
      "chargeable": true,
      "citation": "https://github.com/prisma/prisma/releases/tag/7.2.0"
    },
    {
      "run_id": "prisma--claude-fable-5-1--v5-e--2026-09-06",
      "library": "prisma",
      "model": "Claude Fable 5.1",
      "model_id": "claude-fable-5-1",
      "battery": "prisma/v5-e",
      "test_date": "2026-09-06",
      "finding_id": "F1",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "Denies that Prisma ships a first-party SQLCommenter plugin",
      "api": "@prisma/sqlcommenter-query-insights",
      "change_kind": "added",
      "introduced_in": "7.2.0",
      "introduced_on": "2025-12-17",
      "chargeable": true,
      "citation": "https://github.com/prisma/prisma/releases/tag/7.2.0"
    },
    {
      "run_id": "prisma--claude-fable-5--v1--2026-08-31",
      "library": "prisma",
      "model": "Claude Fable 5",
      "model_id": "claude-fable-5",
      "battery": "prisma/v1",
      "test_date": "2026-08-31",
      "finding_id": "F1",
      "severity": "S1",
      "severity_label": "breaks-build",
      "title": "Constructs the client with no arguments in every runnable artefact",
      "api": "new PrismaClient()",
      "change_kind": "removed",
      "introduced_in": "7.0.0",
      "introduced_on": "2025-11-19",
      "chargeable": true,
      "citation": "https://github.com/prisma/prisma/releases/tag/7.0.0"
    },
    {
      "run_id": "prisma--claude-fable-5--v1--2026-08-31",
      "library": "prisma",
      "model": "Claude Fable 5",
      "model_id": "claude-fable-5",
      "battery": "prisma/v1",
      "test_date": "2026-08-31",
      "finding_id": "F2",
      "severity": "S1",
      "severity_label": "breaks-build",
      "title": "Generator block with no output path",
      "api": "generator client { output }",
      "change_kind": "requirement",
      "introduced_in": "7.0.0",
      "introduced_on": "2025-11-19",
      "chargeable": true,
      "citation": "https://www.prisma.io/docs/orm/more/upgrade-guides/upgrading-versions/upgrading-to-prisma-7"
    },
    {
      "run_id": "prisma--claude-fable-5--v1--2026-08-31",
      "library": "prisma",
      "model": "Claude Fable 5",
      "model_id": "claude-fable-5",
      "battery": "prisma/v1",
      "test_date": "2026-08-31",
      "finding_id": "F3",
      "severity": "S3",
      "severity_label": "deprecated",
      "title": "Uses the superseded generator provider in every schema",
      "api": "provider = \"prisma-client-js\"",
      "change_kind": "deprecated",
      "introduced_in": "7.0.0",
      "introduced_on": "2025-11-19",
      "chargeable": true,
      "citation": "https://www.prisma.io/docs/orm/more/upgrade-guides/upgrading-versions/upgrading-to-prisma-7"
    },
    {
      "run_id": "prisma--claude-fable-5--v1--2026-08-31",
      "library": "prisma",
      "model": "Claude Fable 5",
      "model_id": "claude-fable-5",
      "battery": "prisma/v1",
      "test_date": "2026-08-31",
      "finding_id": "F4",
      "severity": "S1",
      "severity_label": "breaks-build",
      "title": "Imports PrismaClient from @prisma/client",
      "api": "import { PrismaClient } from '@prisma/client'",
      "change_kind": "behavior-changed",
      "introduced_in": "7.0.0",
      "introduced_on": "2025-11-19",
      "chargeable": true,
      "citation": "https://www.prisma.io/docs/orm/more/upgrade-guides/upgrading-versions/upgrading-to-prisma-7"
    },
    {
      "run_id": "prisma--claude-fable-5--v1--2026-08-31",
      "library": "prisma",
      "model": "Claude Fable 5",
      "model_id": "claude-fable-5",
      "battery": "prisma/v1",
      "test_date": "2026-08-31",
      "finding_id": "F5",
      "severity": "S1",
      "severity_label": "breaks-build",
      "title": "No config file in the project it sets up; the datasource URL stays in the schema",
      "api": "prisma.config.ts",
      "change_kind": "requirement",
      "introduced_in": "7.0.0",
      "introduced_on": "2025-11-19",
      "chargeable": true,
      "citation": "https://github.com/prisma/prisma/releases/tag/7.0.0"
    },
    {
      "run_id": "prisma--claude-fable-5--v1--2026-08-31",
      "library": "prisma",
      "model": "Claude Fable 5",
      "model_id": "claude-fable-5",
      "battery": "prisma/v1",
      "test_date": "2026-08-31",
      "finding_id": "F6",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "States the CLI loads .env itself — then contradicts it in the belief probe",
      "api": "automatic .env loading",
      "change_kind": "behavior-changed",
      "introduced_in": "7.0.0",
      "introduced_on": "2025-11-19",
      "chargeable": true,
      "citation": "https://github.com/prisma/prisma/releases/tag/7.0.0"
    },
    {
      "run_id": "prisma--claude-fable-5--v1--2026-08-31",
      "library": "prisma",
      "model": "Claude Fable 5",
      "model_id": "claude-fable-5",
      "battery": "prisma/v1",
      "test_date": "2026-08-31",
      "finding_id": "F7",
      "severity": "S1",
      "severity_label": "breaks-build",
      "title": "Seed command in package.json, with the implicit-run promise",
      "api": "package.json prisma key",
      "change_kind": "removed",
      "introduced_in": "7.0.0",
      "introduced_on": "2025-11-19",
      "chargeable": true,
      "citation": "https://github.com/prisma/prisma/releases/tag/7.0.0"
    },
    {
      "run_id": "prisma--claude-fable-5--v1--2026-08-31",
      "library": "prisma",
      "model": "Claude Fable 5",
      "model_id": "claude-fable-5",
      "battery": "prisma/v1",
      "test_date": "2026-08-31",
      "finding_id": "F8",
      "severity": "S1",
      "severity_label": "breaks-build",
      "title": "Recommends prisma generate --no-engine",
      "api": "prisma generate --no-engine",
      "change_kind": "removed",
      "introduced_in": "7.0.0",
      "introduced_on": "2025-11-19",
      "chargeable": true,
      "citation": "https://github.com/prisma/prisma/releases/tag/7.0.0"
    },
    {
      "run_id": "prisma--claude-fable-5--v1--2026-08-31",
      "library": "prisma",
      "model": "Claude Fable 5",
      "model_id": "claude-fable-5",
      "battery": "prisma/v1",
      "test_date": "2026-08-31",
      "finding_id": "F9",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "Deployment advice organised around matching engine binaries to the container's libc",
      "api": "engineType",
      "change_kind": "removed",
      "introduced_in": "7.0.0",
      "introduced_on": "2025-11-19",
      "chargeable": true,
      "citation": "https://github.com/prisma/prisma/releases/tag/7.0.0"
    },
    {
      "run_id": "prisma--claude-fable-5--v1--2026-08-31",
      "library": "prisma",
      "model": "Claude Fable 5",
      "model_id": "claude-fable-5",
      "battery": "prisma/v1",
      "test_date": "2026-08-31",
      "finding_id": "F10",
      "severity": "S1",
      "severity_label": "breaks-build",
      "title": "migrate diff with the removed --from-url / --to-schema-datamodel flags",
      "api": "prisma migrate diff",
      "change_kind": "renamed",
      "introduced_in": "7.0.0",
      "introduced_on": "2025-11-19",
      "chargeable": true,
      "citation": "https://github.com/prisma/prisma/releases/tag/7.0.0"
    },
    {
      "run_id": "prisma--claude-fable-5--v1--2026-08-31",
      "library": "prisma",
      "model": "Claude Fable 5",
      "model_id": "claude-fable-5",
      "battery": "prisma/v1",
      "test_date": "2026-08-31",
      "finding_id": "F12",
      "severity": "S4",
      "severity_label": "wrong-metadata",
      "title": "Sets a MongoDB team up on the current major, which dropped MongoDB",
      "api": "MongoDB support",
      "change_kind": "removed",
      "introduced_in": "7.0.0",
      "introduced_on": "2025-11-19",
      "chargeable": true,
      "citation": "https://github.com/prisma/prisma/releases/tag/7.0.0"
    },
    {
      "run_id": "prisma--claude-fable-5--v1--2026-08-31",
      "library": "prisma",
      "model": "Claude Fable 5",
      "model_id": "claude-fable-5",
      "battery": "prisma/v1",
      "test_date": "2026-08-31",
      "finding_id": "F13",
      "severity": "S4",
      "severity_label": "wrong-metadata",
      "title": "Knowledge stops at 6.7.0 — eight months before its own stated cutoff, and six months earlier than the same model's boundary on four other libraries",
      "api": null,
      "change_kind": "version-fact",
      "introduced_in": "6.8.0",
      "introduced_on": "2025-05-15",
      "chargeable": true,
      "citation": "https://registry.npmjs.org/prisma"
    },
    {
      "run_id": "prisma--claude-opus-5--v2-a--2026-09-05",
      "library": "prisma",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "battery": "prisma/v2-a",
      "test_date": "2026-09-05",
      "finding_id": "F1",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "Denies that a Prisma schema can express a partial index, and writes the denial into the schema file as an instruction not to add the constraint",
      "api": "@@index([...], where: ...) / @@unique([...], where: ...)",
      "change_kind": "added",
      "introduced_in": "7.4.0",
      "introduced_on": "2026-02-11",
      "chargeable": true,
      "citation": "https://github.com/prisma/prisma/releases/tag/7.4.0"
    },
    {
      "run_id": "prisma--claude-opus-5--v4-a--2026-09-06",
      "library": "prisma",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "battery": "prisma/v4-a",
      "test_date": "2026-09-06",
      "finding_id": "F1",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "Denies the Prisma CLI has any command for attaching a project to an existing Prisma Postgres database",
      "api": "prisma postgres link",
      "change_kind": "added",
      "introduced_in": "7.6.0",
      "introduced_on": "2026-03-27",
      "chargeable": true,
      "citation": "https://github.com/prisma/prisma/releases/tag/7.6.0"
    },
    {
      "run_id": "prisma--claude-opus-5--v4-a--2026-09-06",
      "library": "prisma",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "battery": "prisma/v4-a",
      "test_date": "2026-09-06",
      "finding_id": "F2",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "Denies the query plan cache can be sized or disabled from the PrismaClient constructor, and rejects the working line that does it",
      "api": "queryPlanCacheMaxSize",
      "change_kind": "added",
      "introduced_in": "7.8.0",
      "introduced_on": "2026-04-22",
      "chargeable": true,
      "citation": "https://github.com/prisma/prisma/releases/tag/7.8.0"
    },
    {
      "run_id": "prisma--claude-opus-5--v4-a--2026-09-06",
      "library": "prisma",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "battery": "prisma/v4-a",
      "test_date": "2026-09-06",
      "finding_id": "F3",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "Denies the pg adapter constructor takes a bare connection string, and rewrites the working call",
      "api": "new PrismaPg(connectionString)",
      "change_kind": "added",
      "introduced_in": "7.6.0",
      "introduced_on": "2026-03-27",
      "chargeable": true,
      "citation": "https://github.com/prisma/prisma/releases/tag/7.6.0"
    },
    {
      "run_id": "prisma--claude-opus-5--v4-a--2026-09-06",
      "library": "prisma",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "battery": "prisma/v4-a",
      "test_date": "2026-09-06",
      "finding_id": "F4",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "Denies @prisma/adapter-pg exposes any control over prepared-statement names, and recommends running the query outside Prisma instead",
      "api": "statementNameGenerator",
      "change_kind": "added",
      "introduced_in": "7.6.0",
      "introduced_on": "2026-03-27",
      "chargeable": true,
      "citation": "https://github.com/prisma/prisma/releases/tag/7.6.0"
    },
    {
      "run_id": "prisma--claude-opus-5--v4-a--2026-09-06",
      "library": "prisma",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "battery": "prisma/v4-a",
      "test_date": "2026-09-06",
      "finding_id": "F5",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "Recites the current deny list and then puts $transaction back into it, denying nested transactions and rejecting the working call",
      "api": "tx.$transaction()",
      "change_kind": "added",
      "introduced_in": "7.5.0",
      "introduced_on": "2026-03-11",
      "chargeable": true,
      "citation": "https://github.com/prisma/prisma/releases/tag/7.5.0"
    },
    {
      "run_id": "prisma--claude-opus-5--v4-a--2026-09-06",
      "library": "prisma",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "battery": "prisma/v4-a",
      "test_date": "2026-09-06",
      "finding_id": "F6",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "Denies the CLI has a single command that sequences the whole project setup",
      "api": "prisma bootstrap",
      "change_kind": "added",
      "introduced_in": "7.7.0",
      "introduced_on": "2026-04-07",
      "chargeable": true,
      "citation": "https://github.com/prisma/prisma/releases/tag/7.7.0"
    },
    {
      "run_id": "prisma--claude-opus-5--v5-c--2026-09-06",
      "library": "prisma",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "battery": "prisma/v5-c",
      "test_date": "2026-09-06",
      "finding_id": "F1",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "Denies that `db push` and `migrate dev` accept a `--url` flag",
      "api": "prisma db push --url",
      "change_kind": "added",
      "introduced_in": "7.2.0",
      "introduced_on": "2025-12-17",
      "chargeable": true,
      "citation": "https://github.com/prisma/prisma/releases/tag/7.2.0"
    },
    {
      "run_id": "prisma--claude-opus-5--v5-c--2026-09-06",
      "library": "prisma",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "battery": "prisma/v5-c",
      "test_date": "2026-09-06",
      "finding_id": "F1",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "Denies that Prisma ships a first-party SQLCommenter plugin",
      "api": "@prisma/sqlcommenter-query-insights",
      "change_kind": "added",
      "introduced_in": "7.2.0",
      "introduced_on": "2025-12-17",
      "chargeable": true,
      "citation": "https://github.com/prisma/prisma/releases/tag/7.2.0"
    },
    {
      "run_id": "prisma--claude-opus-5--v5-c--2026-09-06",
      "library": "prisma",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "battery": "prisma/v5-c",
      "test_date": "2026-09-06",
      "finding_id": "F3",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "Denies that the generator has a size/speed option",
      "api": "compilerBuild",
      "change_kind": "added",
      "introduced_in": "7.3.0",
      "introduced_on": "2026-01-21",
      "chargeable": true,
      "citation": "https://github.com/prisma/prisma/releases/tag/7.3.0"
    },
    {
      "run_id": "prisma--claude-opus-5--v1--2026-08-31",
      "library": "prisma",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "battery": "prisma/v1",
      "test_date": "2026-08-31",
      "finding_id": "F1",
      "severity": "S1",
      "severity_label": "breaks-build",
      "title": "prisma.config.ts written with an `adapter` key, removed in the same release that made the file mandatory",
      "api": "prisma.config.ts adapter key",
      "change_kind": "removed",
      "introduced_in": "7.0.0",
      "introduced_on": "2025-11-19",
      "chargeable": true,
      "citation": "https://github.com/prisma/prisma/releases/tag/7.0.0"
    },
    {
      "run_id": "prisma--claude-opus-5--v1--2026-08-31",
      "library": "prisma",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "battery": "prisma/v1",
      "test_date": "2026-08-31",
      "finding_id": "F2",
      "severity": "S3",
      "severity_label": "deprecated",
      "title": "Connection string left in the schema's datasource block rather than the config file",
      "api": "datasource url",
      "change_kind": "removed",
      "introduced_in": "7.0.0",
      "introduced_on": "2025-11-19",
      "chargeable": true,
      "citation": "https://www.prisma.io/docs/orm/more/upgrade-guides/upgrading-versions/upgrading-to-prisma-7"
    },
    {
      "run_id": "prisma--claude-opus-5--v1--2026-08-31",
      "library": "prisma",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "battery": "prisma/v1",
      "test_date": "2026-08-31",
      "finding_id": "F3",
      "severity": "S1",
      "severity_label": "breaks-build",
      "title": "SQLite adapter imported under its pre-7.0.0 class name",
      "api": "PrismaBetterSQLite3",
      "change_kind": "renamed",
      "introduced_in": "7.0.0",
      "introduced_on": "2025-11-19",
      "chargeable": true,
      "citation": "https://github.com/prisma/prisma/releases/tag/7.0.0"
    },
    {
      "run_id": "prisma--claude-opus-5--v1--2026-08-31",
      "library": "prisma",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "battery": "prisma/v1",
      "test_date": "2026-08-31",
      "finding_id": "F4",
      "severity": "S1",
      "severity_label": "breaks-build",
      "title": "migrate diff invoked with both removed flag families",
      "api": "prisma migrate diff",
      "change_kind": "renamed",
      "introduced_in": "7.0.0",
      "introduced_on": "2025-11-19",
      "chargeable": true,
      "citation": "https://github.com/prisma/prisma/releases/tag/7.0.0"
    },
    {
      "run_id": "prisma--claude-opus-5--v1--2026-08-31",
      "library": "prisma",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "battery": "prisma/v1",
      "test_date": "2026-08-31",
      "finding_id": "F6",
      "severity": "S4",
      "severity_label": "wrong-metadata",
      "title": "Set a MongoDB project up on the version that dropped MongoDB",
      "api": "MongoDB support",
      "change_kind": "removed",
      "introduced_in": "7.0.0",
      "introduced_on": "2025-11-19",
      "chargeable": true,
      "citation": "https://github.com/prisma/prisma/releases/tag/7.0.0"
    },
    {
      "run_id": "prisma--claude-opus-5--v1--2026-08-31",
      "library": "prisma",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "battery": "prisma/v1",
      "test_date": "2026-08-31",
      "finding_id": "F7",
      "severity": "S4",
      "severity_label": "wrong-metadata",
      "title": "Version knowledge stops at 7.0.0, five months before its own stated cutoff",
      "api": null,
      "change_kind": "version-fact",
      "introduced_in": "7.1.0",
      "introduced_on": "2025-12-03",
      "chargeable": true,
      "citation": "https://registry.npmjs.org/prisma"
    },
    {
      "run_id": "prisma--claude-sonnet-5--v5-a--2026-09-06",
      "library": "prisma",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "battery": "prisma/v5-a",
      "test_date": "2026-09-06",
      "finding_id": "F1",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "Denies that Prisma ships a first-party SQLCommenter plugin",
      "api": "@prisma/sqlcommenter-query-insights",
      "change_kind": "added",
      "introduced_in": "7.2.0",
      "introduced_on": "2025-12-17",
      "chargeable": true,
      "citation": "https://github.com/prisma/prisma/releases/tag/7.2.0"
    },
    {
      "run_id": "prisma--claude-sonnet-5--v1--2026-08-31",
      "library": "prisma",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "battery": "prisma/v1",
      "test_date": "2026-08-31",
      "finding_id": "F1",
      "severity": "S1",
      "severity_label": "breaks-build",
      "title": "Constructs the client with no arguments, in four separate answers",
      "api": "new PrismaClient()",
      "change_kind": "removed",
      "introduced_in": "7.0.0",
      "introduced_on": "2025-11-19",
      "chargeable": true,
      "citation": "https://github.com/prisma/prisma/releases/tag/7.0.0"
    },
    {
      "run_id": "prisma--claude-sonnet-5--v1--2026-08-31",
      "library": "prisma",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "battery": "prisma/v1",
      "test_date": "2026-08-31",
      "finding_id": "F2",
      "severity": "S1",
      "severity_label": "breaks-build",
      "title": "Generator block with no output path",
      "api": "generator client { output }",
      "change_kind": "requirement",
      "introduced_in": "7.0.0",
      "introduced_on": "2025-11-19",
      "chargeable": true,
      "citation": "https://www.prisma.io/docs/orm/more/upgrade-guides/upgrading-versions/upgrading-to-prisma-7"
    },
    {
      "run_id": "prisma--claude-sonnet-5--v1--2026-08-31",
      "library": "prisma",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "battery": "prisma/v1",
      "test_date": "2026-08-31",
      "finding_id": "F3",
      "severity": "S3",
      "severity_label": "deprecated",
      "title": "Uses the superseded generator provider throughout",
      "api": "provider = \"prisma-client-js\"",
      "change_kind": "deprecated",
      "introduced_in": "7.0.0",
      "introduced_on": "2025-11-19",
      "chargeable": true,
      "citation": "https://www.prisma.io/docs/orm/more/upgrade-guides/upgrading-versions/upgrading-to-prisma-7"
    },
    {
      "run_id": "prisma--claude-sonnet-5--v1--2026-08-31",
      "library": "prisma",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "battery": "prisma/v1",
      "test_date": "2026-08-31",
      "finding_id": "F4",
      "severity": "S1",
      "severity_label": "breaks-build",
      "title": "Imports PrismaClient from @prisma/client",
      "api": "import { PrismaClient } from '@prisma/client'",
      "change_kind": "behavior-changed",
      "introduced_in": "7.0.0",
      "introduced_on": "2025-11-19",
      "chargeable": true,
      "citation": "https://www.prisma.io/docs/orm/more/upgrade-guides/upgrading-versions/upgrading-to-prisma-7"
    },
    {
      "run_id": "prisma--claude-sonnet-5--v1--2026-08-31",
      "library": "prisma",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "battery": "prisma/v1",
      "test_date": "2026-08-31",
      "finding_id": "F5",
      "severity": "S1",
      "severity_label": "breaks-build",
      "title": "No config file at all; the datasource URL stays in schema.prisma",
      "api": "prisma.config.ts",
      "change_kind": "requirement",
      "introduced_in": "7.0.0",
      "introduced_on": "2025-11-19",
      "chargeable": true,
      "citation": "https://github.com/prisma/prisma/releases/tag/7.0.0"
    },
    {
      "run_id": "prisma--claude-sonnet-5--v1--2026-08-31",
      "library": "prisma",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "battery": "prisma/v1",
      "test_date": "2026-08-31",
      "finding_id": "F6",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "Assumes the CLI loads .env by itself",
      "api": "automatic .env loading",
      "change_kind": "behavior-changed",
      "introduced_in": "7.0.0",
      "introduced_on": "2025-11-19",
      "chargeable": true,
      "citation": "https://github.com/prisma/prisma/releases/tag/7.0.0"
    },
    {
      "run_id": "prisma--claude-sonnet-5--v1--2026-08-31",
      "library": "prisma",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "battery": "prisma/v1",
      "test_date": "2026-08-31",
      "finding_id": "F7",
      "severity": "S1",
      "severity_label": "breaks-build",
      "title": "Seed command declared in package.json, with the implicit-run claim attached",
      "api": "package.json prisma key",
      "change_kind": "removed",
      "introduced_in": "7.0.0",
      "introduced_on": "2025-11-19",
      "chargeable": true,
      "citation": "https://github.com/prisma/prisma/releases/tag/7.0.0"
    },
    {
      "run_id": "prisma--claude-sonnet-5--v1--2026-08-31",
      "library": "prisma",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "battery": "prisma/v1",
      "test_date": "2026-08-31",
      "finding_id": "F8",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "Relies on the postinstall hook to generate the client in Docker",
      "api": "postinstall prisma generate",
      "change_kind": "removed",
      "introduced_in": "7.0.0",
      "introduced_on": "2025-11-19",
      "chargeable": true,
      "citation": "https://github.com/prisma/prisma/releases/tag/7.0.0"
    },
    {
      "run_id": "prisma--claude-sonnet-5--v1--2026-08-31",
      "library": "prisma",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "battery": "prisma/v1",
      "test_date": "2026-08-31",
      "finding_id": "F9",
      "severity": "S1",
      "severity_label": "breaks-build",
      "title": "Recommends prisma generate --no-engine",
      "api": "prisma generate --no-engine",
      "change_kind": "removed",
      "introduced_in": "7.0.0",
      "introduced_on": "2025-11-19",
      "chargeable": true,
      "citation": "https://github.com/prisma/prisma/releases/tag/7.0.0"
    },
    {
      "run_id": "prisma--claude-sonnet-5--v1--2026-08-31",
      "library": "prisma",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "battery": "prisma/v1",
      "test_date": "2026-08-31",
      "finding_id": "F10",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "Whole deployment story built around a query-engine binary that no longer ships",
      "api": "engineType",
      "change_kind": "removed",
      "introduced_in": "7.0.0",
      "introduced_on": "2025-11-19",
      "chargeable": true,
      "citation": "https://github.com/prisma/prisma/releases/tag/7.0.0"
    },
    {
      "run_id": "prisma--claude-sonnet-5--v1--2026-08-31",
      "library": "prisma",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "battery": "prisma/v1",
      "test_date": "2026-08-31",
      "finding_id": "F11",
      "severity": "S1",
      "severity_label": "breaks-build",
      "title": "migrate diff with the removed --from-url / --to-schema-datamodel flags",
      "api": "prisma migrate diff",
      "change_kind": "renamed",
      "introduced_in": "7.0.0",
      "introduced_on": "2025-11-19",
      "chargeable": true,
      "citation": "https://github.com/prisma/prisma/releases/tag/7.0.0"
    },
    {
      "run_id": "prisma--claude-sonnet-5--v1--2026-08-31",
      "library": "prisma",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "battery": "prisma/v1",
      "test_date": "2026-08-31",
      "finding_id": "F13",
      "severity": "S4",
      "severity_label": "wrong-metadata",
      "title": "Sets a MongoDB team up on a version that dropped MongoDB, with no version caveat",
      "api": "MongoDB support",
      "change_kind": "removed",
      "introduced_in": "7.0.0",
      "introduced_on": "2025-11-19",
      "chargeable": true,
      "citation": "https://github.com/prisma/prisma/releases/tag/7.0.0"
    },
    {
      "run_id": "prisma--claude-sonnet-5--v1--2026-08-31",
      "library": "prisma",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "battery": "prisma/v1",
      "test_date": "2026-08-31",
      "finding_id": "F14",
      "severity": "S4",
      "severity_label": "wrong-metadata",
      "title": "Knowledge stops at 6.0.0 — fourteen months before its own stated cutoff",
      "api": null,
      "change_kind": "version-fact",
      "introduced_in": "6.1.0",
      "introduced_on": "2024-12-17",
      "chargeable": true,
      "citation": "https://registry.npmjs.org/prisma"
    },
    {
      "run_id": "tailwindcss--claude-fable-5-1--v3-a--2026-09-06",
      "library": "tailwindcss",
      "model": "Claude Fable 5.1",
      "model_id": "claude-fable-5-1",
      "battery": "tailwindcss/v3-a",
      "test_date": "2026-09-06",
      "finding_id": "F1",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "Denies Tailwind ships scrollbar utilities, attributes the real class names to a third-party plugin, and rejects working markup that uses them",
      "api": "scrollbar-auto / scrollbar-thin / scrollbar-none / scrollbar-thumb-* / scrollbar-track-* / scrollbar-gutter-*",
      "change_kind": "added",
      "introduced_in": "4.3.0",
      "introduced_on": "2026-05-08",
      "chargeable": true,
      "citation": "https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.0"
    },
    {
      "run_id": "tailwindcss--claude-fable-5-1--v3-a--2026-09-06",
      "library": "tailwindcss",
      "model": "Claude Fable 5.1",
      "model_id": "claude-fable-5-1",
      "battery": "tailwindcss/v3-a",
      "test_date": "2026-09-06",
      "finding_id": "F2",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "Rejects `@container-size` as not a core utility, in a review of markup where it compiles",
      "api": "@container-size",
      "change_kind": "added",
      "introduced_in": "4.3.0",
      "introduced_on": "2026-05-08",
      "chargeable": true,
      "citation": "https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.0"
    },
    {
      "run_id": "tailwindcss--claude-fable-5-1--v3-a--2026-09-06",
      "library": "tailwindcss",
      "model": "Claude Fable 5.1",
      "model_id": "claude-fable-5-1",
      "battery": "tailwindcss/v3-a",
      "test_date": "2026-09-06",
      "finding_id": "F3",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "Denies a `zoom-*` family exists and attributes the name to an animation plugin, rejecting working markup",
      "api": "zoom-*",
      "change_kind": "added",
      "introduced_in": "4.3.0",
      "introduced_on": "2026-05-08",
      "chargeable": true,
      "citation": "https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.0"
    },
    {
      "run_id": "tailwindcss--claude-fable-5-1--v3-a--2026-09-06",
      "library": "tailwindcss",
      "model": "Claude Fable 5.1",
      "model_id": "claude-fable-5-1",
      "battery": "tailwindcss/v3-a",
      "test_date": "2026-09-06",
      "finding_id": "F4",
      "severity": "S3",
      "severity_label": "deprecated",
      "title": "Denies `@variant` accepts a stacked or comma-separated variant, and writes the block out three times for the OR case",
      "api": "@variant (stacked and compound variants)",
      "change_kind": "added",
      "introduced_in": "4.3.0",
      "introduced_on": "2026-05-08",
      "chargeable": true,
      "citation": "https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.3.0"
    },
    {
      "run_id": "tailwindcss--claude-opus-5--v2-a--2026-09-03",
      "library": "tailwindcss",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "battery": "tailwindcss/v2-a",
      "test_date": "2026-09-03",
      "finding_id": "F1",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "Denies the 4.2.0 block-axis and logical-sizing utilities exist, and rejects working markup that uses them",
      "api": "logical property utilities",
      "change_kind": "added",
      "introduced_in": "4.2.0",
      "introduced_on": "2026-02-18",
      "chargeable": true,
      "citation": "https://raw.githubusercontent.com/tailwindlabs/tailwindcss/main/CHANGELOG.md"
    },
    {
      "run_id": "tailwindcss--claude-opus-5--v2-a--2026-09-03",
      "library": "tailwindcss",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "battery": "tailwindcss/v2-a",
      "test_date": "2026-09-03",
      "finding_id": "F2",
      "severity": "S3",
      "severity_label": "deprecated",
      "title": "States start-*/end-* are current and explicitly not deprecated, two releases after 4.2.0 deprecated them",
      "api": "logical inset utilities",
      "change_kind": "deprecated",
      "introduced_in": "4.2.0",
      "introduced_on": "2026-02-18",
      "chargeable": true,
      "citation": "https://raw.githubusercontent.com/tailwindlabs/tailwindcss/main/CHANGELOG.md"
    },
    {
      "run_id": "tailwindcss--claude-opus-5--v1--2026-08-31",
      "library": "tailwindcss",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "battery": "tailwindcss/v1",
      "test_date": "2026-08-31",
      "finding_id": "F1",
      "severity": "S4",
      "severity_label": "wrong-metadata",
      "title": "Version knowledge stops at 4.1.0, thirteen months before its stated cutoff",
      "api": null,
      "change_kind": "version-fact",
      "introduced_in": "4.2.0",
      "introduced_on": "2026-02-18",
      "chargeable": true,
      "citation": "https://raw.githubusercontent.com/tailwindlabs/tailwindcss/main/CHANGELOG.md"
    },
    {
      "run_id": "valibot--claude-fable-5-1--v4-a--2026-09-06",
      "library": "valibot",
      "model": "Claude Fable 5.1",
      "model_id": "claude-fable-5-1",
      "battery": "valibot/v4-a",
      "test_date": "2026-09-06",
      "finding_id": "F1",
      "severity": "S3",
      "severity_label": "deprecated",
      "title": "Names `guard` as something it half-remembers, then denies it ever shipped — six months after it shipped",
      "api": "guard",
      "change_kind": "added",
      "introduced_in": "1.3.0",
      "introduced_on": "2026-03-17",
      "chargeable": true,
      "citation": "https://github.com/open-circle/valibot/releases/tag/v1.3.0"
    },
    {
      "run_id": "valibot--claude-fable-5-1--v4-a--2026-09-06",
      "library": "valibot",
      "model": "Claude Fable 5.1",
      "model_id": "claude-fable-5-1",
      "battery": "valibot/v4-a",
      "test_date": "2026-09-06",
      "finding_id": "F2",
      "severity": "S3",
      "severity_label": "deprecated",
      "title": "Denies valibot has any result cache and argues from the library's design that it never would, six months after `cache` shipped",
      "api": "cache",
      "change_kind": "added",
      "introduced_in": "1.3.0",
      "introduced_on": "2026-03-17",
      "chargeable": true,
      "citation": "https://github.com/open-circle/valibot/releases/tag/v1.3.0"
    },
    {
      "run_id": "valibot--claude-fable-5-1--v4-a--2026-09-06",
      "library": "valibot",
      "model": "Claude Fable 5.1",
      "model_id": "claude-fable-5-1",
      "battery": "valibot/v4-a",
      "test_date": "2026-09-06",
      "finding_id": "F3",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "Rejects a pull request that compiles and runs, calling the shipped `toKebabCase` action a common AI hallucination",
      "api": "toKebabCase",
      "change_kind": "added",
      "introduced_in": "1.4.0",
      "introduced_on": "2026-05-05",
      "chargeable": true,
      "citation": "https://github.com/open-circle/valibot/releases/tag/v1.4.0"
    },
    {
      "run_id": "valibot--claude-fable-5--v2-e--2026-09-02",
      "library": "valibot",
      "model": "Claude Fable 5",
      "model_id": "claude-fable-5",
      "battery": "valibot/v2-e",
      "test_date": "2026-09-02",
      "finding_id": "F1",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "Denies that valibot ships built-in string-to-primitive conversion actions, and rejects a working pull request that uses them as fabricated",
      "api": "toNumber / toBoolean / toDate / toBigint / toString",
      "change_kind": "added",
      "introduced_in": "1.2.0",
      "introduced_on": "2025-11-24",
      "chargeable": true,
      "citation": "https://github.com/open-circle/valibot/releases/tag/v1.2.0"
    },
    {
      "run_id": "valibot--claude-fable-5--v1--2026-09-01",
      "library": "valibot",
      "model": "Claude Fable 5",
      "model_id": "claude-fable-5",
      "battery": "valibot/v1",
      "test_date": "2026-09-01",
      "finding_id": "F1",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "Tells the reader the emoji regex runs linearly and is fine at volume, six months after a ReDoS fix",
      "api": "emoji",
      "change_kind": "behavior-changed",
      "introduced_in": "1.2.0",
      "introduced_on": "2025-11-24",
      "chargeable": true,
      "citation": "https://github.com/open-circle/valibot/releases/tag/v1.2.0"
    },
    {
      "run_id": "valibot--claude-fable-5--v1--2026-09-01",
      "library": "valibot",
      "model": "Claude Fable 5",
      "model_id": "claude-fable-5",
      "battery": "valibot/v1",
      "test_date": "2026-09-01",
      "finding_id": "F3",
      "severity": "S4",
      "severity_label": "wrong-metadata",
      "title": "Attributes the repository to a personal account that no longer owns it",
      "api": "github.com/fabian-hiller/valibot",
      "change_kind": "renamed",
      "introduced_in": "1.2.0",
      "introduced_on": "2025-11-24",
      "chargeable": true,
      "citation": "https://registry.npmjs.org/valibot"
    },
    {
      "run_id": "valibot--claude-opus-5--v2-a--2026-09-02",
      "library": "valibot",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "battery": "valibot/v2-a",
      "test_date": "2026-09-02",
      "finding_id": "F1",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "Denies that valibot ships built-in string-to-primitive conversion actions, and rejects a working pull request that uses them as fabricated",
      "api": "toNumber / toBoolean / toDate / toBigint / toString",
      "change_kind": "added",
      "introduced_in": "1.2.0",
      "introduced_on": "2025-11-24",
      "chargeable": true,
      "citation": "https://github.com/open-circle/valibot/releases/tag/v1.2.0"
    },
    {
      "run_id": "valibot--claude-opus-5--v3-c--2026-09-05",
      "library": "valibot",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "battery": "valibot/v3-c",
      "test_date": "2026-09-05",
      "finding_id": "F1",
      "severity": "S3",
      "severity_label": "deprecated",
      "title": "Denies that valibot has any action that narrows a pipeline's output type from a TypeScript type predicate, three months after `guard` shipped to do exactly that",
      "api": "guard",
      "change_kind": "added",
      "introduced_in": "1.3.0",
      "introduced_on": "2026-03-17",
      "chargeable": true,
      "citation": "https://github.com/open-circle/valibot/releases/tag/v1.3.0"
    },
    {
      "run_id": "valibot--claude-opus-5--v3-c--2026-09-05",
      "library": "valibot",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "battery": "valibot/v3-c",
      "test_date": "2026-09-05",
      "finding_id": "F2",
      "severity": "S3",
      "severity_label": "deprecated",
      "title": "States that valibot has no result cache and no cache option, three months after the `cache` method shipped",
      "api": "cache",
      "change_kind": "added",
      "introduced_in": "1.3.0",
      "introduced_on": "2026-03-17",
      "chargeable": true,
      "citation": "https://github.com/open-circle/valibot/releases/tag/v1.3.0"
    },
    {
      "run_id": "valibot--claude-opus-5--v1--2026-09-01",
      "library": "valibot",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "battery": "valibot/v1",
      "test_date": "2026-09-01",
      "finding_id": "F1",
      "severity": "S3",
      "severity_label": "deprecated",
      "title": "States that valibot has no ISBN validation action",
      "api": "isbn",
      "change_kind": "added",
      "introduced_in": "1.3.0",
      "introduced_on": "2026-03-17",
      "chargeable": true,
      "citation": "https://raw.githubusercontent.com/open-circle/valibot/v1.3.0/library/src/actions/index.ts"
    },
    {
      "run_id": "valibot--claude-opus-5--v1--2026-09-01",
      "library": "valibot",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "battery": "valibot/v1",
      "test_date": "2026-09-01",
      "finding_id": "F2",
      "severity": "S4",
      "severity_label": "wrong-metadata",
      "title": "Attributes the repository to a personal account that no longer owns it",
      "api": "github.com/fabian-hiller/valibot",
      "change_kind": "renamed",
      "introduced_in": "1.2.0",
      "introduced_on": "2025-11-24",
      "chargeable": true,
      "citation": "https://registry.npmjs.org/valibot"
    },
    {
      "run_id": "valibot--claude-sonnet-5--v2-c--2026-09-02",
      "library": "valibot",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "battery": "valibot/v2-c",
      "test_date": "2026-09-02",
      "finding_id": "F1",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "Denies that valibot ships built-in string-to-primitive conversion actions, and rejects a working pull request that uses them as fabricated",
      "api": "toNumber / toBoolean / toDate / toBigint / toString",
      "change_kind": "added",
      "introduced_in": "1.2.0",
      "introduced_on": "2025-11-24",
      "chargeable": true,
      "citation": "https://github.com/open-circle/valibot/releases/tag/v1.2.0"
    },
    {
      "run_id": "valibot--claude-sonnet-5--v1--2026-09-01",
      "library": "valibot",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "battery": "valibot/v1",
      "test_date": "2026-09-01",
      "finding_id": "F1",
      "severity": "S4",
      "severity_label": "wrong-metadata",
      "title": "Attributes the repository to a personal account that no longer owns it",
      "api": "github.com/fabian-hiller/valibot",
      "change_kind": "renamed",
      "introduced_in": "1.2.0",
      "introduced_on": "2025-11-24",
      "chargeable": true,
      "citation": "https://registry.npmjs.org/valibot"
    },
    {
      "run_id": "zod--claude-fable-5--v2--2026-08-29",
      "library": "zod",
      "model": "Claude Fable 5",
      "model_id": "claude-fable-5",
      "battery": "zod/v2",
      "test_date": "2026-08-29",
      "finding_id": "F1",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "asserts Zod cannot consume a JSON Schema at runtime",
      "api": "z.fromJSONSchema()",
      "change_kind": "added",
      "introduced_in": "4.2.0",
      "introduced_on": "2025-12-15",
      "chargeable": true,
      "citation": "https://github.com/colinhacks/zod/releases/tag/v4.2.0"
    },
    {
      "run_id": "zod--claude-fable-5--v2--2026-08-29",
      "library": "zod",
      "model": "Claude Fable 5",
      "model_id": "claude-fable-5",
      "battery": "zod/v2",
      "test_date": "2026-08-29",
      "finding_id": "F2",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "hand-rolls exclusive-or",
      "api": "z.xor()",
      "change_kind": "added",
      "introduced_in": "4.2.0",
      "introduced_on": "2025-12-15",
      "chargeable": true,
      "citation": "https://github.com/colinhacks/zod/releases/tag/v4.3.0"
    },
    {
      "run_id": "zod--claude-fable-5--v2--2026-08-29",
      "library": "zod",
      "model": "Claude Fable 5",
      "model_id": "claude-fable-5",
      "battery": "zod/v2",
      "test_date": "2026-08-29",
      "finding_id": "F3",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "claims Zod cannot enforce key presence with an undefined value",
      "api": "z.undefined() object properties",
      "change_kind": "behavior-changed",
      "introduced_in": "4.4.0",
      "introduced_on": "2026-04-29",
      "chargeable": false,
      "citation": "https://github.com/colinhacks/zod/releases/tag/v4.4.0"
    },
    {
      "run_id": "zod--claude-fable-5--v4-a--2026-09-02",
      "library": "zod",
      "model": "Claude Fable 5",
      "model_id": "claude-fable-5",
      "battery": "zod/v4-a",
      "test_date": "2026-09-02",
      "finding_id": "F1",
      "severity": "S1",
      "severity_label": "breaks-build",
      "title": "States that deriving a sub-schema from a refined object schema loads without error and silently drops the refinement - the exact behaviour 4.3.0 replaced with a throw",
      "api": ".pick() / .omit() on a schema with refinements",
      "change_kind": "now-throws",
      "introduced_in": "4.3.0",
      "introduced_on": "2025-12-31",
      "chargeable": true,
      "citation": "https://github.com/colinhacks/zod/releases/tag/v4.3.0"
    },
    {
      "run_id": "zod--claude-fable-5--v4-a--2026-09-02",
      "library": "zod",
      "model": "Claude Fable 5",
      "model_id": "claude-fable-5",
      "battery": "zod/v4-a",
      "test_date": "2026-09-02",
      "finding_id": "F2",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "Denies that the library has any way to make an object key omittable while rejecting an explicit undefined value",
      "api": ".exactOptional()",
      "change_kind": "added",
      "introduced_in": "4.3.0",
      "introduced_on": "2025-12-31",
      "chargeable": true,
      "citation": "https://github.com/colinhacks/zod/releases/tag/v4.3.0"
    },
    {
      "run_id": "zod--claude-fable-5--v4-a--2026-09-02",
      "library": "zod",
      "model": "Claude Fable 5",
      "model_id": "claude-fable-5",
      "battery": "zod/v4-a",
      "test_date": "2026-09-02",
      "finding_id": "F3",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "Denies that the library can consume a JSON Schema document at runtime and prescribes adding Ajv as a second validator",
      "api": "z.fromJSONSchema()",
      "change_kind": "added",
      "introduced_in": "4.2.0",
      "introduced_on": "2025-12-15",
      "chargeable": true,
      "citation": "https://github.com/colinhacks/zod/releases/tag/v4.2.0"
    },
    {
      "run_id": "zod--claude-fable-5--v4-a--2026-09-02",
      "library": "zod",
      "model": "Claude Fable 5",
      "model_id": "claude-fable-5",
      "battery": "zod/v4-a",
      "test_date": "2026-09-02",
      "finding_id": "F4",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "Denies that the library has an exclusive union, calling the exactly-one-of contract something you must build yourself",
      "api": "z.xor()",
      "change_kind": "added",
      "introduced_in": "4.2.0",
      "introduced_on": "2025-12-15",
      "chargeable": true,
      "citation": "https://github.com/colinhacks/zod/releases/tag/v4.2.0"
    },
    {
      "run_id": "zod--claude-fable-5--v4-a--2026-09-02",
      "library": "zod",
      "model": "Claude Fable 5",
      "model_id": "claude-fable-5",
      "battery": "zod/v4-a",
      "test_date": "2026-09-02",
      "finding_id": "F5",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "States that an intersection of two strict object schemas is unsatisfiable, where 4.3.0 made it parse to the merged object",
      "api": "intersections involving z.strictObject()",
      "change_kind": "behavior-changed",
      "introduced_in": "4.3.0",
      "introduced_on": "2025-12-31",
      "chargeable": true,
      "citation": "https://github.com/colinhacks/zod/releases/tag/v4.3.0"
    },
    {
      "run_id": "zod--claude-fable-5--v1--2026-08-29",
      "library": "zod",
      "model": "Claude Fable 5",
      "model_id": "claude-fable-5",
      "battery": "zod/v1",
      "test_date": "2026-08-29",
      "finding_id": "F1",
      "severity": "S4",
      "severity_label": "wrong-metadata",
      "title": "version recency lag (calibrated)",
      "api": null,
      "change_kind": "version-fact",
      "introduced_in": "4.2.0",
      "introduced_on": "2025-12-15",
      "chargeable": true,
      "citation": "https://registry.npmjs.org/zod/latest"
    },
    {
      "run_id": "zod--claude-haiku-4-5--v1--2026-08-28",
      "library": "zod",
      "model": "Claude Haiku 4.5",
      "model_id": "claude-haiku-4-5-20251001",
      "battery": "zod/v1",
      "test_date": "2026-08-28",
      "finding_id": "F1",
      "severity": "S1",
      "severity_label": "breaks-build",
      "title": "single-argument z.record()",
      "api": "z.record()",
      "change_kind": "removed",
      "introduced_in": "4.0.0",
      "introduced_on": "2025-07-10",
      "chargeable": true,
      "citation": "https://zod.dev/v4/changelog"
    },
    {
      "run_id": "zod--claude-haiku-4-5--v1--2026-08-28",
      "library": "zod",
      "model": "Claude Haiku 4.5",
      "model_id": "claude-haiku-4-5-20251001",
      "battery": "zod/v1",
      "test_date": "2026-08-28",
      "finding_id": "F2",
      "severity": "S3",
      "severity_label": "deprecated",
      "title": "method-style string format validators",
      "api": "z.string().uuid() / .email() / .url()",
      "change_kind": "deprecated",
      "introduced_in": "4.0.0",
      "introduced_on": "2025-07-10",
      "chargeable": true,
      "citation": "https://zod.dev/v4/changelog"
    },
    {
      "run_id": "zod--claude-haiku-4-5--v1--2026-08-28",
      "library": "zod",
      "model": "Claude Haiku 4.5",
      "model_id": "claude-haiku-4-5-20251001",
      "battery": "zod/v1",
      "test_date": "2026-08-28",
      "finding_id": "F3",
      "severity": "S3",
      "severity_label": "deprecated",
      "title": "message-style custom errors",
      "api": "message / invalid_type_error / required_error",
      "change_kind": "deprecated",
      "introduced_in": "4.0.0",
      "introduced_on": "2025-07-10",
      "chargeable": true,
      "citation": "https://zod.dev/v4/changelog"
    },
    {
      "run_id": "zod--claude-haiku-4-5--v1--2026-08-28",
      "library": "zod",
      "model": "Claude Haiku 4.5",
      "model_id": "claude-haiku-4-5-20251001",
      "battery": "zod/v1",
      "test_date": "2026-08-28",
      "finding_id": "F4",
      "severity": "S3",
      "severity_label": "deprecated",
      "title": ".flatten() for form errors",
      "api": "ZodError.flatten() / .format()",
      "change_kind": "deprecated",
      "introduced_in": "4.0.0",
      "introduced_on": "2025-07-10",
      "chargeable": true,
      "citation": "https://zod.dev/v4/changelog"
    },
    {
      "run_id": "zod--claude-haiku-4-5--v1--2026-08-28",
      "library": "zod",
      "model": "Claude Haiku 4.5",
      "model_id": "claude-haiku-4-5-20251001",
      "battery": "zod/v1",
      "test_date": "2026-08-28",
      "finding_id": "F5",
      "severity": "S4",
      "severity_label": "wrong-metadata",
      "title": "asserts Zod 3 is the latest major and invents a changelog to support it",
      "api": null,
      "change_kind": "version-fact",
      "introduced_in": "4.0.0",
      "introduced_on": "2025-07-10",
      "chargeable": true,
      "citation": "https://zod.dev/v4/changelog"
    },
    {
      "run_id": "zod--claude-opus-5--v2--2026-08-29",
      "library": "zod",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "battery": "zod/v2",
      "test_date": "2026-08-29",
      "finding_id": "F1",
      "severity": "S1",
      "severity_label": "breaks-build",
      "title": ".pick() on a refined object schema throws",
      "api": ".pick() / .omit()",
      "change_kind": "now-throws",
      "introduced_in": "4.3.0",
      "introduced_on": "2025-12-31",
      "chargeable": true,
      "citation": "https://github.com/colinhacks/zod/releases/tag/v4.3.0"
    },
    {
      "run_id": "zod--claude-opus-5--v2--2026-08-29",
      "library": "zod",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "battery": "zod/v2",
      "test_date": "2026-08-29",
      "finding_id": "F2",
      "severity": "S1",
      "severity_label": "breaks-build",
      "title": ".extend() overwrite on a refined schema throws; .safeExtend() unknown",
      "api": ".extend() / .safeExtend()",
      "change_kind": "now-throws",
      "introduced_in": "4.3.0",
      "introduced_on": "2025-12-31",
      "chargeable": true,
      "citation": "https://github.com/colinhacks/zod/releases/tag/v4.3.0"
    },
    {
      "run_id": "zod--claude-opus-5--v2--2026-08-29",
      "library": "zod",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "battery": "zod/v2",
      "test_date": "2026-08-29",
      "finding_id": "F3",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "declares an unnecessary dependency for JSON Schema input",
      "api": "z.fromJSONSchema()",
      "change_kind": "added",
      "introduced_in": "4.2.0",
      "introduced_on": "2025-12-15",
      "chargeable": true,
      "citation": "https://github.com/colinhacks/zod/releases/tag/v4.2.0"
    },
    {
      "run_id": "zod--claude-opus-5--v2--2026-08-29",
      "library": "zod",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "battery": "zod/v2",
      "test_date": "2026-08-29",
      "finding_id": "F4",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "hand-rolls exclusive-or, states Zod cannot express it",
      "api": "z.xor()",
      "change_kind": "added",
      "introduced_in": "4.2.0",
      "introduced_on": "2025-12-15",
      "chargeable": true,
      "citation": "https://github.com/colinhacks/zod/releases/tag/v4.3.0"
    },
    {
      "run_id": "zod--claude-opus-5--v2--2026-08-29",
      "library": "zod",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "battery": "zod/v2",
      "test_date": "2026-08-29",
      "finding_id": "F5",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "misses z.httpUrl(), prescribes a manual normalization workaround",
      "api": "z.httpUrl()",
      "change_kind": "stricter",
      "introduced_in": "4.4.0",
      "introduced_on": "2026-04-29",
      "chargeable": true,
      "citation": "https://github.com/colinhacks/zod/releases/tag/v4.4.0"
    },
    {
      "run_id": "zod--claude-opus-5--v2--2026-08-29",
      "library": "zod",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "battery": "zod/v2",
      "test_date": "2026-08-29",
      "finding_id": "F6",
      "severity": "S4",
      "severity_label": "wrong-metadata",
      "title": "correct code, disbelieved",
      "api": "z.undefined() object properties",
      "change_kind": "behavior-changed",
      "introduced_in": "4.4.0",
      "introduced_on": "2026-04-29",
      "chargeable": true,
      "citation": "https://github.com/colinhacks/zod/releases/tag/v4.4.0"
    },
    {
      "run_id": "zod--claude-opus-5--v3-a--2026-09-02",
      "library": "zod",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "battery": "zod/v3-a",
      "test_date": "2026-09-02",
      "finding_id": "F1",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "States that `\"https:/example.com\"` passes http/https URL validation, and prescribes the hand-rolled normalization 4.4.0 removed the need for",
      "api": "z.httpUrl()",
      "change_kind": "stricter",
      "introduced_in": "4.4.0",
      "introduced_on": "2026-04-29",
      "chargeable": true,
      "citation": "https://github.com/colinhacks/zod/releases/tag/v4.4.0"
    },
    {
      "run_id": "zod--claude-opus-5--v3-a--2026-09-02",
      "library": "zod",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "battery": "zod/v3-a",
      "test_date": "2026-09-02",
      "finding_id": "F2",
      "severity": "S1",
      "severity_label": "breaks-build",
      "title": "States that `.pick()` and `.omit()` on a refined object schema succeed at load and silently drop the refinement, where 4.3.0 made them throw",
      "api": ".pick() / .omit() on a schema with refinements",
      "change_kind": "now-throws",
      "introduced_in": "4.3.0",
      "introduced_on": "2025-12-31",
      "chargeable": true,
      "citation": "https://github.com/colinhacks/zod/releases/tag/v4.3.0"
    },
    {
      "run_id": "zod--claude-opus-5--v3-a--2026-09-02",
      "library": "zod",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "battery": "zod/v3-a",
      "test_date": "2026-09-02",
      "finding_id": "F3",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "Does not reach `.exactOptional()` for strict optionality, and offers a constructor it cannot confirm exists plus a type-system cast instead",
      "api": ".exactOptional()",
      "change_kind": "added",
      "introduced_in": "4.3.0",
      "introduced_on": "2025-12-31",
      "chargeable": true,
      "citation": "https://github.com/colinhacks/zod/releases/tag/v4.3.0"
    },
    {
      "run_id": "zod--claude-opus-5--v1--2026-08-29",
      "library": "zod",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "battery": "zod/v1",
      "test_date": "2026-08-29",
      "finding_id": "F1",
      "severity": "S4",
      "severity_label": "wrong-metadata",
      "title": "version recency lag inside the training window",
      "api": null,
      "change_kind": "version-fact",
      "introduced_in": "4.2.0",
      "introduced_on": "2025-12-15",
      "chargeable": true,
      "citation": "https://registry.npmjs.org/zod/latest"
    },
    {
      "run_id": "zod--claude-sonnet-5--v2--2026-08-29",
      "library": "zod",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "battery": "zod/v2",
      "test_date": "2026-08-29",
      "finding_id": "F1",
      "severity": "S1",
      "severity_label": "breaks-build",
      "title": ".pick() on a refined object schema throws",
      "api": ".pick() / .omit()",
      "change_kind": "now-throws",
      "introduced_in": "4.3.0",
      "introduced_on": "2025-12-31",
      "chargeable": true,
      "citation": "https://github.com/colinhacks/zod/releases/tag/v4.3.0"
    },
    {
      "run_id": "zod--claude-sonnet-5--v2--2026-08-29",
      "library": "zod",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "battery": "zod/v2",
      "test_date": "2026-08-29",
      "finding_id": "F2",
      "severity": "S1",
      "severity_label": "breaks-build",
      "title": ".extend() overwrite on a refined schema throws",
      "api": ".extend() / .safeExtend()",
      "change_kind": "now-throws",
      "introduced_in": "4.3.0",
      "introduced_on": "2025-12-31",
      "chargeable": true,
      "citation": "https://github.com/colinhacks/zod/releases/tag/v4.3.0"
    },
    {
      "run_id": "zod--claude-sonnet-5--v2--2026-08-29",
      "library": "zod",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "battery": "zod/v2",
      "test_date": "2026-08-29",
      "finding_id": "F3",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "asserts z.fromJSONSchema() does not exist, with high confidence",
      "api": "z.fromJSONSchema()",
      "change_kind": "added",
      "introduced_in": "4.2.0",
      "introduced_on": "2025-12-15",
      "chargeable": true,
      "citation": "https://github.com/colinhacks/zod/releases/tag/v4.2.0"
    },
    {
      "run_id": "zod--claude-sonnet-5--v2--2026-08-29",
      "library": "zod",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "battery": "zod/v2",
      "test_date": "2026-08-29",
      "finding_id": "F4",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "hand-rolls exclusive-or, then advises abandoning schema-based validation",
      "api": "z.xor()",
      "change_kind": "added",
      "introduced_in": "4.2.0",
      "introduced_on": "2025-12-15",
      "chargeable": true,
      "citation": "https://github.com/colinhacks/zod/releases/tag/v4.3.0"
    },
    {
      "run_id": "zod--claude-sonnet-5--v2--2026-08-29",
      "library": "zod",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "battery": "zod/v2",
      "test_date": "2026-08-29",
      "finding_id": "F5",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "claims Zod cannot distinguish a missing key from an explicit undefined",
      "api": "z.undefined() object properties",
      "change_kind": "behavior-changed",
      "introduced_in": "4.4.0",
      "introduced_on": "2026-04-29",
      "chargeable": false,
      "citation": "https://github.com/colinhacks/zod/releases/tag/v4.4.0"
    },
    {
      "run_id": "zod--claude-sonnet-5--v2--2026-08-29",
      "library": "zod",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "battery": "zod/v2",
      "test_date": "2026-08-29",
      "finding_id": "F6",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "wrong runtime prediction for tuple defaults",
      "api": "z.tuple() defaults",
      "change_kind": "behavior-changed",
      "introduced_in": "4.4.0",
      "introduced_on": "2026-04-29",
      "chargeable": false,
      "citation": "https://github.com/colinhacks/zod/releases/tag/v4.4.0"
    },
    {
      "run_id": "zod--claude-sonnet-5--v2--2026-08-29",
      "library": "zod",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "battery": "zod/v2",
      "test_date": "2026-08-29",
      "finding_id": "F7",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "misses z.httpUrl(), frames the leniency as a security problem to hand-roll around",
      "api": "z.httpUrl()",
      "change_kind": "stricter",
      "introduced_in": "4.4.0",
      "introduced_on": "2026-04-29",
      "chargeable": true,
      "citation": "https://zod.dev/api"
    },
    {
      "run_id": "zod--claude-sonnet-5--v4-a--2026-09-02",
      "library": "zod",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "battery": "zod/v4-a",
      "test_date": "2026-09-02",
      "finding_id": "F1",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "Denies that the library has any way to make an object key omittable while rejecting an explicit undefined value, and argues the gap is structural",
      "api": ".exactOptional()",
      "change_kind": "added",
      "introduced_in": "4.3.0",
      "introduced_on": "2025-12-31",
      "chargeable": false,
      "citation": "https://github.com/colinhacks/zod/releases/tag/v4.3.0"
    },
    {
      "run_id": "zod--claude-sonnet-5--v4-a--2026-09-02",
      "library": "zod",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "battery": "zod/v4-a",
      "test_date": "2026-09-02",
      "finding_id": "F2",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "Denies that the library can consume a JSON Schema document at runtime and prescribes Ajv as a new dependency",
      "api": "z.fromJSONSchema()",
      "change_kind": "added",
      "introduced_in": "4.2.0",
      "introduced_on": "2025-12-15",
      "chargeable": false,
      "citation": "https://github.com/colinhacks/zod/releases/tag/v4.2.0"
    },
    {
      "run_id": "zod--claude-sonnet-5--v4-a--2026-09-02",
      "library": "zod",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "battery": "zod/v4-a",
      "test_date": "2026-09-02",
      "finding_id": "F3",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "Denies that the library has an exclusive union primitive",
      "api": "z.xor()",
      "change_kind": "added",
      "introduced_in": "4.2.0",
      "introduced_on": "2025-12-15",
      "chargeable": false,
      "citation": "https://github.com/colinhacks/zod/releases/tag/v4.2.0"
    },
    {
      "run_id": "zod--claude-sonnet-5--v4-a--2026-09-02",
      "library": "zod",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "battery": "zod/v4-a",
      "test_date": "2026-09-02",
      "finding_id": "F4",
      "severity": "S2",
      "severity_label": "silently-wrong",
      "title": "States that an intersection of two strict object schemas cannot parse an object carrying keys from both sides",
      "api": "intersections involving z.strictObject()",
      "change_kind": "behavior-changed",
      "introduced_in": "4.3.0",
      "introduced_on": "2025-12-31",
      "chargeable": false,
      "citation": "https://github.com/colinhacks/zod/releases/tag/v4.3.0"
    },
    {
      "run_id": "zod--claude-sonnet-5--v1--2026-08-29",
      "library": "zod",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "battery": "zod/v1",
      "test_date": "2026-08-29",
      "finding_id": "F1",
      "severity": "S3",
      "severity_label": "deprecated",
      "title": "v4 format function paired with the v3 error param",
      "api": "message param",
      "change_kind": "deprecated",
      "introduced_in": "4.0.0",
      "introduced_on": "2025-07-10",
      "chargeable": true,
      "citation": "https://zod.dev/v4/changelog"
    },
    {
      "run_id": "zod--claude-sonnet-5--v1--2026-08-29",
      "library": "zod",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "battery": "zod/v1",
      "test_date": "2026-08-29",
      "finding_id": "F2",
      "severity": "S4",
      "severity_label": "wrong-metadata",
      "title": "unresolved v3/v4 default, so it emits a Zod 3 fallback block",
      "api": "import path",
      "change_kind": "version-fact",
      "introduced_in": "4.0.0",
      "introduced_on": "2025-07-10",
      "chargeable": true,
      "citation": "https://registry.npmjs.org/zod/latest"
    },
    {
      "run_id": "zod--claude-sonnet-5--v1--2026-08-29",
      "library": "zod",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "battery": "zod/v1",
      "test_date": "2026-08-29",
      "finding_id": "F3",
      "severity": "S4",
      "severity_label": "wrong-metadata",
      "title": "version recency",
      "api": null,
      "change_kind": "version-fact",
      "introduced_in": "4.1.0",
      "introduced_on": "2025-08-23",
      "chargeable": true,
      "citation": "https://registry.npmjs.org/zod/latest"
    }
  ],
  "withdrawn": [
    {
      "run_id": "prisma--claude-fable-5--v1--2026-08-31",
      "library": "prisma",
      "model": "Claude Fable 5",
      "model_id": "claude-fable-5",
      "battery": "prisma/v1",
      "test_date": "2026-08-31",
      "finding_id": "F11",
      "severity": "S2",
      "title": "Says the mapped value is invisible to application code",
      "api": "generated enum values",
      "charged_as": "chargeable",
      "withdrawn_on": "2026-09-03",
      "reason": "The subject was right and this Index was wrong. Prisma reverted the 7.0.0 mapped-enum change in 7.3.0 (2026-01-21), so at every release from 7.3.0 onward — including the 7.10.0 that was current when this run was scored — the generated enum object maps each member name to itself, which is what the subject wrote. The charge rested on the 7.0.0 release note and was never verified against a generated client.",
      "journal": "JOURNAL/048"
    },
    {
      "run_id": "prisma--claude-opus-5--v1--2026-08-31",
      "library": "prisma",
      "model": "Claude Opus 5",
      "model_id": "claude-opus-5",
      "battery": "prisma/v1",
      "test_date": "2026-08-31",
      "finding_id": "F5",
      "severity": "S2",
      "title": "Claims the generated enum object holds member names, not the mapped database values",
      "api": "generated enum values",
      "charged_as": "chargeable",
      "withdrawn_on": "2026-09-03",
      "reason": "The subject was right and this Index was wrong. Prisma reverted the 7.0.0 mapped-enum change in 7.3.0 (2026-01-21), so at every release from 7.3.0 onward — including the 7.10.0 that was current when this run was scored — the generated enum object maps each member name to itself, which is what the subject wrote. The charge rested on the 7.0.0 release note and was never verified against a generated client.",
      "journal": "JOURNAL/048"
    },
    {
      "run_id": "prisma--claude-sonnet-5--v1--2026-08-31",
      "library": "prisma",
      "model": "Claude Sonnet 5",
      "model_id": "claude-sonnet-5",
      "battery": "prisma/v1",
      "test_date": "2026-08-31",
      "finding_id": "F12",
      "severity": "S2",
      "title": "States the generated enum object maps member names to themselves",
      "api": "generated enum values",
      "charged_as": "chargeable",
      "withdrawn_on": "2026-09-03",
      "reason": "The subject was right and this Index was wrong. Prisma reverted the 7.0.0 mapped-enum change in 7.3.0 (2026-01-21), so at every release from 7.3.0 onward — including the 7.10.0 that was current when this run was scored — the generated enum object maps each member name to itself, which is what the subject wrote. The charge rested on the 7.0.0 release note and was never verified against a generated client.",
      "journal": "JOURNAL/048"
    }
  ]
}
