)]}'
{
  "commit": "0a2ff6d71e4a07a062f8a389250140a2c6828e72",
  "tree": "d3e1ae1850ca25219739e1bedfbeeb1528d04e42",
  "parents": [
    "34a128aaf30c375dd683c6eaa8005f25aed20baf"
  ],
  "author": {
    "name": "Marty Heavey",
    "email": "mheavey@google.com",
    "time": "Tue Apr 07 15:00:07 2026 +0000"
  },
  "committer": {
    "name": "LUCI",
    "email": "gerrit-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Tue Apr 07 08:46:26 2026 -0700"
  },
  "message": "hooks: fix shared mutable list bug in ProjectResults\n\nThe ProjectResults class used a mutable default list `results: List[HookResult] \u003d []`.\nIn Python, this creates a single list instance shared across all ProjectResults\nobjects that do not explicitly provide a list. This led to cross-contamination\nof results across different projects during `repo upload`.\n\nThis change removes the default value to prevent accidental state sharing and\nrequires explicit initialization. It also updates callers to pass an empty list\nand adds a unit test to verify instance isolation.\n\nBug: 499052751\nTest: ./rh/results_unittest.py\n\nChange-Id: Icaa52eed649b9ccfb6e42e1c68505e5ee086878a\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repohooks/+/570141\nReviewed-by: Mike Frysinger \u003cvapier@google.com\u003e\nTested-by: Marty Heavey \u003cmheavey@google.com\u003e\nCommit-Queue: Marty Heavey \u003cmheavey@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "48b9fc968935d2b32a85fd9fbfa53805a7d42f5b",
      "old_mode": 33261,
      "old_path": "pre-upload.py",
      "new_id": "5cdcb31581082716805cecf663f4a8b5907e95ef",
      "new_mode": 33261,
      "new_path": "pre-upload.py"
    },
    {
      "type": "modify",
      "old_id": "1efdf332b72bae56653b9edb6ba753459004ba7e",
      "old_mode": 33188,
      "old_path": "rh/results.py",
      "new_id": "f1d1688fa6e0654894c0920aab7f1e9f077e7ae5",
      "new_mode": 33188,
      "new_path": "rh/results.py"
    },
    {
      "type": "modify",
      "old_id": "fe0916222959310f28d2440c660e153570f0b4ab",
      "old_mode": 33261,
      "old_path": "rh/results_unittest.py",
      "new_id": "9699e47abe4bf53a62aa9578a46c35204509b615",
      "new_mode": 33261,
      "new_path": "rh/results_unittest.py"
    }
  ]
}
