Gate finding 2ab (test teeth): the `or self._recovery_in_flight()` guard in
_check_ingress_dispatch_stall was untested though load-bearing. Without it the
watchdog counts a stall while an unrelated recovery is in flight, hands it to
_schedule_polling_recovery (which ignores it because a recovery is running),
and the latched "already reported" counter then swallows the stall for good.
test_dispatch_progress_rearms_the_report now stalls under an in-flight
recovery future (no report), resolves it, and requires exactly one report
after the threshold. Dropping the guard turns it red (assert 1 == 0).