)]}'
{
  "commit": "f822f69a9871b2115c5213889d70411da66ca1b1",
  "tree": "e8d1ddba4dbed71112af7f216aa2e677321a8c1c",
  "parents": [
    "3963a1b70a572132aced1c1a0033e1c8249a0c7e"
  ],
  "author": {
    "name": "hathach",
    "email": "thach@tinyusb.org",
    "time": "Fri Aug 14 01:08:50 2026 +0700"
  },
  "committer": {
    "name": "hathach",
    "email": "thach@tinyusb.org",
    "time": "Tue Aug 18 12:19:09 2026 +0700"
  },
  "message": "skills, docs: rewrite USB recovery from the live incidents\n\nTwo things the rig taught us that the old guidance got wrong.\n\nA usbfs ioctl wedged in D state cannot be freed on a running kernel. It holds\nthe device lock, so usb_disconnect() blocks behind it; reboot(2) walks\ndevice_shutdown() and takes the same lock, so every userspace reboot stalls too.\nOnly sysrq b (emergency_restart, which skips device_shutdown) or hypervisor\naction clears it -- all cited to the kernel source. The recovery ladder is\ngeneric across rigs now (ci.lan, hifiphile, a bench PC) and ends at hypervisor\nescalation only where host access exists. Two claims are corrected outright:\nJLinkExe is NOT convoy-safe, and a park-flash cannot free a device-lock owner.\n\nThe hil skill\u0027s banner list is what an operator agent matches a report against,\nso it enumerates the banners that actually exist, including the D-state note --\nwhich is explicitly NOT a wedge, since a healthy in-flight testusb is\nuninterruptible for most of every case and a concurrent CI battery would\notherwise turn a clean run red.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "6f04f6dcc5617c98bb72e807a9425fc20538f73e",
      "old_mode": 33188,
      "old_path": ".claude/agents/hil-operator.md",
      "new_id": "ebc9251cc9661b463348e0efe64cb9c128741939",
      "new_mode": 33188,
      "new_path": ".claude/agents/hil-operator.md"
    },
    {
      "type": "modify",
      "old_id": "7dba91fea9ee526f3f5464a7e4e4f80da514968e",
      "old_mode": 33188,
      "old_path": ".claude/agents/pr-monitor.md",
      "new_id": "77777b0fb086269d18f30ab94cee53aa17738d48",
      "new_mode": 33188,
      "new_path": ".claude/agents/pr-monitor.md"
    },
    {
      "type": "modify",
      "old_id": "655b5f512c1e870d90bb5ce8ff3f9a1bc8e4d7b8",
      "old_mode": 33188,
      "old_path": ".claude/agents/target-debugger.md",
      "new_id": "1b693130735d0cfee3196b92ccb2e1e21b35d210",
      "new_mode": 33188,
      "new_path": ".claude/agents/target-debugger.md"
    },
    {
      "type": "modify",
      "old_id": "9e2505736bf2fef7067193330e50d6699aa7fdf1",
      "old_mode": 33188,
      "old_path": ".claude/skills/etm-trace/SKILL.md",
      "new_id": "99e89729c1884c0bc9e0c3e62d55f80279257668",
      "new_mode": 33188,
      "new_path": ".claude/skills/etm-trace/SKILL.md"
    },
    {
      "type": "modify",
      "old_id": "49d252f6243d2f935a377816139babd81c524e11",
      "old_mode": 33188,
      "old_path": ".claude/skills/hil-pool-check/SKILL.md",
      "new_id": "6a8f66087b74341747ad4873e17ca97f48e6f170",
      "new_mode": 33188,
      "new_path": ".claude/skills/hil-pool-check/SKILL.md"
    },
    {
      "type": "modify",
      "old_id": "f273be1204a937bd343f2f562a00cd7ac1b3e59e",
      "old_mode": 33188,
      "old_path": ".claude/skills/hil/SKILL.md",
      "new_id": "093f345b21b38693745d2e79cd5e199cab369c5a",
      "new_mode": 33188,
      "new_path": ".claude/skills/hil/SKILL.md"
    },
    {
      "type": "modify",
      "old_id": "3829b4b9ecb23fa9128b494efbe01909853ce821",
      "old_mode": 33188,
      "old_path": ".claude/skills/pre-pr/SKILL.md",
      "new_id": "b96750e4f2979c37a6de733dc52fcd467f57d6c7",
      "new_mode": 33188,
      "new_path": ".claude/skills/pre-pr/SKILL.md"
    },
    {
      "type": "modify",
      "old_id": "28678c309acee3a7256580f22669c80cf386c0fa",
      "old_mode": 33188,
      "old_path": ".claude/skills/target-debug/SKILL.md",
      "new_id": "9a61a86c70389f63c21cfdc49165176f8094161b",
      "new_mode": 33188,
      "new_path": ".claude/skills/target-debug/SKILL.md"
    },
    {
      "type": "modify",
      "old_id": "ea5931cc4047cba088c75dccd26761c14dde5f57",
      "old_mode": 33188,
      "old_path": ".claude/skills/usb-kernel-recover/SKILL.md",
      "new_id": "00909076951239cf974d92ed9fd544ffc9d15a82",
      "new_mode": 33188,
      "new_path": ".claude/skills/usb-kernel-recover/SKILL.md"
    },
    {
      "type": "modify",
      "old_id": "2230602b957db3e0288012d2c8cdc8911ce0a048",
      "old_mode": 33261,
      "old_path": ".claude/skills/usb-kernel-recover/scripts/usb_recover.sh",
      "new_id": "876e0938ba2f81edd20586bb38989811dce3eb02",
      "new_mode": 33261,
      "new_path": ".claude/skills/usb-kernel-recover/scripts/usb_recover.sh"
    },
    {
      "type": "modify",
      "old_id": "76a01839caaacba59cc503e9f79e3ad8e1327822",
      "old_mode": 33188,
      "old_path": ".claude/skills/usbtest/SKILL.md",
      "new_id": "6197ccd51d37c7a0babce163fe91398f973d688e",
      "new_mode": 33188,
      "new_path": ".claude/skills/usbtest/SKILL.md"
    },
    {
      "type": "modify",
      "old_id": "50559135f466137da93680f9808012d7fd9ffe15",
      "old_mode": 33188,
      "old_path": ".claude/workflows/hil-validate.js",
      "new_id": "136f9075e57560c14da5433f513ad11eb06e8112",
      "new_mode": 33188,
      "new_path": ".claude/workflows/hil-validate.js"
    },
    {
      "type": "modify",
      "old_id": "8bb41411435583c889315e34f02e7daf14fa36c3",
      "old_mode": 33188,
      "old_path": ".claude/workflows/pr-babysit.js",
      "new_id": "406213a5fde4942259c0a69be123c80ad031e38f",
      "new_mode": 33188,
      "new_path": ".claude/workflows/pr-babysit.js"
    },
    {
      "type": "modify",
      "old_id": "fd4b9b8e01c523f76929f15175ba64840b48d8f1",
      "old_mode": 33188,
      "old_path": "CLAUDE.md",
      "new_id": "7a493e5db3cd93c3b7f879da40650aa89c4cb457",
      "new_mode": 33188,
      "new_path": "CLAUDE.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "3ed0c15193785d5200508f44517072b30f8f2004",
      "new_mode": 33188,
      "new_path": "docs/superpowers/specs/2026-07-30-hil-usbtest-fleet-wedge-design.md"
    }
  ]
}
