Briefing
The bug was in the course template's I2C driver. Its status polling let queued bytes drop with a write collision in I2C1STAT, so the ADXL345 never left standby. The agent first dumped I2C1STAT at breakpoints. When the debugger's halts hid the race, it logged full-speed status traces into RAM and read them out afterward.
Host-side tests compiled the game logic against the real OLED driver and found a template bug that never drew vertical walls. A fuzzer checked that every generated maze was solvable for the ball's footprint. Two review agents on different models read the code cold, and photos of the panel went back to the agent after each flash. The firmware is bare-metal C built with XC16 in MPLAB X, for a course final project.
Written by the Boards & Bots curator
“When the debugger's own halts masked the race, the agent switched tactics and captured full-speed I2C1STAT traces into RAM instead”
From the GitHub API
Repository facts
| Repository | grossmanori/ |
|---|---|
| Stars | 1 |
| License | MIT Permissive |
| Language | C |
| Last push | 28 Jul 2026 3 mo ago |