dbd027287e
- Correct the per-generation reset comment: an in-place updater restart keeps PTB's update_queue, so old-generation dispatches can briefly exceed received; the check already treats that as no backlog. - Make the once-per-stall gate explicit (cap the heartbeat count) instead of relying on `!=`. - Drop the dead getattr in _record_updates_received (only reachable after _record_polling_progress dereferenced the same instance state); keep the fallbacks in the heartbeat check and group-99 handler, which sibling watchdogs share because object.__new__ adapter doubles exist in tests. - Split the single invariant test so a failure names the broken guard: stall-once, re-arm-on-progress, generation-reset; drop the unused _app mock.