)]}'
{
  "commit": "32e5541bd76ee69f602def678d3ef6e50e58663e",
  "tree": "b95841505c90637fa0f02a5f6e47122902b196b8",
  "parents": [
    "73260f32cd50e24888d5901600cc4d785c73673a"
  ],
  "author": {
    "name": "Richard Levasseur",
    "email": "richardlev@gmail.com",
    "time": "Mon Oct 05 21:39:45 2026 -0700"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Mon Oct 05 21:39:45 2026 -0700"
  },
  "message": "build(release): ignore completed release issues in more commands (#4229)\n\nPR #4225 taught `add-backports` to skip open release tracking issues\nwhose \"Tag Final\" task is done, but `sync-changelog` and\n`create-release-issue` still treated any open issue as the active\nrelease. A tagged-but-unclosed issue therefore made `sync-changelog`\nauto-discovery fail with \"multiple open issues\" and blocked\n`create-release-issue` from starting the next release.\n\nMove the active/complete split into a shared\n`partition_open_tracking_issues()` on the GitHub interface and use it\nfrom all three commands. Each warns about complete-but-open issues so\nsomeone closes them; only active issues count for auto-discovery and\nfor the \"release already in progress\" guard.\n\n* Also adds tests for `create-release-issue`, which had none.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "d36086b95c83c87232816717d46ed7c453343ef8",
      "old_mode": 33188,
      "old_path": "dev/release/add_backports.py",
      "new_id": "8d357e845980dbd977af086d49d403a115d4a0da",
      "new_mode": 33188,
      "new_path": "dev/release/add_backports.py"
    },
    {
      "type": "modify",
      "old_id": "1123cfd2f8f71dc8c6a7853a3da2e5f474974f03",
      "old_mode": 33188,
      "old_path": "dev/release/create_release_issue.py",
      "new_id": "c987c8865a461b90b100308eaa3d63e21acd8e2e",
      "new_mode": 33188,
      "new_path": "dev/release/create_release_issue.py"
    },
    {
      "type": "modify",
      "old_id": "ec43662bd9d4e6c0686298000d193ab2117da4d4",
      "old_mode": 33188,
      "old_path": "dev/release/gh.py",
      "new_id": "94ac2f3fc34eea6928eb52d33c4503214c79a914",
      "new_mode": 33188,
      "new_path": "dev/release/gh.py"
    },
    {
      "type": "modify",
      "old_id": "229bf904b4ef78bd2800c100c4d8ac7196017db4",
      "old_mode": 33188,
      "old_path": "dev/release/sync_changelog.py",
      "new_id": "d79722f09d1d4d7ec3ab957ed3a53c6bc8e873f4",
      "new_mode": 33188,
      "new_path": "dev/release/sync_changelog.py"
    },
    {
      "type": "modify",
      "old_id": "bc395a74a61b8a832e4b1dd76245ec7e73aaec13",
      "old_mode": 33188,
      "old_path": "tests/tools/private/release/BUILD.bazel",
      "new_id": "b4a41aff2ab3eef96fa4aac332b0b62cde90dd36",
      "new_mode": 33188,
      "new_path": "tests/tools/private/release/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "3fbd4454c7eb07253276498a5c81c49ea9fc39df",
      "new_mode": 33188,
      "new_path": "tests/tools/private/release/create_release_issue_test.py"
    },
    {
      "type": "modify",
      "old_id": "814bedb3dcfa20a2beb687814ca45cdfa4785e9a",
      "old_mode": 33188,
      "old_path": "tests/tools/private/release/gh_test.py",
      "new_id": "0be2d01b25ecaf79c208aa84536c8cf5655b0c4e",
      "new_mode": 33188,
      "new_path": "tests/tools/private/release/gh_test.py"
    },
    {
      "type": "modify",
      "old_id": "ee438a653350fd3f9257e50ad49796eb6ef49fd8",
      "old_mode": 33188,
      "old_path": "tests/tools/private/release/sync_changelog_test.py",
      "new_id": "2cdf2026952d56fcbfdeea12403cb64eb01cad93",
      "new_mode": 33188,
      "new_path": "tests/tools/private/release/sync_changelog_test.py"
    }
  ]
}
