)]}'
{
  "commit": "eef5af86aa26fe3d72e41156a586a6ed3ffce9f8",
  "tree": "fa5ebe3a8d46738338eaee2d4a80717a7a10f464",
  "parents": [
    "5d8afbb23248e9d1d5d1fdf434c9c58cc54ba5b7"
  ],
  "author": {
    "name": "Ha Thach",
    "email": "thach@tinyusb.org",
    "time": "Thu Jul 30 02:29:32 2026 +0700"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Thu Jul 30 02:29:32 2026 +0700"
  },
  "message": "hil, ci: scope HIL builds and tests to the boards a PR affects (#3797)\n\nhil, ci: scope HIL builds and tests to the boards a PR affects\n\nAdd test/hil/hil_select.py, a stdlib-only selector that maps a PR diff to the\nrig boards, tests and BSP families a change can affect, and wire it into CI so\npull requests build and run only those. A port change picks its families\u0027 boards,\na class change picks the examples enabling that class, and device/host changes\nprune the other role. Anything unclassified — infra, an unmapped port, a selector\nerror — falls back to the full matrix, and push/schedule runs are untouched.\nMove the shared example lists to hil_examples.py; 54 hardware-free tests cover\nthe rules.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "6c4d3a8566b1d13ff917b5552927cc837cab29b8",
      "old_mode": 33188,
      "old_path": ".claude/skills/hil/SKILL.md",
      "new_id": "f273be1204a937bd343f2f562a00cd7ac1b3e59e",
      "new_mode": 33188,
      "new_path": ".claude/skills/hil/SKILL.md"
    },
    {
      "type": "modify",
      "old_id": "428383424ec4976bb08054a10bc85e970b88bc4a",
      "old_mode": 33188,
      "old_path": ".claude/skills/pre-pr/SKILL.md",
      "new_id": "3829b4b9ecb23fa9128b494efbe01909853ce821",
      "new_mode": 33188,
      "new_path": ".claude/skills/pre-pr/SKILL.md"
    },
    {
      "type": "modify",
      "old_id": "76e19ee023f73068fba41544e8c1f8f5af97ca0c",
      "old_mode": 33188,
      "old_path": ".github/workflows/build.yml",
      "new_id": "bdef81553ba595886385b9da93a2eb0be55b49d1",
      "new_mode": 33188,
      "new_path": ".github/workflows/build.yml"
    },
    {
      "type": "modify",
      "old_id": "90115862bd90e66bb80de6391e1b37b0c21b9359",
      "old_mode": 33188,
      "old_path": ".github/workflows/build_util.yml",
      "new_id": "02f16488a80ded2ff6650fc2b47690f7fa7f91c5",
      "new_mode": 33188,
      "new_path": ".github/workflows/build_util.yml"
    },
    {
      "type": "modify",
      "old_id": "4d50817b4a080024de369761a213362840b0e807",
      "old_mode": 33188,
      "old_path": ".github/workflows/pr_comment.yml",
      "new_id": "868e56405ff76abe5b152f5908fdb811984de97c",
      "new_mode": 33188,
      "new_path": ".github/workflows/pr_comment.yml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "a8abf98872656eeea7fc7c831b5aed30eb31b0a4",
      "new_mode": 33188,
      "new_path": "docs/superpowers/plans/2026-07-29-hil-select.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8158758bc3af3c48061f37dcc9cce101e41302a4",
      "new_mode": 33188,
      "new_path": "docs/superpowers/specs/2026-07-29-hil-pr-scoped-selection-design.md"
    },
    {
      "type": "modify",
      "old_id": "89e2aadf236d65d76873bd3cf874246f74dca702",
      "old_mode": 33188,
      "old_path": "hw/bsp/mcx/family.cmake",
      "new_id": "60f43e152b8132f56d14247b4353f8aaf4af6f9d",
      "new_mode": 33188,
      "new_path": "hw/bsp/mcx/family.cmake"
    },
    {
      "type": "modify",
      "old_id": "3384b4e2e5785213fe8d821b153c1655a821103c",
      "old_mode": 33188,
      "old_path": "test/hil/hil_ci.sh",
      "new_id": "ef93bcb4997677ddbf1ffb3644f8fdd2d8497d6b",
      "new_mode": 33188,
      "new_path": "test/hil/hil_ci.sh"
    },
    {
      "type": "modify",
      "old_id": "13f7f1882eda31efe8d0069729ace8a1d90ac79b",
      "old_mode": 33188,
      "old_path": "test/hil/hil_ci_set_matrix.py",
      "new_id": "bca989bd15fe5743c8a1e54a5184a0036450f6ac",
      "new_mode": 33188,
      "new_path": "test/hil/hil_ci_set_matrix.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "4c8b6918bd92ea769fed76294d21f3488922e082",
      "new_mode": 33188,
      "new_path": "test/hil/hil_examples.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "3ac3f1fdb3e572bc3750c4aea5e33f13623b7d28",
      "new_mode": 33261,
      "new_path": "test/hil/hil_select.py"
    },
    {
      "type": "modify",
      "old_id": "71e85f55fb14b057bc4686ef1a5e5fde3989c73c",
      "old_mode": 33261,
      "old_path": "test/hil/hil_test.py",
      "new_id": "96d52e601f44c6bfe49ef808a32b1c9532c4b991",
      "new_mode": 33261,
      "new_path": "test/hil/hil_test.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "6a2bf621078908051fb172e291ae8d4f592528c0",
      "new_mode": 33188,
      "new_path": "test/hil/test_hil_select.py"
    }
  ]
}
