The drive loop's outer catch recorded a bare `failed` row, so a room-level
failure rendered as "A bot hit an error" with nothing to act on. Classify it
through the same `groupFailureReason` the member catch and the stranded
harvest use, so a pool slot-wait at that level also reads as could-not-start.
Adds the invariant test that drives the production round loop with the
coordinator's slot-wait error: the activity row reads "couldn't start — too
many bots running" and no roster badge is set. Red with the member catch on
origin/main, green with the classifier call site.