)]}'
{
  "commit": "633e074a0b9effbfbb84c93695e52fb75009564c",
  "tree": "10b47ad5246540921ae40fa0db0a71b2bbcad0ee",
  "parents": [
    "f9c0c1239250399bc41347b9160bd95721f86dca"
  ],
  "author": {
    "name": "hathach",
    "email": "thach@tinyusb.org",
    "time": "Fri Sep 04 06:06:25 2026 +0700"
  },
  "committer": {
    "name": "hathach",
    "email": "thach@tinyusb.org",
    "time": "Fri Sep 04 06:06:25 2026 +0700"
  },
  "message": "sysview: fix cycle-3 review findings\n\n- kill_traffic(): stop the recording at --duration-ms exactly, then reap\n  the workload, instead of waiting on it (up to 60s) before -stop\n- sysview_report.py: key open_calls by (func id, context) so interleaved\n  callers of the same function don\u0027t cross-pair CALL/RET\n- build.yml: intersect the sysview dep-fetch board list with the PR\u0027s own\n  HIL selection (tinyusb.json vs hfp.json), and skip entirely when HIL is\n  not running for this PR\n- nrf54h20dk: shrink SYSVIEW_BUFFER_SIZE_DEFAULT to 4096 -- .data/.bss sit\n  in the 32 KiB primary RAM, so the family\u0027s 65536 default fails to link\n- tusb_sysview.c: copy pcTaskName into a local buffer at snapshot time so\n  a task deleted mid-lap can\u0027t leave SendTaskInfo() dereferencing a freed TCB\n- sysview_ci.py: drop a comparison against a baseline whose capture config\n  (example/workload/duration_s) changed, and fail cdc_burst when the link\n  stays enumerated but echoes nothing back\n- SKILL.md: document the WCH post-mortem dump path (OpenOCD, no J-Link)\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "5add70844ec4ecd4b4f024b5cdcb313b1c0f9bad",
      "old_mode": 33188,
      "old_path": ".claude/skills/sysview/SKILL.md",
      "new_id": "a3581b6684f87a3e97fdb66b0ff990ed36992d0a",
      "new_mode": 33188,
      "new_path": ".claude/skills/sysview/SKILL.md"
    },
    {
      "type": "modify",
      "old_id": "d17ae05aa8bb5479e47fe6a28003cdff99794dc5",
      "old_mode": 33188,
      "old_path": ".claude/skills/sysview/boards.md",
      "new_id": "690e880cab49701ff3db74c509515478f410c7b6",
      "new_mode": 33188,
      "new_path": ".claude/skills/sysview/boards.md"
    },
    {
      "type": "modify",
      "old_id": "2653e60d369c1ae081f972d9b0d74ed916a7dedd",
      "old_mode": 33188,
      "old_path": ".claude/skills/sysview/scripts/sysview_record.py",
      "new_id": "425a3099001c00ccfc7b62bb1f3ff87632f0d447",
      "new_mode": 33188,
      "new_path": ".claude/skills/sysview/scripts/sysview_record.py"
    },
    {
      "type": "modify",
      "old_id": "55213b39da670fc94d48a11c0ae9df44ec0aea58",
      "old_mode": 33188,
      "old_path": ".claude/skills/sysview/scripts/sysview_report.py",
      "new_id": "c4090ccc6677c7888735394a3b3d78b319b467b2",
      "new_mode": 33188,
      "new_path": ".claude/skills/sysview/scripts/sysview_report.py"
    },
    {
      "type": "modify",
      "old_id": "fdfa1fa3820c663544347fa546bb36967975c5fa",
      "old_mode": 33188,
      "old_path": ".github/workflows/build.yml",
      "new_id": "f9d13aa3ad8a010fa98e7594d93ff377d8abeedc",
      "new_mode": 33188,
      "new_path": ".github/workflows/build.yml"
    },
    {
      "type": "modify",
      "old_id": "8095b59fe92401234d3f4d2e1eae624009c49de9",
      "old_mode": 33188,
      "old_path": "hw/bsp/nrf/boards/nrf54h20dk/board.cmake",
      "new_id": "3a2c4e9d98e7682fdc039d413b2e2b4cab8b5626",
      "new_mode": 33188,
      "new_path": "hw/bsp/nrf/boards/nrf54h20dk/board.cmake"
    },
    {
      "type": "modify",
      "old_id": "40ca81573f7b69c77ca8d52d42f9e3796c5482da",
      "old_mode": 33188,
      "old_path": "src/common/tusb_sysview.c",
      "new_id": "a507a73d5ad11d4d078b173f7ada33d94ff9fd7f",
      "new_mode": 33188,
      "new_path": "src/common/tusb_sysview.c"
    },
    {
      "type": "modify",
      "old_id": "fb534a2e9da4dc76150151bcd27e6ffa58744fa2",
      "old_mode": 33188,
      "old_path": "test/hil/sysview_ci.py",
      "new_id": "c34adcb1f8ad1325859cb91743879453d8b66b36",
      "new_mode": 33188,
      "new_path": "test/hil/sysview_ci.py"
    }
  ]
}
