71823be9da
Fixes #93406 (residual). _fleet_probe_expected_runtimes counted the _windows_gateway_resume pause/resume token (profiles/unmapped entries) as an 'expected fleet rows' signal. The token is pause/resume bookkeeping, not a runtime inventory, and its entries have no rows collect_fleet_versions() can return: unmapped Scheduled-Task gateways never publish gateway_state.json, and a resumed profile gateway relaunches detached and may not republish within the probe window. So every Windows update that paused a gateway set _fleet_rows_expected, the verification loop silently waited out its polling window (~14 min wall clock with the retry loop on user reports), printed 'Fleet version check returned no rows', and exited 1 for an update that succeeded. Expected-runtimes now keys only on row-capable signals: restart-phase bookkeeping, the pre-restart PID snapshot, and the pre-update plan inventory -- which already cover any genuinely live pre-update Windows gateway. Counterfactual proof: tests/hermes_cli/test_update_fleet_probe_resume_token.py fails on the pre-fix predicate (token-only => True) and passes with the fix; the row-capable signals are pinned unchanged.