ship-a-fix-roundlisted
Install: claude install-skill damson/hard-won-skills
# Ship a fix round
A device-testing report is a batch, and the batch is the unit of work: the
user is waiting for one build that answers every finding, not a trickle of
half-verified edits. The failure this prevents is the round that looks done,
fixes pushed and checks green, while a finding was quietly narrowed, a golden
silently regenerated, or the build handed over predates the last fix.
## Procedure
1. **Root-cause every finding before fixing any.** Read the code path, then
reproduce: on the emulator when the claim is visual or gestural, in a JVM
test when a test can hold it. Write down, per finding, what is wrong and
why; a finding that cannot be reproduced is reported as such, with what was
tried, never silently dropped. If the emulator misbehaves, read the newest
ANR trace's main-thread stack: app frames mean the app, pure renderer or
system frames mean the emulator, so cold-boot it instead of debugging the
app on it.
```bash
adb root >/dev/null 2>&1 # refused on a production image, which is fine
trace=$(adb shell ls -t /data/anr 2>/dev/null | head -1 | tr -d '\r')
if [ -n "$trace" ]
then adb shell cat "/data/anr/$trace"
else adb bugreport anr.zip # no root: the traces are inside the report
fi
```
Pick the newest rather than naming one: the directory holds every trace the
device has kept, and the one you want is from the run you just watched.
2. **Fix minimally, and prove each check can fail.**