The fix is already in place from previous commits (47c3396, c047131).
This commit documents the solution for future reference.
The stuck detection now correctly distinguishes between:
- beadsCompleted: all beads processed (including timed-out/deferred)
- beadsSucceeded: successful completions only
- beadsTimedOut: timed-out/deferred beads
Stuck reason text now clearly shows metrics:
'100 processed but 0 successful completions (all timed out/deferred)'
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>