60ee3790e0
Follow-ups on the #101406 salvage (#101391): - The issue's measured incident was a healthy connect followed by silent polling loss; nothing republished for 11 h. `_schedule_polling_recovery` (the single entry to the recovery ladder) now publishes "retrying" while the adapter is running; `_record_polling_progress` already flips it back. - `BasePlatformAdapter.send_path_degraded` property (default False) replaces the runner's `getattr(adapter, "_send_path_degraded")` reach into a plugin-private attribute; Telegram overrides it. `_mark_connected()` reads the property instead of taking a `degraded=` kwarg, and `_mark_degraded()` + `DEGRADED_STATUS_MESSAGE` replace three copies of the same write/string. - The startup connect stamp (sibling of the reconnect stamp) honours the same flag. - Tests: mid-session death publishes retrying; pre-connect death does not; progress never flips while not running / fatal; runner reconnect stamp honours the adapter flag.