Skip to content

[AAASM-3568] 🔒 (python-sdk): SDK supply-chain attestation + SBOM + advisory gate#172

Merged
Chisanan232 merged 4 commits into
masterfrom
v0.0.1/AAASM-3568/sdk_supply_chain_attestation
Jun 23, 2026
Merged

[AAASM-3568] 🔒 (python-sdk): SDK supply-chain attestation + SBOM + advisory gate#172
Chisanan232 merged 4 commits into
masterfrom
v0.0.1/AAASM-3568/sdk_supply_chain_attestation

Conversation

@Chisanan232

Copy link
Copy Markdown
Contributor

Description

Hardens the python-sdk distribution supply chain (Story AAASM-3568). Four focused changes:

  • AAASM-3611 — PEP 740 attestations: pin attestations: true on the PyPI Trusted Publisher step so every wheel/sdist ships a Sigstore-backed attestation minted from the existing OIDC identity. An artifact uploaded outside this OIDC-gated workflow carries no attestation and is detectable.
  • AAASM-3615 — CycloneDX SBOM per release: new sbom job runs cyclonedx-py environment over the uv-synced resolved venv; the SBOM is attached to the GitHub Release on the real-publish path.
  • AAASM-3612 — pip-audit advisory gate: new dependency-audit job in ci.yaml runs pip-audit --strict against the locked environment on every push/PR, wired into the CI Success aggregate gate, with a documented (empty) --ignore-vuln allowlist for unfixable advisories.
  • AAASM-3628 — docs: SECURITY.md documenting the canonical PyPI name (agent-assembly, with typosquat warning) and a consumer verification recipe (attestations + SBOM), linked from the README.

Builds on the operator-gated, FFI-pin-lockstep publish pipeline (AAASM-3503 / AAASM-3468) without altering its gating.

Type of Change

  • ✨ New feature
  • 🔧 Bug fix
  • ♻️ Refactoring
  • 🍀 Performance improvement
  • 📚 Documentation update
  • 🚀 Release
  • 🔒 Security / supply-chain hardening

Breaking Changes

  • No
  • Yes (please describe below)

Related Issues

  • Related JIRA ticket: AAASM-3568 (Story); subtasks AAASM-3611, AAASM-3612, AAASM-3615, AAASM-3628
  • Related GitHub issues: N/A

Testing

  • Unit tests added/updated
  • Integration tests added/updated
  • Manual testing performed
  • No tests required (explain why)

Validated both changed workflows with actionlint (clean) and confirmed YAML parses. Workflow/SBOM/attestation behavior is exercised by the release pipeline on a real (or dry-run) dispatch and the pip-audit gate runs in CI on this PR.

Checklist

  • Code follows project style guidelines
  • Self-review completed
  • Comments added for complex logic
  • Documentation updated if needed
  • All tests passing

🤖 Generated with Claude Code

Chisanan232 and others added 4 commits June 23, 2026 13:11
… upload

Pin `attestations: true` explicitly on the gh-action-pypi-publish step so
every wheel/sdist ships a Sigstore-backed PEP 740 attestation minted from
the Trusted Publisher OIDC identity. An artifact pushed outside this
OIDC-gated workflow carries no attestation, making out-of-band uploads
detectable by PyPI and consumers.

AAASM-3611.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add an `sbom` job that runs `cyclonedx-py environment` over the uv-synced
resolved virtualenv and uploads `sbom.cdx.json` as a workflow artifact (on
both dry-run and real dispatches). The create-github-release job now depends
on it, downloads the artifact, and attaches the SBOM to the GitHub Release
on the real-publish path, giving consumers a machine-readable dependency
manifest to verify against advisory feeds.

AAASM-3615.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add a `dependency-audit` job that resolves the locked environment with
`uv sync --frozen` and runs `pip-audit --strict` against the PyPI/OSV
advisory databases on every push and PR. A known-vuln (possibly transitive)
dependency now fails the job, and the job is wired into the `ci-success`
aggregate gate so a red audit blocks the required check. A documented
`--ignore-vuln` allowlist (empty by default) mirrors go-sdk's KNOWN_UNFIXED
for advisories with no available fix.

AAASM-3612.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…cation

Add SECURITY.md stating the canonical PyPI name (`agent-assembly`) with a
typosquat warning, plus a consumer recipe for verifying PEP 740 attestations
on the PyPI files page and the CycloneDX SBOM attached to each GitHub
Release. Link it from the README Installation section.

AAASM-3628 (python-sdk portion).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@codecov

codecov Bot commented Jun 23, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@sonarqubecloud

Copy link
Copy Markdown

@Chisanan232

Copy link
Copy Markdown
Contributor Author

Merge-readiness review — AAASM-3568 (python-sdk)

CI: ALL GREEN. Buckets — tests/build (build-and-test_all unit/integration/contract + codecov), advisory gate (Dependency advisory audit (pip-audit) ✅), security (CodeQL/Analyze ✅), tag-fixture suite ✅, CI Success ✅, SonarCloud ✅. E2E jobs correctly skipping (gated). No red checks; nothing to fix.

Scope vs ticket — all three python-sdk subtasks covered, no gap:

  • AAASM-3611 (PEP 740 attestations) — release-python.yml publish job sets attestations: true on gh-action-pypi-publish, reusing Trusted-Publisher OIDC (no new secret). ✅
  • AAASM-3612 (pip-audit advisory gate) — new dependency-audit job runs pip-audit --strict on the frozen env and is wired into the CI Success aggregate gate. ✅
  • AAASM-3615 (CycloneDX SBOM) — new sbom job emits sbom.cdx.json via cyclonedx-py; create-github-release downloads + attaches it (--clobber, idempotent). ✅
  • Shared docs (AAASM-3628): SECURITY.md (canonical name agent-assembly, attestation + SBOM verification) + README supply-chain note. ✅

Release-time steps (attestation/SBOM attach) only execute on a real release dispatch — confirmed they don't run on this PR and are workflow-valid (CI green). pip-audit gate runs on every PR/push and is live.

Verdict: READY TO MERGE.

— Claude Code

@Chisanan232 Chisanan232 merged commit 76a8640 into master Jun 23, 2026
22 checks passed
@Chisanan232 Chisanan232 deleted the v0.0.1/AAASM-3568/sdk_supply_chain_attestation branch June 23, 2026 07:44
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