)]}'
{
  "commit": "86809f199093d37c64022d74905533dbb211ed0f",
  "tree": "4f56d5b0b46f0f5c9ba6925b04e8d9dc2ae8e34c",
  "parents": [
    "8c380e9b5d8a18582305c91f528dea7c1475e72d"
  ],
  "author": {
    "name": "Richard Levasseur",
    "email": "richardlev@gmail.com",
    "time": "Mon Oct 12 21:52:05 2026 -0700"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Mon Oct 12 21:52:05 2026 -0700"
  },
  "message": "build(release): harden the release tools workflow (#4256)\n\nThe release tools workflow could drift from dev/platforms unnoticed,\nhold a runner for six hours if a build hung, and only warn when a job\nasked for a platform that its ref lacks. It also didn\u0027t check that the\nWindows files are for the right CPU, though the i686 one is\ncross-compiled.\n\nA test now checks that the workflow\u0027s matrix and dev/platforms name the\nsame platforms. Jobs time out after 30 minutes; builds take a few\nminutes. build.sh fails with an error if dev/platforms lacks the job\u0027s\nplatform, since that\u0027s the caller\u0027s mistake; other build failures still\nonly warn. Jobs still skip the build for refs without dev/platforms,\nlike older release branches. verify.sh checks that each Windows file is\na PE file for the triple\u0027s CPU, reading the machine type from the PE\nheader because `file`\u0027s descriptions change between versions.\n\nAlso explains the \"musleabihf\" suffix in dev/platforms, and notes in\nRELEASING.md that a failed \"Build tools\" job doesn\u0027t block a release.\n\nWork towards #4216 (follow-up to #4248)",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "8971c6c240a66613250f707964b3d6e9deca7dc3",
      "old_mode": 33188,
      "old_path": ".github/workflows/release_build_tools.yaml",
      "new_id": "15a651e69ea004192da5af1506eb8dff1944f049",
      "new_mode": 33188,
      "new_path": ".github/workflows/release_build_tools.yaml"
    },
    {
      "type": "modify",
      "old_id": "cfa34cca7ea176900ee26c49c2a9a6c971292560",
      "old_mode": 33188,
      "old_path": ".github/workflows/release_publish.yaml",
      "new_id": "9b5d647c3de2de407718ace43e93287fa2eca222",
      "new_mode": 33188,
      "new_path": ".github/workflows/release_publish.yaml"
    },
    {
      "type": "modify",
      "old_id": "29251e0215a6121f3806500865dc6d73caf5ba7e",
      "old_mode": 33188,
      "old_path": "RELEASING.md",
      "new_id": "cbd9bc1b0abef963c8a8fe175b588881037d6010",
      "new_mode": 33188,
      "new_path": "RELEASING.md"
    },
    {
      "type": "modify",
      "old_id": "52880c4d8604981c4b21a5fa4e747a1f731c7d15",
      "old_mode": 33188,
      "old_path": "dev/platforms/BUILD.bazel",
      "new_id": "90657fb1a3805d56d531abbf7a44a957ba8f9b82",
      "new_mode": 33188,
      "new_path": "dev/platforms/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "00a81fa28417fecb4e4a934355f5c072187b64f7",
      "old_mode": 33261,
      "old_path": "dev/release_artifacts/build.sh",
      "new_id": "3ceb0c8b03d006b20c02681140da4365d2eceda8",
      "new_mode": 33261,
      "new_path": "dev/release_artifacts/build.sh"
    },
    {
      "type": "modify",
      "old_id": "8b93107f0d75547498dd8c4a05002fc390c30759",
      "old_mode": 33261,
      "old_path": "dev/release_artifacts/verify.sh",
      "new_id": "0c55db7caa143bc9f3b1adfd50c675f2aeb78998",
      "new_mode": 33261,
      "new_path": "dev/release_artifacts/verify.sh"
    },
    {
      "type": "modify",
      "old_id": "002fe41aa32bad7560d0a5e1a8c620184c38c600",
      "old_mode": 33188,
      "old_path": "tests/workflows/BUILD.bazel",
      "new_id": "76656e5d48e56893ba1acbe210f0660743c13045",
      "new_mode": 33188,
      "new_path": "tests/workflows/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f9eb9e72509e1f10c5c7a6399e15b13768fc55ab",
      "new_mode": 33188,
      "new_path": "tests/workflows/release_build_tools_test.py"
    }
  ]
}
