{
  "generator": "tools/build-research-log.py",
  "generator_version": "1.0",
  "generator_head": "91dbceb",
  "generated_at": "2026-04-21T17:38:16+00:00",
  "scope_note": "The role classifier in this log is specific to this repo's authoring conventions (Codex <sha> review, codex r\\d+, Gap \\d+, ship:, bench:, RESULT, etc.). These patterns are not a general convention. Applied to another repo with different conventions, this script produces meaningless classifications. The deterministic property holds as long as future commits continue to name the SHA they respond to; if commit discipline drops, the DAG loses edges. Commit hygiene constraint, not a script bug.",
  "commit_count": 65,
  "role_counts": {
    "gate-kit": 6,
    "claude-research-impl": 9,
    "spec": 7,
    "codex-review-round": 7,
    "bench": 13,
    "ship": 1,
    "docs": 7,
    "substrate-gap": 4,
    "codex-review-response": 7,
    "corpus-result": 4
  },
  "response_edge_count": 6,
  "round_entry_count": 7,
  "commits": [
    {
      "sha": "bae849f",
      "full_sha": "bae849f138b6403617423594bdeccc41947c9c51",
      "date": "2026-04-10T21:35:26+00:00",
      "date_short": "2026-04-10",
      "subject": "Seed: dual-agent research instructions for AXL Rosetta v4",
      "role": "gate-kit",
      "round": null,
      "responds_to": null,
      "metrics": []
    },
    {
      "sha": "d2b81b5",
      "full_sha": "d2b81b5a683462d757df7002b61db1cefa9f39d5",
      "date": "2026-04-10T21:53:49+00:00",
      "date_short": "2026-04-10",
      "subject": "impl: complete v4 reference implementation and test harness",
      "role": "claude-research-impl",
      "round": null,
      "responds_to": null,
      "metrics": []
    },
    {
      "sha": "0495e1e",
      "full_sha": "0495e1eb78d198c4e9cbd5b92d520d6a843596b2",
      "date": "2026-04-10T23:33:06+00:00",
      "date_short": "2026-04-10",
      "subject": "chore: add .gitignore",
      "role": "claude-research-impl",
      "round": null,
      "responds_to": null,
      "metrics": []
    },
    {
      "sha": "d459044",
      "full_sha": "d45904430c671984efc65e899fbc7fa93ed5d1b4",
      "date": "2026-04-11T01:44:02+00:00",
      "date_short": "2026-04-11",
      "subject": "spec: restructure v4 as normative kernel + classified layers",
      "role": "spec",
      "round": null,
      "responds_to": null,
      "metrics": []
    },
    {
      "sha": "2b5aaa7",
      "full_sha": "2b5aaa7418587d9d833710f08ddef2040f40cd59",
      "date": "2026-04-11T01:47:53+00:00",
      "date_short": "2026-04-11",
      "subject": "spec: drop lossless/lossy split, code layer is lossy IR",
      "role": "codex-review-round",
      "round": "R2",
      "responds_to": null,
      "metrics": []
    },
    {
      "sha": "ffe73c8",
      "full_sha": "ffe73c81f510e6f885eda49bee5b10d5e4a97193",
      "date": "2026-04-11T01:48:07+00:00",
      "date_short": "2026-04-11",
      "subject": "chore: expand gitignore to exclude system and tool directories",
      "role": "claude-research-impl",
      "round": null,
      "responds_to": null,
      "metrics": []
    },
    {
      "sha": "516ea94",
      "full_sha": "516ea94c54be0948a0aad8409b2b3e0511795dce",
      "date": "2026-04-11T01:52:02+00:00",
      "date_short": "2026-04-11",
      "subject": "spec: grammar boundary rewrite, kernel ≤80, evidence schema closure",
      "role": "spec",
      "round": null,
      "responds_to": null,
      "metrics": []
    },
    {
      "sha": "cf35feb",
      "full_sha": "cf35feb802b686cde09cf881978284734cc1a134",
      "date": "2026-04-11T01:58:38+00:00",
      "date_short": "2026-04-11",
      "subject": "spec: R4 hardening, error taxonomy, canonical serializer, evidence backlinks",
      "role": "spec",
      "round": null,
      "responds_to": null,
      "metrics": []
    },
    {
      "sha": "3bd5bef",
      "full_sha": "3bd5befd0c6bfc72627d23fe4182c43de151e1f5",
      "date": "2026-04-11T02:11:07+00:00",
      "date_short": "2026-04-11",
      "subject": "spec: R5 conformance hardening",
      "role": "spec",
      "round": null,
      "responds_to": null,
      "metrics": []
    },
    {
      "sha": "798e04f",
      "full_sha": "798e04fd709f4a504378b9bec495679b14fc91ed",
      "date": "2026-04-11T02:24:52+00:00",
      "date_short": "2026-04-11",
      "subject": "test: R6 golden corpus and conformance harness",
      "role": "claude-research-impl",
      "round": null,
      "responds_to": null,
      "metrics": []
    },
    {
      "sha": "5ee1c21",
      "full_sha": "5ee1c21d80939efc18cfc954ea461aab06b8b82e",
      "date": "2026-04-11T04:01:20+00:00",
      "date_short": "2026-04-11",
      "subject": "test: R6 Implementation B passes interoperability trial",
      "role": "claude-research-impl",
      "round": null,
      "responds_to": null,
      "metrics": []
    },
    {
      "sha": "1c889f1",
      "full_sha": "1c889f196eb8296e054228dd0cc91787ff857c49",
      "date": "2026-04-11T05:16:25+00:00",
      "date_short": "2026-04-11",
      "subject": "test: R7 adversarial edge suite, 1 spec ambiguity resolved",
      "role": "claude-research-impl",
      "round": null,
      "responds_to": null,
      "metrics": [
        {
          "kind": "test_count_pass",
          "text": "140/140 tests",
          "groups": [
            "140"
          ]
        }
      ]
    },
    {
      "sha": "91054db",
      "full_sha": "91054dbf2933830939768ccd2aea9a4b1f5dbccf",
      "date": "2026-04-11T05:45:43+00:00",
      "date_short": "2026-04-11",
      "subject": "bench: first real compression trial, v3 live vs v4 research",
      "role": "bench",
      "round": null,
      "responds_to": null,
      "metrics": []
    },
    {
      "sha": "aff2b6b",
      "full_sha": "aff2b6bbd163fe0d4159fdddb57771840aa9a2f8",
      "date": "2026-04-11T05:56:11+00:00",
      "date_short": "2026-04-11",
      "subject": "bench: decompression fidelity + speed math + v3 live comparison",
      "role": "bench",
      "round": null,
      "responds_to": null,
      "metrics": []
    },
    {
      "sha": "fa1d5b0",
      "full_sha": "fa1d5b0cf7fd9b640faba7ecb1295347c274b8b6",
      "date": "2026-04-11T06:04:30+00:00",
      "date_short": "2026-04-11",
      "subject": "bench: topology analysis and operator gap identification",
      "role": "bench",
      "round": null,
      "responds_to": null,
      "metrics": []
    },
    {
      "sha": "06e33be",
      "full_sha": "06e33be874ababf451f67c498df4ac4fe347a5bb",
      "date": "2026-04-11T06:06:07+00:00",
      "date_short": "2026-04-11",
      "subject": "bench: investor cold-read test setup",
      "role": "bench",
      "round": null,
      "responds_to": null,
      "metrics": []
    },
    {
      "sha": "7226e5f",
      "full_sha": "7226e5f0a7e515021877af8f086116b585146ce0",
      "date": "2026-04-11T06:21:49+00:00",
      "date_short": "2026-04-11",
      "subject": "bench: cold-read cross-model experiment design",
      "role": "bench",
      "round": null,
      "responds_to": null,
      "metrics": []
    },
    {
      "sha": "4ddee5a",
      "full_sha": "4ddee5a8867228886c07cb5b2f1ad88373f3eb4e",
      "date": "2026-04-11T06:33:00+00:00",
      "date_short": "2026-04-11",
      "subject": "bench: Gemini Flash cold decompression scored 41.7/100",
      "role": "bench",
      "round": null,
      "responds_to": null,
      "metrics": []
    },
    {
      "sha": "863d467",
      "full_sha": "863d4676a7f135fba7bb52508738573fc775c5d6",
      "date": "2026-04-11T06:39:37+00:00",
      "date_short": "2026-04-11",
      "subject": "bench: Qwen 3.5 35B cold decompression scored 44.0/100",
      "role": "bench",
      "round": null,
      "responds_to": null,
      "metrics": []
    },
    {
      "sha": "3dbebf7",
      "full_sha": "3dbebf7d4dbc2cb8285f3e501c2654c97bcabb3e",
      "date": "2026-04-11T06:50:27+00:00",
      "date_short": "2026-04-11",
      "subject": "bench: micro-bakeoff for cold fact recovery redesign",
      "role": "bench",
      "round": null,
      "responds_to": null,
      "metrics": []
    },
    {
      "sha": "a7c3375",
      "full_sha": "a7c337551ad4ed128bbaa66ec9355c2b589f8f89",
      "date": "2026-04-11T06:55:36+00:00",
      "date_short": "2026-04-11",
      "subject": "bench: B-syntax bakeoff results - numeric bundles WORK",
      "role": "bench",
      "round": null,
      "responds_to": null,
      "metrics": []
    },
    {
      "sha": "099bcff",
      "full_sha": "099bcfffd792b99d3505c1f1bc067ce1d7a28ade",
      "date": "2026-04-11T06:59:50+00:00",
      "date_short": "2026-04-11",
      "subject": "ship: AXL Rosetta v3.1 Data Anchoring Extension",
      "role": "ship",
      "round": null,
      "responds_to": null,
      "metrics": [
        {
          "kind": "pct_transition",
          "text": "61%->100%",
          "groups": [
            "61",
            "100"
          ]
        },
        {
          "kind": "pct_transition",
          "text": "35%->76%",
          "groups": [
            "35",
            "76"
          ]
        }
      ]
    },
    {
      "sha": "8fc20c0",
      "full_sha": "8fc20c07a1fdb77d0e96e9d09c426261b501190f",
      "date": "2026-04-11T07:05:07+00:00",
      "date_short": "2026-04-11",
      "subject": "spec: tighten data-anchoring claims and provenance rule",
      "role": "spec",
      "round": null,
      "responds_to": null,
      "metrics": []
    },
    {
      "sha": "f176046",
      "full_sha": "f17604608da94cb36be6583fa3fb8cfe81ebe44c",
      "date": "2026-04-11T07:45:03+00:00",
      "date_short": "2026-04-11",
      "subject": "spec: v3.2 Glyph Compression Layer (draft, needs cold testing)",
      "role": "spec",
      "round": null,
      "responds_to": null,
      "metrics": []
    },
    {
      "sha": "f0a6bcc",
      "full_sha": "f0a6bcc192c247f7b0a940eaf4e48e75117a2f41",
      "date": "2026-04-11T08:05:08+00:00",
      "date_short": "2026-04-11",
      "subject": "bench: v3.2 glyph cold decompression results",
      "role": "bench",
      "round": null,
      "responds_to": null,
      "metrics": [
        {
          "kind": "pct_transition",
          "text": "76% to 96%",
          "groups": [
            "76",
            "96"
          ]
        }
      ]
    },
    {
      "sha": "371094c",
      "full_sha": "371094c7c76e72f96fab9ff7820f2d5d0af76294",
      "date": "2026-04-11T08:05:52+00:00",
      "date_short": "2026-04-11",
      "subject": "spec: v4 Kernel Router blueprint",
      "role": "spec",
      "round": null,
      "responds_to": null,
      "metrics": []
    },
    {
      "sha": "430e923",
      "full_sha": "430e923efb6cf343c7fa358a422fdf45902f40fe",
      "date": "2026-04-11T08:10:04+00:00",
      "date_short": "2026-04-11",
      "subject": "docs: full v4 research document with router blueprint",
      "role": "docs",
      "round": null,
      "responds_to": null,
      "metrics": []
    },
    {
      "sha": "312fe7d",
      "full_sha": "312fe7de8d8392b7a8883ea29832ce639dac7c87",
      "date": "2026-04-11T08:19:56+00:00",
      "date_short": "2026-04-11",
      "subject": "docs: add full glyph tables with CJK ideograms to research document",
      "role": "docs",
      "round": null,
      "responds_to": null,
      "metrics": []
    },
    {
      "sha": "6fed4dd",
      "full_sha": "6fed4dd8a748380513dc99e1857a65c4b788908e",
      "date": "2026-04-12T04:29:50+00:00",
      "date_short": "2026-04-12",
      "subject": "bench: production baseline measurement exposes token estimation bug",
      "role": "bench",
      "round": null,
      "responds_to": null,
      "metrics": []
    },
    {
      "sha": "e28cf2d",
      "full_sha": "e28cf2dd177240733f936ced56af58e1855732b4",
      "date": "2026-04-12T04:54:14+00:00",
      "date_short": "2026-04-12",
      "subject": "bench: production round-trip measurement, protocol vs rationale separated",
      "role": "bench",
      "round": null,
      "responds_to": null,
      "metrics": [
        {
          "kind": "compression_ratio",
          "text": "2.81x char",
          "groups": [
            "2.81"
          ]
        },
        {
          "kind": "compression_ratio",
          "text": "1.36x token",
          "groups": [
            "1.36"
          ]
        },
        {
          "kind": "compression_ratio",
          "text": "2.81x char",
          "groups": [
            "2.81"
          ]
        },
        {
          "kind": "compression_ratio",
          "text": "1.36x token",
          "groups": [
            "1.36"
          ]
        }
      ]
    },
    {
      "sha": "af6345b",
      "full_sha": "af6345bf59bf2fa8b4816ed060792a906516b831",
      "date": "2026-04-12T05:02:59+00:00",
      "date_short": "2026-04-12",
      "subject": "bench: self-bootstrapped v3.1 compression beats production on every axis",
      "role": "bench",
      "round": null,
      "responds_to": null,
      "metrics": []
    },
    {
      "sha": "74d5119",
      "full_sha": "74d5119bd9ddbbd38039453a9e8707dadd3bd08c",
      "date": "2026-04-12T05:14:08+00:00",
      "date_short": "2026-04-12",
      "subject": "docs: AXL server operations contract for cc-ops-axlserver",
      "role": "docs",
      "round": null,
      "responds_to": null,
      "metrics": []
    },
    {
      "sha": "e029fd2",
      "full_sha": "e029fd2b82fd0f2263902a13b356359381594bbb",
      "date": "2026-04-12T05:24:27+00:00",
      "date_short": "2026-04-12",
      "subject": "docs: directive for cc-ops-axlserver (terse, actionable)",
      "role": "docs",
      "round": null,
      "responds_to": null,
      "metrics": []
    },
    {
      "sha": "80aa753",
      "full_sha": "80aa753e9477ec1ddf04f3b71c53df890c05959b",
      "date": "2026-04-12T05:32:49+00:00",
      "date_short": "2026-04-12",
      "subject": "docs: cc-ops-axlserver directive v2 (revised in ultrathink)",
      "role": "docs",
      "round": null,
      "responds_to": null,
      "metrics": []
    },
    {
      "sha": "0f65c95",
      "full_sha": "0f65c957fc9552d5665fca46ba521b766a91962d",
      "date": "2026-04-13T22:24:43+00:00",
      "date_short": "2026-04-13",
      "subject": "v4: working prototype hits all four targets",
      "role": "claude-research-impl",
      "round": null,
      "responds_to": null,
      "metrics": [
        {
          "kind": "compression_ratio",
          "text": "2.81x\ntoken",
          "groups": [
            "2.81"
          ]
        }
      ]
    },
    {
      "sha": "2ba79e1",
      "full_sha": "2ba79e1b8a834998e49771b73a471d7df7a8fea4",
      "date": "2026-04-13T22:34:57+00:00",
      "date_short": "2026-04-13",
      "subject": "v4: add construction Rosetta module, expand fact extractor",
      "role": "claude-research-impl",
      "round": null,
      "responds_to": null,
      "metrics": [
        {
          "kind": "compression_ratio",
          "text": "4.63x chars",
          "groups": [
            "4.63"
          ]
        },
        {
          "kind": "compression_ratio",
          "text": "2.21x tokens",
          "groups": [
            "2.21"
          ]
        }
      ]
    },
    {
      "sha": "0a5cad4",
      "full_sha": "0a5cad4c6ca8f6a4a85b6d941ab4872abd46dad1",
      "date": "2026-04-13T23:01:07+00:00",
      "date_short": "2026-04-13",
      "subject": "docs: response to Codex v4 prototype challenges round 1",
      "role": "codex-review-round",
      "round": "R1",
      "responds_to": null,
      "metrics": []
    },
    {
      "sha": "35e26d5",
      "full_sha": "35e26d53e4b8ebdcaea4b1ad6c75bd9086e48e02",
      "date": "2026-04-14T13:24:11+00:00",
      "date_short": "2026-04-14",
      "subject": "docs: response to Codex R2 counter-challenges + parser-validated AXL",
      "role": "codex-review-round",
      "round": "R2",
      "responds_to": null,
      "metrics": []
    },
    {
      "sha": "6228281",
      "full_sha": "6228281312420b0e48787ffb109426a89be59592",
      "date": "2026-04-14T13:59:00+00:00",
      "date_short": "2026-04-14",
      "subject": "v4: shared canonical form layer + envelope floor (codex r3 findings)",
      "role": "codex-review-round",
      "round": "R3",
      "responds_to": null,
      "metrics": [
        {
          "kind": "pct_transition",
          "text": "0% -> 100%",
          "groups": [
            "0",
            "100"
          ]
        },
        {
          "kind": "pct_transition",
          "text": "0% -> 50%",
          "groups": [
            "0",
            "50"
          ]
        }
      ]
    },
    {
      "sha": "be52755",
      "full_sha": "be52755b16431717a3538c5a49c82312b36f03a0",
      "date": "2026-04-14T17:09:31+00:00",
      "date_short": "2026-04-14",
      "subject": "v4: runtime fixes for Codex R3 findings (router gate, fidelity fields, hermetic tests)",
      "role": "codex-review-round",
      "round": "R3",
      "responds_to": null,
      "metrics": [
        {
          "kind": "test_count_pass",
          "text": "181 passed",
          "groups": [
            "181"
          ]
        }
      ]
    },
    {
      "sha": "099dbe6",
      "full_sha": "099dbe6907bca0fb48502a2767d1167fbfc15605",
      "date": "2026-04-14T17:22:53+00:00",
      "date_short": "2026-04-14",
      "subject": "v4: fix canon_date error namespace + stop stale router drift (codex r4)",
      "role": "codex-review-round",
      "round": "R4",
      "responds_to": null,
      "metrics": []
    },
    {
      "sha": "6961dec",
      "full_sha": "6961dec505158a4c4d2a7e7e554aa88c5874dab7",
      "date": "2026-04-14T17:32:05+00:00",
      "date_short": "2026-04-14",
      "subject": "v4: tight drift detector for router constant (codex r5)",
      "role": "codex-review-round",
      "round": "R5",
      "responds_to": null,
      "metrics": []
    },
    {
      "sha": "330f53a",
      "full_sha": "330f53ad723b0f462e43271833bd54fcd2827aca",
      "date": "2026-04-14T23:37:47+00:00",
      "date_short": "2026-04-14",
      "subject": "v4: construction dollar + date emitters (Gap 1)",
      "role": "substrate-gap",
      "round": null,
      "responds_to": null,
      "metrics": [
        {
          "kind": "pct_transition",
          "text": "41.43% -> 50.57%",
          "groups": [
            "41.43",
            "50.57"
          ]
        },
        {
          "kind": "pct_transition",
          "text": "0%   -> 100%",
          "groups": [
            "0",
            "100"
          ]
        },
        {
          "kind": "pct_transition",
          "text": "0%   -> 100%",
          "groups": [
            "0",
            "100"
          ]
        },
        {
          "kind": "test_count_pass",
          "text": "193/193 tests",
          "groups": [
            "193"
          ]
        }
      ]
    },
    {
      "sha": "ab092fa",
      "full_sha": "ab092fa374d5fed5f787449d098b06dd61b3a0f7",
      "date": "2026-04-14T23:56:16+00:00",
      "date_short": "2026-04-14",
      "subject": "v4: drop construction dim cap + canonical short-form recognizer (Gap 2)",
      "role": "substrate-gap",
      "round": null,
      "responds_to": null,
      "metrics": [
        {
          "kind": "pct_transition",
          "text": "50.57% -> 76.00%",
          "groups": [
            "50.57",
            "76.00"
          ]
        },
        {
          "kind": "pct_transition",
          "text": "52.66% -> 100.00%",
          "groups": [
            "52.66",
            "100.00"
          ]
        },
        {
          "kind": "numeric_transition",
          "text": "65.0 -> 75.0",
          "groups": [
            "65.0",
            "75.0"
          ]
        },
        {
          "kind": "numeric_transition",
          "text": "50.57 -> 76.00",
          "groups": [
            "50.57",
            "76.00"
          ]
        },
        {
          "kind": "test_count_pass",
          "text": "193/193 tests",
          "groups": [
            "193"
          ]
        }
      ]
    },
    {
      "sha": "623f0b8",
      "full_sha": "623f0b8e223719347e739f288c0a699d8bdb28be",
      "date": "2026-04-15T04:32:52+00:00",
      "date_short": "2026-04-15",
      "subject": "v4: restore negative-path gate test + refresh router doc (Codex Gap 2 review)",
      "role": "codex-review-response",
      "round": null,
      "responds_to": "ab092fa",
      "metrics": [
        {
          "kind": "test_count_pass",
          "text": "194/194 tests",
          "groups": [
            "194"
          ]
        }
      ]
    },
    {
      "sha": "29800b4",
      "full_sha": "29800b442ef7d4ec8352ca2c15821c4881a3c64d",
      "date": "2026-04-15T04:42:07+00:00",
      "date_short": "2026-04-15",
      "subject": "v4: artifact-driven routing (Gap 3)",
      "role": "substrate-gap",
      "round": null,
      "responds_to": null,
      "metrics": [
        {
          "kind": "test_count_pass",
          "text": "200/200 tests",
          "groups": [
            "200"
          ]
        }
      ]
    },
    {
      "sha": "9c3247e",
      "full_sha": "9c3247e15ee48118db771764b9a876c32d5b4ba7",
      "date": "2026-04-15T05:28:42+00:00",
      "date_short": "2026-04-15",
      "subject": "v4: cold-read decision-gate kit (v3.1 vs v4 handoff)",
      "role": "gate-kit",
      "round": null,
      "responds_to": null,
      "metrics": []
    },
    {
      "sha": "205a68f",
      "full_sha": "205a68fd330e51e28beb5087ce1aa10c473d852a",
      "date": "2026-04-15T05:52:40+00:00",
      "date_short": "2026-04-15",
      "subject": "v4: cold-read decision gate RESULT — v4 wins on clean models",
      "role": "corpus-result",
      "round": null,
      "responds_to": null,
      "metrics": [
        {
          "kind": "numeric_transition",
          "text": "20.29->34.06",
          "groups": [
            "20.29",
            "34.06"
          ]
        },
        {
          "kind": "numeric_transition",
          "text": "35.51->71.74",
          "groups": [
            "35.51",
            "71.74"
          ]
        },
        {
          "kind": "numeric_transition",
          "text": "20.25->32.91",
          "groups": [
            "20.25",
            "32.91"
          ]
        },
        {
          "kind": "numeric_transition",
          "text": "31.65->53.16",
          "groups": [
            "31.65",
            "53.16"
          ]
        },
        {
          "kind": "numeric_transition",
          "text": "11.39->30.38",
          "groups": [
            "11.39",
            "30.38"
          ]
        },
        {
          "kind": "numeric_transition",
          "text": "17.09->54.43",
          "groups": [
            "17.09",
            "54.43"
          ]
        },
        {
          "kind": "numeric_transition",
          "text": "40.00->53.33",
          "groups": [
            "40.00",
            "53.33"
          ]
        },
        {
          "kind": "numeric_transition",
          "text": "26.67->73.33",
          "groups": [
            "26.67",
            "73.33"
          ]
        }
      ]
    },
    {
      "sha": "5dcdabc",
      "full_sha": "5dcdabcfe1740b856aea40499c9c77ae0e3a8e62",
      "date": "2026-04-15T06:11:56+00:00",
      "date_short": "2026-04-15",
      "subject": "v4: cold-read gate amendment — fix Gemini concat, add precision (Codex review)",
      "role": "codex-review-response",
      "round": null,
      "responds_to": "205a68f",
      "metrics": [
        {
          "kind": "pct_transition",
          "text": "32.01% -> 23.08%",
          "groups": [
            "32.01",
            "23.08"
          ]
        }
      ]
    },
    {
      "sha": "4a5559b",
      "full_sha": "4a5559b0415e12d60f24a6f6ac33800266c63267",
      "date": "2026-04-15T06:42:59+00:00",
      "date_short": "2026-04-15",
      "subject": "v4: corpus #2 cold-read kit (construction) + scorer structural guards",
      "role": "substrate-gap",
      "round": null,
      "responds_to": null,
      "metrics": []
    },
    {
      "sha": "99c584b",
      "full_sha": "99c584b25affc03802a3566aa5f709fef8a9db48",
      "date": "2026-04-15T08:14:11+00:00",
      "date_short": "2026-04-15",
      "subject": "v4: corpus #2 — longer cold-read prompt + Grok/DeepSeek seeds",
      "role": "gate-kit",
      "round": null,
      "responds_to": null,
      "metrics": []
    },
    {
      "sha": "3987aa3",
      "full_sha": "3987aa368c162a396760d308500b4d443655bd76",
      "date": "2026-04-15T08:36:21+00:00",
      "date_short": "2026-04-15",
      "subject": "v4: cold-read corpus #2 RESULT — clean sweep, v4 wins all 4 models",
      "role": "corpus-result",
      "round": null,
      "responds_to": null,
      "metrics": []
    },
    {
      "sha": "d9f82bc",
      "full_sha": "d9f82bc021613045376445c1cf1dbb2a43991f8f",
      "date": "2026-04-15T18:11:28+00:00",
      "date_short": "2026-04-15",
      "subject": "v4: fix prose-fallback invariant — real compression, not passthrough",
      "role": "gate-kit",
      "round": null,
      "responds_to": null,
      "metrics": [
        {
          "kind": "test_count_pass",
          "text": "201/201 tests",
          "groups": [
            "201"
          ]
        },
        {
          "kind": "compression_ratio",
          "text": "3.24x chars",
          "groups": [
            "3.24"
          ]
        },
        {
          "kind": "compression_ratio",
          "text": "1.46x tokens",
          "groups": [
            "1.46"
          ]
        },
        {
          "kind": "compression_ratio",
          "text": "0.96x chars",
          "groups": [
            "0.96"
          ]
        },
        {
          "kind": "compression_ratio",
          "text": "0.84x tokens",
          "groups": [
            "0.84"
          ]
        },
        {
          "kind": "compression_ratio",
          "text": "2.83x chars",
          "groups": [
            "2.83"
          ]
        },
        {
          "kind": "compression_ratio",
          "text": "1.41x tokens",
          "groups": [
            "1.41"
          ]
        }
      ]
    },
    {
      "sha": "a7a9254",
      "full_sha": "a7a9254bf0e7a5c41752594f44f0cf4ece7c2fcf",
      "date": "2026-04-15T18:14:15+00:00",
      "date_short": "2026-04-15",
      "subject": "v4: corpus #3 cold-read kit (prose fallback, museum narrative)",
      "role": "gate-kit",
      "round": null,
      "responds_to": null,
      "metrics": [
        {
          "kind": "compression_ratio",
          "text": "3.24x chars",
          "groups": [
            "3.24"
          ]
        },
        {
          "kind": "compression_ratio",
          "text": "1.46x tokens",
          "groups": [
            "1.46"
          ]
        },
        {
          "kind": "compression_ratio",
          "text": "2.83x chars",
          "groups": [
            "2.83"
          ]
        },
        {
          "kind": "compression_ratio",
          "text": "1.41x tokens",
          "groups": [
            "1.41"
          ]
        }
      ]
    },
    {
      "sha": "4184bfe",
      "full_sha": "4184bfe8251cc391eed2ebed0055ccd5183c7d84",
      "date": "2026-04-16T14:55:13+00:00",
      "date_short": "2026-04-16",
      "subject": "v4: cold-read corpus #3 RESULT — mixed: recall up, precision down",
      "role": "corpus-result",
      "round": null,
      "responds_to": null,
      "metrics": []
    },
    {
      "sha": "b176ad2",
      "full_sha": "b176ad2b449f741349daf45561ed2f33167d3c58",
      "date": "2026-04-16T16:38:20+00:00",
      "date_short": "2026-04-16",
      "subject": "v4: qualified reversal of fold-back conclusion (cold-read gate, 3 corpora)",
      "role": "claude-research-impl",
      "round": null,
      "responds_to": null,
      "metrics": [
        {
          "kind": "test_count_pass",
          "text": "201 tests pass",
          "groups": [
            "201"
          ]
        },
        {
          "kind": "test_count_pass",
          "text": "201/201 tests",
          "groups": [
            "201"
          ]
        }
      ]
    },
    {
      "sha": "7da8533",
      "full_sha": "7da8533556f3b90eb62df25bda052c919d68a843",
      "date": "2026-04-16T18:32:16+00:00",
      "date_short": "2026-04-16",
      "subject": "v4: enforce prose envelope invariant at runtime (Codex b176ad2 review)",
      "role": "codex-review-response",
      "round": null,
      "responds_to": "b176ad2",
      "metrics": [
        {
          "kind": "numeric_transition",
          "text": "768 -> 1127",
          "groups": [
            "768",
            "1127"
          ]
        },
        {
          "kind": "numeric_transition",
          "text": "768 -> 907",
          "groups": [
            "768",
            "907"
          ]
        },
        {
          "kind": "numeric_transition",
          "text": "34878 -> 12319",
          "groups": [
            "34878",
            "12319"
          ]
        },
        {
          "kind": "test_count_pass",
          "text": "203 tests pass",
          "groups": [
            "203"
          ]
        }
      ]
    },
    {
      "sha": "595b743",
      "full_sha": "595b7436dad4f7fc5cfef6b76fb221276ba9a371",
      "date": "2026-04-16T19:04:22+00:00",
      "date_short": "2026-04-16",
      "subject": "v4: prose precision pass — word-aware aliasing + lowercase headers",
      "role": "gate-kit",
      "round": null,
      "responds_to": null,
      "metrics": [
        {
          "kind": "numeric_transition",
          "text": "203 -> 205",
          "groups": [
            "203",
            "205"
          ]
        },
        {
          "kind": "test_count_pass",
          "text": "205 tests pass",
          "groups": [
            "205"
          ]
        },
        {
          "kind": "compression_ratio",
          "text": "2.77x chars",
          "groups": [
            "2.77"
          ]
        },
        {
          "kind": "compression_ratio",
          "text": "1.35x tokens",
          "groups": [
            "1.35"
          ]
        }
      ]
    },
    {
      "sha": "c7704a6",
      "full_sha": "c7704a639aaa099c1a4cf075c941ab4c60f81508",
      "date": "2026-04-19T22:16:12+00:00",
      "date_short": "2026-04-19",
      "subject": "v4: fix prose header acronym preservation + metadata provenance (Codex 595b743 review)",
      "role": "codex-review-response",
      "round": null,
      "responds_to": "595b743",
      "metrics": [
        {
          "kind": "numeric_transition",
          "text": "205 -> 206",
          "groups": [
            "205",
            "206"
          ]
        },
        {
          "kind": "test_count_pass",
          "text": "206 tests pass",
          "groups": [
            "206"
          ]
        }
      ]
    },
    {
      "sha": "a6785c2",
      "full_sha": "a6785c2cbf20f1626b9f63a85f6d1cb18141aae2",
      "date": "2026-04-20T18:54:56+00:00",
      "date_short": "2026-04-20",
      "subject": "v4: corpus #3 precision pass RESULT — 76% gap closure, still narrowly mixed",
      "role": "corpus-result",
      "round": null,
      "responds_to": null,
      "metrics": []
    },
    {
      "sha": "8980042",
      "full_sha": "89800426bbcec684be57f3def6a4d57b8acf2d7d",
      "date": "2026-04-20T22:08:02+00:00",
      "date_short": "2026-04-20",
      "subject": "v4: cold-read scorer — detect structural mimicry (Codex a6785c2 follow-up)",
      "role": "codex-review-response",
      "round": null,
      "responds_to": "a6785c2",
      "metrics": [
        {
          "kind": "test_count_pass",
          "text": "215 tests pass",
          "groups": [
            "215"
          ]
        }
      ]
    },
    {
      "sha": "f7e3f3d",
      "full_sha": "f7e3f3d435ebb218efd4022dc473fdca799057a6",
      "date": "2026-04-21T13:44:53+00:00",
      "date_short": "2026-04-21",
      "subject": "docs: public-facing v3.1 evidence brief + project timeline for axlprotocol.org",
      "role": "codex-review-response",
      "round": null,
      "responds_to": null,
      "metrics": [
        {
          "kind": "compression_ratio",
          "text": "2.90x chars",
          "groups": [
            "2.90"
          ]
        },
        {
          "kind": "compression_ratio",
          "text": "1.40x tokens",
          "groups": [
            "1.40"
          ]
        }
      ]
    },
    {
      "sha": "2dcaa06",
      "full_sha": "2dcaa0692919292ccc292f65c89dd222941e65cd",
      "date": "2026-04-21T14:39:10+00:00",
      "date_short": "2026-04-21",
      "subject": "docs: correct axlprotocol.org brief/timeline after Codex f7e3f3d review",
      "role": "codex-review-response",
      "round": null,
      "responds_to": "f7e3f3d",
      "metrics": [
        {
          "kind": "compression_ratio",
          "text": "2.90x chars",
          "groups": [
            "2.90"
          ]
        },
        {
          "kind": "compression_ratio",
          "text": "1.40x tokens",
          "groups": [
            "1.40"
          ]
        }
      ]
    },
    {
      "sha": "45cac43",
      "full_sha": "45cac439ec7bdcdd2ca5c350dc4d27c20133ce35",
      "date": "2026-04-21T16:33:53+00:00",
      "date_short": "2026-04-21",
      "subject": "docs: HTML fragments for axlprotocol.org Phase 2 handoff",
      "role": "docs",
      "round": null,
      "responds_to": null,
      "metrics": []
    },
    {
      "sha": "91dbceb",
      "full_sha": "91dbcebb9b3f991bc3825035b10312a8a10df6e9",
      "date": "2026-04-21T16:58:47+00:00",
      "date_short": "2026-04-21",
      "subject": "docs: v3.2 research brief + timeline uplift (Diego's \"don't discard v3.2\" note)",
      "role": "docs",
      "round": null,
      "responds_to": null,
      "metrics": []
    }
  ]
}
