PLAT-424: automate high-assurance Fleet SDK releases - #138
PLAT-424: automate high-assurance Fleet SDK releases#138andrew-stelmach-fleet wants to merge 37 commits into
Conversation
Add an opt-in async_ flag to the verifier execute path. When async_=True,
the SDK submits with "async": true, receives a job handle, and polls
GET /v1/verifiers/jobs/{job_id} until the job reaches a terminal state
(completed/failed). When async_ is False (default), behavior is unchanged.
Threaded through task.verify/verify_async/verify_detailed/verify_detailed_async,
SyncVerifierFunction/AsyncVerifierFunction remote()/remote_with_response(), and
env.execute_verifier_remote(). Added status/job_id to VerifiersExecuteResponse
and async_ (alias "async") to VerifiersExecuteRequest.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…equest recovery (#135) * feat(create): dedicated create timeout, server wait declaration, duplicate-request recovery Instance creates get their own HTTP budget (DEFAULT_CREATE_TIMEOUT=900s, overridable per call) instead of the 300s client default, declare max_wait_seconds = timeout-30 to the orchestrator so slow creates come back as responses instead of read timeouts, and recover 409 duplicate_request_id conflicts via the instance_id pointer the orchestrator returns (a transport retry that re-POSTs a create whose first attempt succeeded now returns the original instance instead of failing). Also brings the async error handler to parity with sync: FleetConflictError and the 409 branch existed only in the sync tree. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * fix(create): status-aware duplicate-create recovery A duplicate-create 409 pointer is bound at insert time, before provisioning finishes, so the pointed instance can be pending (transport retried while the original attempt was still in flight) or already dead (error/stopped). Recover by status instead of returning it blindly: running returns, pending polls out the remaining create budget, error/stopped raises FleetConflictError, budget exhaustion raises FleetTimeoutError. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
|
@cursor review |
|
@cursor review |
|
@cursor review |
|
@cursor review |
|
@cursor review |
There was a problem hiding this comment.
✅ Bugbot reviewed your changes and found no new issues!
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit 6ccf4d0. Configure here.
|
@cursor review |
|
@cursor review |
|
@cursor review |
|
@cursor review |
There was a problem hiding this comment.
✅ Bugbot reviewed your changes and found no new issues!
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit 36f3e85. Configure here.
|
@cursor review |
1 similar comment
|
@cursor review |
There was a problem hiding this comment.
✅ Bugbot reviewed your changes and found no new issues!
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit e019599. Configure here.
Summary
fleet-python-v0.2.132release lineage back into canonicalmainpypienvironment using OIDC Trusted Publishingorigin/main, mismatched versions, and mismatched package metadataLinear: https://linear.app/fleet-ai/issue/PLAT-424/canonicalize-fleet-sdk-main-and-automate-high-assurance-pypi-releases
Validation
uv run pytest -q— 762 passed, 11 skippeduv run pytest -q tests/test_release_validation.py— 5 passeduv builduvx twine check dist/*uv run python scripts/validate-release-artifacts.py --version 0.2.132actionlint -ignore 'label "warp-ubuntu-latest-x64-4x" is unknown' .github/workflows/*.ymlgit diff --checkRequired repository configuration
Before the first automated release:
mainand require the SDK CI matrix plus review approvalpypiGitHub environment and matching PyPI Trusted PublisherRELEASE_PLEASE_TOKENso bot-authored release PRs run required CIFLEET_SDK_CONSUMER_TOKENfor the post-release Theseus dispatchFull retry and rollback behavior is documented in
docs/releases.md.