docs(changelog): fill Unreleased gaps for #19 QA workflow and #24-#28 CI fix#36
Conversation
…CI fix Pre-release audit against `git log v0.4.2..main` surfaced three gaps in the `[Unreleased]` section: - No entry for PR #19 (QA workflow + PR label state machine) — a major infrastructure addition precedented by v0.4.2's Ruff entry. - No entry for the #24-#28 `workflow_run` registration fix saga. - The coverage push entry did not call out the `# pragma: no cover` sweep, which is a hard-rule policy for the project. Adds an Added entry for #19, a Fixed entry for #24-#28, and tacks a sentence onto the existing coverage entry. No code changes. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
cmeans
left a comment
There was a problem hiding this comment.
QA Review — PR #36
Verdict: Ready for QA Signoff
CHANGELOG-only; all three gap-fill claims verified against git history. Test suite + lint + CI clean. One note on the local smoke-test claim, tracked elsewhere — does not block.
Verification — each gap claim
Claim 1 — PR #19 QA workflow + label state machine. PR #19 merged at 0774c91. Touched files (gh pr view 19): .github/labels.yml, .github/workflows/{qa-gate,pr-labels,pr-labels-ci,sync-labels}.yml, CLAUDE.md. Exactly the set the new ### Added bullet names. The state machine described (Awaiting CI → Ready for QA → QA Active → Ready for QA Signoff / QA Failed → QA Approved) matches the workflow files on main. CLAUDE.md § "PR & Label Workflow" exists (1 hit via grep). ✓
Claim 2 — PRs #24–#28 workflow_run registration fix saga. Confirmed all five PRs touch only .github/workflows/pr-labels-ci.yml:
- #24
add workflow_dispatch to prime workflow_run listener - #25
guard env against missing workflow_run context - #26
use 'none' instead of '' as null-coalesce fallback - #27
extract workflow_run fields via jq from $GITHUB_EVENT_PATH - #28
remove literal dollar-brace-brace from run-block comments (actual root cause)
PR #28's title exactly matches the CHANGELOG description ("literal GitHub Actions template-expression syntax inside shell comments … substituted by the runner at queue time … silently prevented the workflow from registering"). "Five iterations" is literal. ✓
Claim 3 — #30 pragma sweep. PR #30 merged at b327ad4; its two commits on test/coverage-push are e472e32 test: push pure-logic modules to 100% coverage, add regression guard and bb2b9d7 test: remove all \# pragma: no cover` — cover, delete, or refactor instead. Confirmed the pragma-removal commit is part of PR #30 (gh pr list --search→ #30 ownstest/coverage-push`). Adding one sentence to the existing entry rather than a new bullet is appropriate for a single PR. ✓
Local tests
.venv/bin/python -m pytest tests/ -q→ 449 passed in 33.95s..venv/bin/ruff check src/ tests/→ all checks passed.- CI green on
docs/changelog-unreleased-gaps; mergeable.
Note — not blocking
Local scripts/smoke-test.sh fails on this branch at the uv build step with Readme file does not exist: README-pypi.md. This is a pre-existing repo issue — pyproject.toml declares readme = {file = "README-pypi.md"}, but that file is generated on the fly inside .github/workflows/ci.yml and publish.yml (three Path('README-pypi.md').write_text(cleaned, ...) hits) and is not checked into git (git log --all -- README-pypi.md returns empty across every branch). So the smoke test passes in CI because the workflow generates the file first, but fails for anyone running it locally without reproducing that step. PR #36 does not change any of this — it's CHANGELOG-only — and PR #37 (fix/remove-readme-pypi-dance, "fix: remove README-pypi.md generation dance, point pyproject at README.md") is already open and targets exactly this. So the PR body's scripts/smoke-test.sh — 19/19 passed (pre-change state) checkbox is probably true in a CI-primed working tree but not locally from a clean checkout. Worth tightening the test-plan wording when this surfaces again (e.g. "via CI" or "after running the CI README-pypi generation step"), but out of scope for this PR.
No findings
QA checkbox in PR body now ticked. Promoting to Ready for QA Signoff. Maintainer can apply QA Approved.
Summary
Pre-release audit against `git log v0.4.2..main` surfaced three gaps in `CHANGELOG.md` § `[Unreleased]`:
No code changes — CHANGELOG-only.
Test plan
Context
This is the final gap-fill before proposing a `v0.5.0` tag (minor bump forced by the MIT → Apache-2.0 license switch in PR #22).