Skip to content

feat: add model and group retry time budgets - #649

Merged
zijiren233 merged 1 commit into
labring:mainfrom
zijiren233:feat/model-retry-time-budget
Sep 6, 2026
Merged

feat: add model and group retry time budgets#649
zijiren233 merged 1 commit into
labring:mainfrom
zijiren233:feat/model-retry-time-budget

Conversation

@zijiren233

Copy link
Copy Markdown
Member

Add elapsed-time retry budgets so slow failures stop scheduling new attempts when the configured budget is exhausted. Models and group model overrides can set a budget in seconds, and RETRY_BUDGET / RetryBudget provides the global default. Budgets are limited to 180 seconds.

  • Count only preserves count-based retries. Budget only allows unlimited retries within the budget. With both configured, either limit stops retries.
  • Model budgets inherit the global default when omitted and disable it when set to zero. An explicit positive model budget without a positive local count uses budget-only retries. Group overrides support disabling or restoring inherited budgets and clearing an inherited count.
  • The budget starts with the first upstream attempt and includes calls and backoff. Expiration stops new retries and interrupts backoff; in-flight calls keep their existing timeout. Permission failures exclude the channel and now obey the configured retry count.
  • Add model and group form controls, persistence and API validation, and configuration/API documentation.

Validation: all 2,078 core Go tests passed; 45 frontend tests passed; changed backend packages and frontend files passed lint; TypeScript and the frontend production build passed. Browser checks covered model/group budget save, zero, inheritance reset, and desktop/mobile layouts.

@zijiren233
zijiren233 merged commit f66270f into labring:main Sep 6, 2026
18 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant