diff --git a/openspec/changes/add-release-pipeline/tasks.md b/openspec/changes/add-release-pipeline/tasks.md index 736948d..d5bdfa3 100644 --- a/openspec/changes/add-release-pipeline/tasks.md +++ b/openspec/changes/add-release-pipeline/tasks.md @@ -20,8 +20,8 @@ - [x] 4.1 Create `.github/workflows/release.yml` with a `bump` job triggered `on: push` to `main`, on a Linux runner with a pinned recent `uv` and `commitizen` installed - [x] 4.2 In the `bump` job, set `permissions: contents: write` and run `cz bump --yes --changelog` -- [ ] 4.3 In the `bump` job, push the bump commit and the `v` tag back to the repo (verify tag push triggers the publish job's `on: push: tags` trigger; if not, switch the bump job's push to a PAT or grant `actions: write` — record the resolution) — *implemented (guarded push); live verification deferred to 6.3–6.5 after merge* -- [ ] 4.4 Ensure pure `chore:`/`docs:`-only pushes to main produce no tag (commitizen determines no increment) — *implemented (cz bump makes no change → push step is a no-op via porcelain check); live verification deferred to 6.3–6.5* +- [x] 4.3 In the `bump` job, push the bump commit and the `v` tag back to the repo — *implemented; resolved live: design Open Question #1 confirmed real (default GITHUB_TOKEN tag push does NOT trigger a separate workflow run), so publish was restructured to `needs: bump` in the same run instead of a separate tag-trigger job; v0.2.0 bump commit + tag pushed successfully in run 30756728386* +- [x] 4.4 Ensure pure `chore:`/`docs:`-only pushes to main produce no tag (commitizen determines no increment) — *implemented (the bump job's `Check whether a tag was created` step gates the push on a real tag, so no-increment runs push nothing and `publish` is skipped via `needs.bump.outputs.tagged`)* ## 5. Release workflow: publish job @@ -32,11 +32,11 @@ ## 6. Bootstrap & verification -- [ ] 6.1 Confirm the trusted-publisher registration on pypi.org is in place for `mrn-dk/openspec-ui` + workflow `release.yml` + the chosen environment (manual web step, documented in README) -- [ ] 6.2 Bootstrap the first tag: either push `v0.1.0` manually or confirm the first `release.yml` bump run creates it from `0.1.0`; pick whichever yields a clean first release -- [ ] 6.3 Merge the change to `main` on a `feat/release-pipeline` branch; observe `ci.yml` build-check passes -- [ ] 6.4 Observe `release.yml` bump job runs on the merge and creates/commits the version bump + changelog + `v` tag -- [ ] 6.5 Oberve the `publish` job runs on the tag push and uploads to PyPI; verify the version appears on pypi.org/project/openspec-ui -- [ ] 6.6 Verify `uvx openspec-ui` installs and runs against an unrelated repo containing an `openspec/` root (the documented install line now works) -- [ ] 6.7 Verify the PyPI page shows the corrected Homepage URL and the unofficial disclaimer text +- [x] 6.1 Confirm the trusted-publisher registration on pypi.org is in place for `mrn-dk/openspec-ui` + workflow `release.yml` + the chosen environment (manual web step, documented in README) — *confirmed by user; publish job authenticated via OIDC successfully* +- [x] 6.2 Bootstrap the first tag: either push `v0.1.0` manually or confirm the first `release.yml` bump run creates it from `0.1.0`; pick whichever yields a clean first release — *confirmed: `cz bump` with no prior tag uses the `0.1.0` baseline from pyproject and creates `v0.2.0` directly; no manual seed needed* +- [x] 6.3 Merge the change to `main` on a `feat/release-pipeline` branch; observe `ci.yml` build-check passes — *merged via PR #4; ci.yml build-check passed (run 30756707770)* +- [x] 6.4 Observe `release.yml` bump job runs on the merge and creates/commits the version bump + changelog + `v` tag — *observed: bump job created commit `bump: version 0.1.0 → 0.2.0` + tag `v0.2.0` (run 30756728386)* +- [x] 6.5 Observe the `publish` job runs on the tag push and uploads to PyPI; verify the version appears on pypi.org/project/openspec-ui — *observed: `uv publish` uploaded `openspec_ui-0.2.0-py3-none-any.whl` + `.tar.gz`; pypi.org/pypi/openspec-ui/json reports latest `0.2.0`* +- [x] 6.6 Verify `uvx openspec-ui` installs and runs against an unrelated repo containing an `openspec/` root (the documented install line now works) — *verified: `uvx openspec-ui` in `/home/mrn/dev/repos/latigo` launched the TUI against that repo's openspec root (6 specs rendered)* +- [x] 6.7 Verify the PyPI page shows the corrected Homepage URL and the unofficial disclaimer text — *verified: project_urls Homepage=`https://github.com/mrn-dk/openspec-ui`; summary begins "An unofficial, community-built…"* - [x] 6.8 Run `openspec validate add-release-pipeline` and resolve any reported issues