Skip to content

Python SDK v0.8.3 — release with wheels#392

Merged
toadkicker merged 1 commit intomainfrom
fix/python-sdk-release-0.8.3
May 8, 2026
Merged

Python SDK v0.8.3 — release with wheels#392
toadkicker merged 1 commit intomainfrom
fix/python-sdk-release-0.8.3

Conversation

@toadkicker
Copy link
Copy Markdown
Contributor

Summary

  • Bump Python SDK version to 0.8.3
  • Fix CI/CD workflow to build and publish wheels successfully
  • Fix repository rule conflicts preventing tag creation and release publishing

Changes

Version bump

  • VERSION: 0.8.2 → 0.8.3
  • crates/pap-python/CHANGELOG.md: Added 0.8.3 entry

Workflow fixes (from previous commits)

  1. Draft-first release: Create release as draft, upload assets, then publish to avoid immutable release asset upload failures
  2. Tag creation via release API: Use repos.createRelease with target_commitish instead of git.createRef, which respects workflow permissions and bypasses repository rules
  3. Release detection: Check for existing release instead of tag to determine if build should run

Test plan

  • Workflow builds wheels for all platforms (Linux x86_64/aarch64, macOS universal2, Windows x64, musl variants)
  • Draft release created successfully with all assets
  • Merge to main will trigger workflow and publish 0.8.3 with wheels to GitHub Releases and PyPI

Context

The 0.8.2 release was created but had no wheel files due to:

  1. Race condition: release became immutable before assets uploaded (HTTP 422)
  2. Repository rules blocking automated tag creation (GH013)

This PR fixes both issues. Once merged, the workflow will automatically build and publish Python SDK v0.8.3 with all wheels.

🤖 Generated with Claude Code

Includes CI/CD workflow fixes for wheel building and release automation.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps Bot commented May 8, 2026

Greptile Summary

This PR bumps the Python SDK version to 0.8.3 and adds the corresponding CHANGELOG entry, accompanying workflow improvements from earlier commits (draft-first release, tag creation via the Releases API, release detection by release rather than tag).

  • VERSION bumped from 0.8.20.8.3, but the root Cargo.toml workspace version — the actual source of truth for Maturin wheel naming — was not updated and still reads 0.8.2.
  • crates/pap-python/CHANGELOG.md gains a [0.8.3] entry describing the CI/CD fixes; format and date are correct.

Confidence Score: 3/5

Do not merge until the root Cargo.toml workspace version is updated to 0.8.3; otherwise the release workflow will build and publish 0.8.2 wheels under a 0.8.3 tag.

The VERSION file and CHANGELOG correctly target 0.8.3, but the Cargo workspace version that Maturin actually embeds into wheel filenames and package metadata is still 0.8.2. Merging will produce wheels named pap_protocol-0.8.2-*.whl uploaded under a python-v0.8.3 GitHub release, and the PyPI publish step will hit a version-conflict error since 0.8.2 was already released.

The root Cargo.toml needs its workspace version field updated to 0.8.3 before this lands.

Important Files Changed

Filename Overview
VERSION Bumped to 0.8.3 but root Cargo.toml workspace version (used by Maturin to name wheels) remains 0.8.2, causing a version mismatch that will break the PyPI publish step
crates/pap-python/CHANGELOG.md Adds a 0.8.3 entry with a Fixed section for CI/CD workflow improvements; date and format are correct

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[Push to main / VERSION change] --> B[check-version job]
    B -->|reads VERSION file 0.8.3| C{Release python-v0.8.3 exists?}
    C -->|No| D[build-wheels job]
    C -->|Yes| Z[Skip already released]
    D -->|Maturin reads Cargo.toml workspace version 0.8.2| E[Wheels: pap_protocol-0.8.2-*.whl]
    D --> F[build-sdist job]
    E --> G[create-release job]
    F --> G
    G --> H[GitHub Release: python-v0.8.3 tag with 0.8.2 wheels]
    E --> I[publish-pypi job]
    F --> I
    I -->|0.8.2 already on PyPI| J[PyPI publish FAILS HTTP 400 File already exists]
Loading

Fix All in Claude Code

Prompt To Fix All With AI
Fix the following 1 code review issue. Work through them one at a time, proposing concise fixes.

---

### Issue 1 of 1
VERSION:1
**Cargo workspace version not bumped alongside VERSION file**

The `VERSION` file was updated to `0.8.3`, but the root `Cargo.toml` workspace version still reads `0.8.2`. Because `crates/pap-python/Cargo.toml` declares `version.workspace = true` and `pyproject.toml` sets `version` as `dynamic`, Maturin derives the wheel version directly from the Cargo workspace. The release workflow will tag GitHub as `python-v0.8.3` but upload wheels named `pap_protocol-0.8.2-*.whl`. The subsequent PyPI publish step will then fail with a "File already exists" conflict since 0.8.2 was already released.

Reviews (1): Last reviewed commit: "chore: bump Python SDK version to 0.8.3" | Re-trigger Greptile

Comment thread VERSION
@@ -1 +1 @@
0.8.2
0.8.3
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P1 Cargo workspace version not bumped alongside VERSION file

The VERSION file was updated to 0.8.3, but the root Cargo.toml workspace version still reads 0.8.2. Because crates/pap-python/Cargo.toml declares version.workspace = true and pyproject.toml sets version as dynamic, Maturin derives the wheel version directly from the Cargo workspace. The release workflow will tag GitHub as python-v0.8.3 but upload wheels named pap_protocol-0.8.2-*.whl. The subsequent PyPI publish step will then fail with a "File already exists" conflict since 0.8.2 was already released.

Prompt To Fix With AI
This is a comment left during a code review.
Path: VERSION
Line: 1

Comment:
**Cargo workspace version not bumped alongside VERSION file**

The `VERSION` file was updated to `0.8.3`, but the root `Cargo.toml` workspace version still reads `0.8.2`. Because `crates/pap-python/Cargo.toml` declares `version.workspace = true` and `pyproject.toml` sets `version` as `dynamic`, Maturin derives the wheel version directly from the Cargo workspace. The release workflow will tag GitHub as `python-v0.8.3` but upload wheels named `pap_protocol-0.8.2-*.whl`. The subsequent PyPI publish step will then fail with a "File already exists" conflict since 0.8.2 was already released.

How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 8, 2026

Benchmark Regression Report

PAP Protocol Benchmark Regression Check
========================================
Baseline: .bench-baseline/baseline.json
Threshold: 55%

  ed25519_keypair_generation                19.6 µs  (baseline: 22.1 µs, -11.2%)  [ok]
  did_key_derivation                         1.5 µs  (baseline: 1.6 µs, -9.6%)  [ok]
  mandate_create_sign                       23.8 µs  (baseline: 26.6 µs, -10.2%)  [ok]
  mandate_chain_verify_depth3              144.4 µs  (baseline: 155.1 µs, -6.8%)  [ok]
  sd_jwt_issue_5claims                      27.8 µs  (baseline: 31.7 µs, -12.1%)  [ok]
  sd_jwt_verify_disclose_3of5               50.3 µs  (baseline: 53.1 µs, -5.2%)  [ok]
  session_open_full_lifecycle              110.2 µs  (baseline: 119.7 µs, -7.9%)  [ok]
  receipt_create_cosign                     48.0 µs  (baseline: 53.4 µs, -10.2%)  [ok]
  federation_announce_local                 62.0 µs  (baseline: 66.9 µs, -7.3%)  [ok]


P99 Tail-Latency Check
----------------------
Results: target/p99_results.json
Threshold: 50%

  session_open_full_lifecycle(p99)         121.9 µs  (baseline: 500.0 µs, -75.6%)  [ok]
  mandate_chain_verify_depth3(p99)         161.6 µs  (baseline: 480.0 µs, -66.3%)  [ok]
  receipt_create_cosign(p99)                56.1 µs  (baseline: 210.0 µs, -73.2%)  [ok]

All benchmarks within 55% of baseline.

Threshold: 10% regression vs baseline from main

@toadkicker toadkicker merged commit ce73f02 into main May 8, 2026
27 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant