Skip to content

[AAASM-2956] 🐛 (readme): Add GitHub release badge + cut python-sdk GitHub Release - #122

Merged
Chisanan232 merged 5 commits into
masterfrom
v0.0.1/AAASM-2956/fix/version_badges
Jun 15, 2026
Merged

[AAASM-2956] 🐛 (readme): Add GitHub release badge + cut python-sdk GitHub Release#122
Chisanan232 merged 5 commits into
masterfrom
v0.0.1/AAASM-2956/fix/version_badges

Conversation

@Chisanan232

Copy link
Copy Markdown
Contributor

Description

Fixes the python-sdk version-badge drift (AAASM-2956). The repo's git
tags had drifted onto v0.0.2a1 (a deliberate "source-of-truth marker"
companion tag for agent-assembly v0.0.1-alpha.6, AAASM-2768), while the
published PyPI version is agent-assembly==0.0.1b1 (== SemVer
v0.0.1-beta.1). The README also had no GitHub-release badge.

This PR:

  1. README — adds a GitHub release badge next to the existing PyPI
    badge (PyPI badge kept). The release line is now surfaced alongside
    the published PyPI version.
  2. release-python.yml — after a successful PyPI publish, the new
    create-github-release job cuts the SDK's own git tag + GitHub
    Release at the published version (canonical SemVer form). The
    repository_dispatch path reuses the tag from client_payload; the
    workflow_dispatch path derives it from pypi_version via the new
    pep440-to-tag.sh inverse converter. The job is gated on the
    real-publish path, idempotent on re-run, and re-validates the tag
    shape before use.
  3. pep440-to-tag.sh + fixture suite — single source of truth for
    the PEP 440 -> SemVer-tag conversion, gated in the existing
    conversion-test workflow alongside tag-to-pep440.sh.

The backfill v0.0.1-beta.1 annotated tag + GitHub Release were created
out-of-band on master tip so the badge resolves today:
https://github.com/ai-agent-assembly/python-sdk/releases/tag/v0.0.1-beta.1

Reviewer note (badge resolution blocker): with sort=semver, the
badge currently resolves to v0.0.2 — a leftover GitHub Release whose
PyPI artifact (0.0.2) is yanked and whose body/title mark it a
"pre-release dry-run" (titled "v0.0.1-alpha.2"). It is prerelease: false and is GitHub's current "latest", so it out-ranks
v0.0.1-beta.1 under semver sort. The v0.0.2a1 tag itself does NOT
appear in the badge (it has no Release object). To make the
sort=semver badge resolve to v0.0.1-beta.1, the stray v0.0.2
Release should be deleted (keep the tag) or marked draft —
surfacing for confirmation, not done here. Without sort=semver
(date-sorted) the badge already resolves to v0.0.1-beta.1 today.

Type of Change

  • 🔧 Bug fix
  • 🚀 Release

Breaking Changes

  • No

Related Issues

  • Related JIRA ticket: AAASM-2956
  • Related GitHub issues: N/A

Closes AAASM-2956

Testing

  • Unit tests added/updated — test_pep440_to_tag.sh (14 fixtures,
    incl. 0.0.1b1 -> v0.0.1-beta.1 and a tag<->pep440 roundtrip);
    run locally green. actionlint + shellcheck clean on all
    changed workflow + script files.
  • Integration tests added/updated
  • Manual testing performed — verified the backfilled
    v0.0.1-beta.1 Release exists and that the date-sorted release
    badge resolves to v0.0.1-beta.1.
  • No tests required (explain why)

Checklist

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

Surfaces the published GitHub Release (v0.0.1-beta.1) alongside the
existing PyPI badge (0.0.1b1) so the org profile + README reflect the
coordinated release rather than the v0.0.2a1 source-of-truth tag.

Refs AAASM-2956.
Inverse of tag-to-pep440.sh: maps a published PEP 440 version
(e.g. 0.0.1b1) back to its canonical SemVer release tag
(v0.0.1-beta.1) so release-python.yml can cut the SDK's own
GitHub Release at the published version.

Refs AAASM-2956.
Mirrors test_tag_to_pep440.sh: covers stable/alpha/beta/rc forms, the
0.0.1b1 -> v0.0.1-beta.1 backfill case, a tag<->pep440 roundtrip, and
the empty-input guard.

Refs AAASM-2956.
After a successful PyPI publish, resolve the canonical SemVer release
tag (repository_dispatch carries it; workflow_dispatch derives it from
pypi_version via pep440-to-tag.sh) and add a create-github-release job
that cuts the tag + GitHub Release at that version. Gated on the
real-publish path; idempotent on re-run; re-validates the tag shape
before use. Keeps the repo's release line tracking PyPI instead of
drifting onto a source-of-truth tag like v0.0.2a1.

Refs AAASM-2956.
Add the new converter + its fixture suite to the trigger paths and run
both shellcheck + the new fixture suite alongside the existing
tag-to-pep440 harness.

Refs AAASM-2956.
@Chisanan232

Copy link
Copy Markdown
Contributor Author

Claude Code review — AAASM-2956 (python-sdk version badges)

CI state

Green: Analyze (python) + Run tag → PEP 440 fixture suite pass. (Main ci.yaml is path-skipped for README/workflow-only PRs by design.) MERGEABLE; BLOCKED = required-review only.

Scope vs. acceptance criteria

AC Status
python-sdk has a v0.0.1-beta.1 GitHub Release reflecting published 0.0.1b1 ✅ backfilled (release)
v0.0.2a1 drift reconciled/explained ✅ confirmed legitimate (a no-publish source-marker tag, no Release object → doesn't affect the badge)
Stray v0.0.2 Release polluting the badge ✅ deleted (tag kept) after owner confirmation — was a mislabeled dry-run wrongly flagged "Latest"
GitHub release badge added; PyPI kept github/v/release?include_prereleases&sort=semver + existing PyPI badge
release-python.yml cuts the SDK's own GitHub Release on future publishes ✅ new create-github-release job, gated on real-publish, using a new pep440-to-tag.sh inverse converter (0.0.1b1v0.0.1-beta.1) with a fixture + tag↔pep440 roundtrip test suite
Via PR, base master, granular commits ✅ 5 commits

Reviewer notes: the PEP440↔tag converter is properly tested (roundtrip invariant), and the release-cut job reuses the carried tag on repository_dispatch / derives it from pypi_version on workflow_dispatch. After the stray-release deletion, github/v/release&sort=semver resolves to v0.0.1-beta.1.

Verdict

Ready for approval and merge. CI green; scope complete; the drift was investigated (not blindly deleted) and the release-cut logic is test-backed.

— Claude Code

@Chisanan232
Chisanan232 merged commit cb3e220 into master Jun 15, 2026
2 checks passed
@Chisanan232
Chisanan232 deleted the v0.0.1/AAASM-2956/fix/version_badges branch June 15, 2026 01:14
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