Skip to content
This repository was archived by the owner on Aug 12, 2026. It is now read-only.

PLAT-424: automate high-assurance Fleet SDK releases - #138

Closed
andrew-stelmach-fleet wants to merge 37 commits into
mainfrom
andrews/plat-424-canonicalize-fleet-sdk-main-and-automate-high-assurance-pypi
Closed

PLAT-424: automate high-assurance Fleet SDK releases#138
andrew-stelmach-fleet wants to merge 37 commits into
mainfrom
andrews/plat-424-canonicalize-fleet-sdk-main-and-automate-high-assurance-pypi

Conversation

@andrew-stelmach-fleet

Copy link
Copy Markdown
Contributor

Summary

  • reconcile the already-published fleet-python-v0.2.132 release lineage back into canonical main
  • replace manual tag publishing with reviewed Release Please PRs and immutable tags
  • run the complete Python 3.9-3.12 suite on hosted WarpBuild runners and build/inspect retained wheel and sdist artifacts
  • publish the exact tagged build through the protected pypi environment using OIDC Trusted Publishing
  • finalize the GitHub release only after PyPI succeeds, then dispatch a separate Theseus consumer-update PR
  • reject tags outside origin/main, mismatched versions, and mismatched package metadata

Linear: 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 skipped
  • uv run pytest -q tests/test_release_validation.py — 5 passed
  • uv build
  • uvx twine check dist/*
  • uv run python scripts/validate-release-artifacts.py --version 0.2.132
  • actionlint -ignore 'label "warp-ubuntu-latest-x64-4x" is unknown' .github/workflows/*.yml
  • Release Please config JSON schema validation
  • git diff --check

Required repository configuration

Before the first automated release:

  • protect main and require the SDK CI matrix plus review approval
  • configure the protected pypi GitHub environment and matching PyPI Trusted Publisher
  • configure RELEASE_PLEASE_TOKEN so bot-authored release PRs run required CI
  • configure FLEET_SDK_CONSUMER_TOKEN for the post-release Theseus dispatch

Full retry and rollback behavior is documented in docs/releases.md.

ggelango and others added 27 commits April 30, 2026 20:34
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>
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>
)

* feat(judge): propagate verifier cost team header

* chore(release): bump fleet-python to 0.2.132
Comment thread fleet/_async/client.py
@andrew-stelmach-fleet

Copy link
Copy Markdown
Contributor Author

@cursor review

Comment thread .github/workflows/release.yml
Comment thread Makefile
@andrew-stelmach-fleet

Copy link
Copy Markdown
Contributor Author

@cursor review

Comment thread scripts/validate-release-tag.sh
Comment thread .github/workflows/release.yml
@andrew-stelmach-fleet

Copy link
Copy Markdown
Contributor Author

@cursor review

@andrew-stelmach-fleet

Copy link
Copy Markdown
Contributor Author

@cursor review

Comment thread fleet/client.py Outdated
@andrew-stelmach-fleet

Copy link
Copy Markdown
Contributor Author

@cursor review

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ 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.

@andrew-stelmach-fleet

Copy link
Copy Markdown
Contributor Author

@cursor review

Comment thread fleet/client.py Outdated
Comment thread fleet/client.py
@andrew-stelmach-fleet

Copy link
Copy Markdown
Contributor Author

@cursor review

@andrew-stelmach-fleet

Copy link
Copy Markdown
Contributor Author

@cursor review

Comment thread .github/workflows/release.yml
Comment thread .github/workflows/ci.yml Outdated
@andrew-stelmach-fleet

Copy link
Copy Markdown
Contributor Author

@cursor review

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ 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.

@andrew-stelmach-fleet

Copy link
Copy Markdown
Contributor Author

@cursor review

1 similar comment
@andrew-stelmach-fleet

Copy link
Copy Markdown
Contributor Author

@cursor review

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ 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.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants