fix(provider): retry timed-out status probes#22793

draft3
main
fix/issue-7230
opened3d agobyJJulius Marminge
View on GitHubTwo-way sync enabledPR last imported 3d ago

A single provider status timeout replaces the usable snapshot with an error that remains visible after the executable recovers. This fixes #7230.

Reproduced on 1dfb572871 using an isolated vp run dev server and a Claude wrapper that sleeps 25 seconds on its first version probe, exceeding the current 20-second deadline. Settings reported Unavailable while later wrapper version calls succeeded; manual Refresh recovered readiness without credential changes.

Draft: regression tests first; implementation and review are pending. Intended change: bounded timeout recovery through the existing serialized, demand-aware refresh path.

Evidence: baseline runtime transcript.

Unverified: automatic recovery, Windows, macOS, Codex and other providers, desktop shell and mobile.

Prepared with Claude Opus 5.5 and GPT-6.1-Sol through the T3 Code Codex harness.

Checks

All checks passed

Added 1 commit

  • test(provider-core): takeover tests for a timed-out provider probe that must recover (#7230)d27a1ad
Synced from GitHub

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

ProviderMetricMain baselineThis PRImpactPR ceiling
CodexTotal thread wire5.0 KiB5.0 KiB−7 B (−0.1%)6.8 KiB✅
CodexThread snapshot wire3.8 KiB3.8 KiB0 B (0.0%)4.9 KiB✅
CodexLive turn WebSocket wire1.2 KiB1.2 KiB−7 B (−0.6%)2.0 KiB✅
CodexLive turn WebSocket decoded20.9 KiB20.9 KiB0 B (0.0%)29.3 KiB✅
CodexLive turn messages220 (0.0%)8✅
ClaudeTotal thread wire5.0 KiB5.0 KiB0 B (0.0%)6.8 KiB✅
ClaudeThread snapshot wire3.8 KiB3.8 KiB0 B (0.0%)4.9 KiB✅
ClaudeLive turn WebSocket wire1.2 KiB1.2 KiB0 B (0.0%)2.0 KiB✅
ClaudeLive turn WebSocket decoded21.2 KiB21.2 KiB0 B (0.0%)29.3 KiB✅
ClaudeLive turn messages220 (0.0%)8✅

Baseline: e27a03e · PR result: ecb6f5f · Source CI: success

Scenario and decoded snapshot size

10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.

  • Codex decoded thread snapshot: 108.5 KiB
  • Claude decoded thread snapshot: 108.8 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

Added 2 commits

  • fix(provider-core): a timed-out provider probe retries before the next periodic refresh (#7230)76db76f
  • fix(provider-core): a probe retry honors a disabled health refresh intervalecb6f5f