You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Providers and transports fail intermittently; a tunable retry surface must classify the right errors without looping forever on overflow or client 4xx.
Evidence
Tip fca21c174dc5a015f4530c84b95da186149210ac (base dev):
Live: cd packages/opencode && bun test test/session/retry.test.ts → 70 pass / 3 fail (timeouts on policy updates, policy stops after five, one ECONNRESET conversion)
Core session.retry.retryable and most message-v2.fromError cases passed
Evidence class: BEHAVIORAL (LIMITED — flaky wall-clock under CI-like caps)
Invariant: matching API/transport capacity and 5xx text retries; context overflow and non-retryable 4xx do not.
Ask (design, light) — prospective; non-blocking
Should delay/policy tests use fake timers so wall-clock flakes cannot gate merge?
Is five retries the right hard stop for free-tier vs paid, or should that stay config-only?
Fork mirror of a sealed OSS review draft. Not posted upstream.
Why this matters
Providers and transports fail intermittently; a tunable retry surface must classify the right errors without looping forever on overflow or client 4xx.
Evidence
Tip
fca21c174dc5a015f4530c84b95da186149210ac(basedev):cd packages/opencode && bun test test/session/retry.test.ts→ 70 pass / 3 fail (timeouts onpolicy updates,policy stops after five, oneECONNRESETconversion)session.retry.retryableand mostmessage-v2.fromErrorcases passedInvariant: matching API/transport capacity and 5xx text retries; context overflow and non-retryable 4xx do not.
Ask (design, light) — prospective; non-blocking
Fork mirror of a sealed OSS review draft. Not posted upstream.
fca21c174dc5a015f4530c84b95da186149210acpackages/opencodebun test test/session/retry.test.ts→ 70/73 (3 timeout flakes on delay/fromError; retryable/message-v2 core green)anomalyco/opencode#44517