)]}'
{
  "commit": "c3ad460bed37dc8c453fa4c3a70a0f3b02a883bb",
  "tree": "ff368516b9ee4348b23dd35f36bffb387084d420",
  "parents": [
    "4c1f89c49b9fa656ea336bb664e70082de4262a9"
  ],
  "author": {
    "name": "Mike Kruskal",
    "email": "mkruskal@google.com",
    "time": "Sat Oct 17 22:53:50 2026 -0700"
  },
  "committer": {
    "name": "Copybara-Service",
    "email": "copybara-worker@google.com",
    "time": "Mon Oct 19 22:19:50 2026 -0700"
  },
  "message": "Carve the read-only FailureList out of the conformance ResultLedger.\n\nThe ledger did two things: it judged every result against the expected\nfailures and the enforcement level, and it tallied the outcomes.  The\njudging half is now a FailureList, built once from the failure list files\nand never changed afterwards, which answers VerdictOnSuccess(),\nVerdictOnFailure() and VerdictOnSkip().  The ledger owns one, applies its\nverdicts in the Report*() methods and keeps the counting and the --fix\nbookkeeping.  Nothing about how a result is judged changes; the failure\nlist is now a value that can be reasoned about and tested on its own.\n\nFailureList gets its own unit test, and the ledger tests that only checked\nthe list\u0027s matching rules and messages move there.\n\nOne consequence: the wildcard expansion cap is no longer enforced by the\nverdict (a list that never changes can\u0027t count matches), so the ledger\nreports the overexpanded entries at the end of the run through\nOverexpandedWildcards() and the environment fails the run over them,\ninstead of the 22nd matching test failing on its own.\n\nPiperOrigin-RevId: 1001701867\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "f999fed5866e37aa232c04ebe7d70b20a09e79a0",
      "old_mode": 33188,
      "old_path": "conformance/BUILD",
      "new_id": "93f70da85ccd2d337a67e8a90bc36cf61868227c",
      "new_mode": 33188,
      "new_path": "conformance/BUILD"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "25e656c5975041bce6b69c2721d013c8fd7bcc8d",
      "new_mode": 33188,
      "new_path": "conformance/failure_list.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "3aaa90080f7294049a90ca2bc3226ebf854facd1",
      "new_mode": 33188,
      "new_path": "conformance/failure_list.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "68cd931ccb15386031da8550a382cd43b80528da",
      "new_mode": 33188,
      "new_path": "conformance/failure_list_test.cc"
    },
    {
      "type": "modify",
      "old_id": "3d7fc84f8c47dad125d6e8cfc33a04454bc79bba",
      "old_mode": 33188,
      "old_path": "conformance/result_ledger.cc",
      "new_id": "92aaab5bd5f15475e423621f8df6bf15d4bb53f3",
      "new_mode": 33188,
      "new_path": "conformance/result_ledger.cc"
    },
    {
      "type": "modify",
      "old_id": "51718ad78ca63337fa6995e57ba0f36278cee1f8",
      "old_mode": 33188,
      "old_path": "conformance/result_ledger.h",
      "new_id": "8036abd29f485d81ba87a820520f63d3dcd9f206",
      "new_mode": 33188,
      "new_path": "conformance/result_ledger.h"
    },
    {
      "type": "modify",
      "old_id": "0f6fe97b54564539d0bd808e87eaeda68b4cc352",
      "old_mode": 33188,
      "old_path": "conformance/result_ledger_test.cc",
      "new_id": "06a0cd6a33b9c55a9dbd4de559980f2d26ddc2b2",
      "new_mode": 33188,
      "new_path": "conformance/result_ledger_test.cc"
    },
    {
      "type": "modify",
      "old_id": "b0b1b73a3a47c7c951480b46e539bbad7a0118b5",
      "old_mode": 33188,
      "old_path": "conformance/test_environment.cc",
      "new_id": "43cc3721eb3a0325539c871611c3c5ac30334b67",
      "new_mode": 33188,
      "new_path": "conformance/test_environment.cc"
    }
  ]
}
