Skip to content

Commit c5eb6a3

Browse files
bloveclaude
andcommitted
ci+chore: PEP 740 attestations via astral-sh/attest-action; middleware 0.0.3
Restores what #873 traded away, without reintroducing the toolchain skew. uv publish UPLOADS attestation files found beside the dists by default (--no-attestations is the opt-out) — it just doesn't MINT them. Astral's own publishing example pairs it with astral-sh/attest-action for exactly that. One toolchain end to end, attestations back. - attest step gated to the real release (a dry run uploads nothing for attestations to accompany); SHA pin f589a42a verified against tag v0.0.6 (lightweight tag, commit direct); the action's input is (glob) — caught by reading action.yml at the pinned SHA, not the README - middleware bumped to 0.0.3: attestations are only provable on a fresh upload, and PyPI versions are immutable. No code change; consumers pin >=0.0.2 and are unaffected. The 0.0.3 upload doubles as the verification (simple-API provenance must flip from 'none') Verified locally: 0.0.2 artifacts pass current twine check (Metadata 2.5), YAML parses. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
1 parent fd47bd3 commit c5eb6a3

3 files changed

Lines changed: 13 additions & 2 deletions

File tree

.github/workflows/publish-middleware-python.yml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,17 @@ jobs:
7676
working-directory: packages/threadplane-middleware
7777
run: uv publish --dry-run dist/*
7878

79+
# PEP 740 attestations: `uv publish` uploads attestation files found
80+
# next to the dists (on by default) but does not mint them — Astral's
81+
# own publishing example pairs it with their attest-action for exactly
82+
# this. Generated for the real release only; a dry run uploads nothing
83+
# for them to accompany. SHA pin verified against tag v0.0.6.
84+
- name: Generate PEP 740 attestations
85+
if: ${{ inputs.dry_run == false }}
86+
uses: astral-sh/attest-action@f589a42a7efb6fe400b4f400de60b4bc90390027 # v0.0.6
87+
with:
88+
paths: packages/threadplane-middleware/dist/*
89+
7990
# uv publish, not the pypa action: the pinned action image's twine
8091
# rejected the Metadata-Version 2.5 that current `uv build` emits
8192
# ("InvalidDistribution: '2.5' is not a valid metadata version"), while

packages/threadplane-middleware/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
44

55
[project]
66
name = "threadplane-middleware"
7-
version = "0.0.2"
7+
version = "0.0.3"
88
description = "LangGraph middleware for binding client-declared tool stubs and routing client tool calls to END so the browser executes them."
99
readme = "README.md"
1010
license = { text = "MIT" }

packages/threadplane-middleware/uv.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)