feat(batch): BatchExec wait action with backoff + Retry-After - #246
Merged
Conversation
Adds a wait action to BatchExec that polls until the batch reaches a
terminal state, mirroring eyrie's WaitUntilDone but inlined to stay
boundary-compliant (no eyrie/client import from internal/tool):
- batchWait polls /v1/messages/batches/{id} with exponential backoff +
jitter capped at 30s, honoring Retry-After on 429/5xx, bounded by
timeout_seconds (default 600).
- batchStatus performs one fetch and treats 429/5xx as transient.
- Refactored params to a named batchExecParams type so submit/poll/wait
share a single shape; batchBaseURL is now a var so the loop is testable
against an httptest server.
New tests (6): polls-until-terminal, Retry-After honored on 429,
timeout, wait-requires-id, terminal-state classification, backoff
Retry-After override. tool/testaudit/cmd/safety suites pass;
golangci-lint 0 issues; gofmt clean.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds a wait action to
BatchExecso CI/scripted users can block until a batch completes, mirroring eyrie'sWaitUntilDonebut inlined to stay boundary-compliant (noeyrie/clientimport frominternal/tool).batchWaitpolls/v1/messages/batches/{id}with exponential backoff + jitter capped at 30s, honoringRetry-Afteron 429/5xx, bounded bytimeout_seconds(default 600)batchStatussingle fetch; treats 429/5xx as transient (keep polling)batchExecParamstype shared by submit/poll/wait;batchBaseURLis now a var for testabilityTesting
6 new tests: polls-until-terminal, Retry-After honored on 429 (timing-verified), timeout, wait-requires-id, terminal-state classification, backoff Retry-After override. Full tool/testaudit/cmd/safety suites pass; golangci-lint 0 issues.