)]}'
{
  "commit": "34a3360979fedb42986989c2a9646708f7aa9052",
  "tree": "b02d711a1773db9cb85cc07318fbcd0cb67c07db",
  "parents": [
    "94e8b740ee19bbce38cad4fd3be015966d482885"
  ],
  "author": {
    "name": "Alexander Thomas",
    "email": "athom@google.com",
    "time": "Wed Jul 01 10:55:57 2026 +0200"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Wed Jul 01 10:55:57 2026 +0200"
  },
  "message": "Refactor CI Results to use extension types (Part 1) (#211)\n\nIntroduce ResultRecord, ChangeRecord, and ConfigurationRecord extension types to wrap Firestore documents. Refactor builder.dart, upload_results_to_database.dart, reverted_changes.dart, status.dart, and corresponding tests to use these extension types instead of raw maps and SafeDocument. Keep tryjobs, reviews, commits, and comments using SafeDocument/Commit for now, to be refactored in subsequent PRs.\n\nTAG\u003dagy\nCONV\u003da2878fa6-b79f-4b1d-9635-654148d5ceb2",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "3faea3c0b8313f28e53390dc6bd444ec602d79b9",
      "old_mode": 33188,
      "old_path": "builder/bin/upload_results_to_database.dart",
      "new_id": "1e8adc7196835c9ffa4488db9247df33dc26060e",
      "new_mode": 33188,
      "new_path": "builder/bin/upload_results_to_database.dart"
    },
    {
      "type": "modify",
      "old_id": "16b11450b2c171eb9c31de224be3625c8b04e283",
      "old_mode": 33188,
      "old_path": "builder/lib/src/builder.dart",
      "new_id": "f41fa457a43fe38e0580bd71dd967292e5e67b37",
      "new_mode": 33188,
      "new_path": "builder/lib/src/builder.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b1baaa990730261ce78c07615aa4497927c9b81c",
      "new_mode": 33188,
      "new_path": "builder/lib/src/data.dart"
    },
    {
      "type": "modify",
      "old_id": "5139a18b91b6eb7e1594782cc0c4df0df0b0ab1a",
      "old_mode": 33188,
      "old_path": "builder/lib/src/firestore.dart",
      "new_id": "e3a87134d64daceb974b7554c28a7301cc15b213",
      "new_mode": 33188,
      "new_path": "builder/lib/src/firestore.dart"
    },
    {
      "type": "modify",
      "old_id": "1ea01fbca46d6609a998d1b0425dfed5255009fc",
      "old_mode": 33188,
      "old_path": "builder/lib/src/firestore_helpers.dart",
      "new_id": "9e1903fd799da78075c83eb422caba5ee24e98ca",
      "new_mode": 33188,
      "new_path": "builder/lib/src/firestore_helpers.dart"
    },
    {
      "type": "modify",
      "old_id": "526c61f848f4ff32ed2dcc8ae73f202fe57e123d",
      "old_mode": 33188,
      "old_path": "builder/lib/src/result.dart",
      "new_id": "edcca29ef75db8c142be452596764cda6cbba131",
      "new_mode": 33188,
      "new_path": "builder/lib/src/result.dart"
    },
    {
      "type": "modify",
      "old_id": "5085ebd45494088debc6e4b8e124168fe779c0e5",
      "old_mode": 33188,
      "old_path": "builder/lib/src/reverted_changes.dart",
      "new_id": "870cd177f2b3b5af31b5d766c2c036c0c37f424a",
      "new_mode": 33188,
      "new_path": "builder/lib/src/reverted_changes.dart"
    },
    {
      "type": "modify",
      "old_id": "5acc843a1d53c16f3b379898b116a2fc4b160af9",
      "old_mode": 33188,
      "old_path": "builder/lib/src/status.dart",
      "new_id": "d93e7c3e966c0748632ecd821b7cc3c531bfb362",
      "new_mode": 33188,
      "new_path": "builder/lib/src/status.dart"
    },
    {
      "type": "modify",
      "old_id": "682f182ccec8d257d297988e993a9631c7121948",
      "old_mode": 33188,
      "old_path": "builder/lib/src/tryjob.dart",
      "new_id": "15fefc9a8fc70d0b88820d15705d4b8a0afffcfe",
      "new_mode": 33188,
      "new_path": "builder/lib/src/tryjob.dart"
    },
    {
      "type": "modify",
      "old_id": "e008a7513d4e647a822095378938251da1f52b1e",
      "old_mode": 33188,
      "old_path": "builder/test/approvals_test.dart",
      "new_id": "2c6b5180ca8b3d41937a2d76136b130c7597eaf5",
      "new_mode": 33188,
      "new_path": "builder/test/approvals_test.dart"
    },
    {
      "type": "modify",
      "old_id": "f9a9cbc7cccb29c02cb03d2dc64768a54a60581a",
      "old_mode": 33188,
      "old_path": "builder/test/builder_test.dart",
      "new_id": "f670b6bbcbb13bbe5abbfb14bc25be6e2cd9d0b0",
      "new_mode": 33188,
      "new_path": "builder/test/builder_test.dart"
    },
    {
      "type": "modify",
      "old_id": "c06d2fcdcb6f0abd08e31bd7b902462fa195c5ae",
      "old_mode": 33188,
      "old_path": "builder/test/fakes.dart",
      "new_id": "47a363021d36ac05c5c6518a2489b95f080c8356",
      "new_mode": 33188,
      "new_path": "builder/test/fakes.dart"
    },
    {
      "type": "modify",
      "old_id": "22d79b7216d55ce89a6ec45300fb2a3a9d8154f3",
      "old_mode": 33188,
      "old_path": "builder/test/firestore_test.dart",
      "new_id": "dd073b88fce6502908c4d9ff11e0868584752162",
      "new_mode": 33188,
      "new_path": "builder/test/firestore_test.dart"
    },
    {
      "type": "modify",
      "old_id": "6c385d32b4f70576e6ce6d098c83807e968e1790",
      "old_mode": 33188,
      "old_path": "builder/test/results_test.dart",
      "new_id": "9d9708e9388b653284681c06fa4e36de67cfa5b9",
      "new_mode": 33188,
      "new_path": "builder/test/results_test.dart"
    },
    {
      "type": "modify",
      "old_id": "d9480a7d6f0904609b4e3a9395f12157d51871ad",
      "old_mode": 33188,
      "old_path": "builder/test/revert_test.dart",
      "new_id": "fe56140cd70b3bcd59948a40f548e49040815890",
      "new_mode": 33188,
      "new_path": "builder/test/revert_test.dart"
    },
    {
      "type": "modify",
      "old_id": "aa78de8dd53a072811c3c1a28ee84907e18a118a",
      "old_mode": 33188,
      "old_path": "builder/test/tryjob_test.dart",
      "new_id": "e6b5f5076c39e04cc933528da2873936e4db5c61",
      "new_mode": 33188,
      "new_path": "builder/test/tryjob_test.dart"
    }
  ]
}
