compress_context ran _refresh_main_credential before _announce_compression_start, so an expired
Claude Code token's blocking network refresh left the Desktop working row a bare spinner -- the
exact delay #111294 moved the announce first to avoid. Refresh right after the announce instead;
nothing between the two touches the client, and it still precedes the feasibility probe and the
summary call. The kept compression test now also asserts the announce saw the pre-refresh state.
Fold finding C15 #3 (gate efficiency review).