chore(release): prepare api-to-typemcp v0.2.2 - #76
Conversation
release: publish embedded api-to-typemcp generator v0.2.0
chore(release): promote api-to-typemcp v0.2.1
sjungwon03-ai
left a comment
There was a problem hiding this comment.
Review: chore(release): prepare api-to-typemcp v0.2.2
Verdict: APPROVE — version bump and release-gate hardening are correct and well-tested.
What changed
skills/api-to-typemcp/SKILL.md: frontmatter version0.2.1→0.2.2..github/workflows/release-promotion.yml: the former dev-only guard is replaced with a two-tier gate acceptingdevor a strictrelease/<positive-issue>-<kebab>branch, plus main/dev ancestry checks and a two-parent merge requirement for release branches. Checkout is pinned to a SHA (actions/checkoutv4) withfetch-depth: 0..agents/scripts/validate_release_promotion.py: rewritten to assert the new contract (branch regex, pinned checkout, ancestry, merge-parent count)..agents/scripts/test_skill_release.py: fixture versions updated to0.2.2.- Two task briefs documenting the v0.2.1 promotion and v0.2.2 release preparation.
Assessment
- Correctness: The branch regex
^release/[1-9][0-9]*-[a-z0-9]+(-[a-z0-9]+)*$correctly rejectsrelease/0-*, empty segments, and uppercase. Ancestry guards ensure only lineage-preserving candidates pass. - Security: No secrets in the diff. The workflow reads
github.head_refonly for the branch-name guard; no untrusted input reaches a shell expansion. Pinned checkout SHA prevents supply-chain drift. - Tests: CI
e2e,docs-and-harness, andbundled-engineall passed on the exact head SHA.release-skillcorrectly skipped (no tag event). - Backward compatibility:
devpromotion remains accepted; the newrelease/*path is strictly additive.
No blockers found.
Reviewed by sjungwon03-ai (automated)
sjungwon03-ai
left a comment
There was a problem hiding this comment.
Independent review — head 761184d
One blocking release-claim finding; everything else verified clean.
Blocking
README.md:22— install section still linksreleases/tag/v0.2.1. Both prior preps bumped this link inside the prep commit (e6ab414for v0.2.0,2274a10for v0.2.1). Without the bump, the public README points at a stale release the moment v0.2.2 is published via thedev→mainmerge. One-line fix in the prep commit; note the file is outside the current diff so it must be added to this PR.
Verified
- Reconciliation
8fd9112is a clean no-fast-forward merge with exactly two parents (dev0d512946+ main169bf82f); combined diff empty — no evil merge. Bothmainv0.2.1 lineage169bf82fand base0d512946are ancestors of head; dev functionality (MCP installation feature set, 140 engine tests) fully preserved. - Version agreement:
skills/api-to-typemcp/SKILL.md:4=0.2.2; all 9 release-contract fixture sites in.agents/scripts/test_skill_release.pyagree on0.2.2. release-promotion.ymlguard andvalidate_release_promotion.pyassertions match; actions pinned to full SHAs;release-skilljob fires only on push to main (skip on this PR is correct).- Secrets scan, conflict-marker scan, and
git diff --checkall clean; no build artifacts or node_modules in tree. - CI run 30419789455 at exact head
761184dc:docs-and-harnesspass,bundled-enginepass,e2epass,release-skillskipped (expected). - Local on fresh clone at detached head:
test_skill_release.py15/15 OK,test_validate_docs.py8/8 OK,test_workspace.py3/3 OK,validate_release_promotion.py+validate_docs.pypass, py_compile clean.
|
Resolved the release-claim finding in the new HEAD
Fresh verification: release contract 16 passed; engine 140 passed; docs 8 passed; workspace 3 passed; docs/release-promotion validation, Python compile, and |
sjungwon03-ai
left a comment
There was a problem hiding this comment.
Superseding review — head 611dcca064bd4b7049a805250b2d9e9b1f01af71
The single blocking finding from the prior CHANGES_REQUESTED on 761184dc is resolved in the new commit 611dcca ("fix(release): align README link with v0.2.2"). No new blockers introduced.
Resolved findings
- Prior blocker:
README.md:22install section still linkedreleases/tag/v0.2.1, so the public README would point at a stale release the moment v0.2.2 was published.- Resolution evidence:
README.mdline 22 now reads- [GitHub Release v0.2.2](https://github.com/Theorvane/type-mcp-api-agent-skill/releases/tag/v0.2.2), matchingskills/api-to-typemcp/SKILL.mdversion: 0.2.2. - Regression guard: new test
test_readme_release_link_matches_the_skill_versionin.agents/scripts/test_skill_release.pyderives the expected tag fromSKILL.mdand asserts the README contains it, so future prep commits cannot silently drift again. - Docs sync:
.agents/task-briefs/75-release-api-to-typemcp-v0-2-2.mdverification table updated to the new 16-test count.
- Resolution evidence:
Verified on the new head
- Delta
761184dc...611dccais exactly one commit touching three files: the README link fix, the new release-contract test, and the task-brief count update. No unrelated changes, no artifacts, no secrets or conflict markers. - New test correctly parses
version:fromSKILL.mdfrontmatter and checks the README forreleases/tag/v{version}— logic is sound and fails closed on mismatch. - CI run
30420600831at exact head611dcca:docs-and-harnesssuccess,bundled-enginesuccess,e2esuccess,release-skillskipped (expected — fires only on push tomain). - Version agreement holds across
SKILL.md(0.2.2), README release link (v0.2.2), and the release-contract fixtures validated by the harness. - PR remains mergeable;
mergeable_state: blockedreflects the required-review gate, not a conflict — informational only, not a code-quality blocker.
Release prep is now self-consistent and guarded by a regression test. Approving.
Summary
mainrelease lineage with a no-fast-forward reconciliation mergeapi-to-typemcpskill version from0.2.1to0.2.2Verification
python3 .agents/scripts/test_skill_release.py— 15 passedpython3 -m unittest discover -s skills/api-to-typemcp/tests -p "test_*.py" -q— 140 passedpython3 .agents/scripts/test_validate_docs.py— 8 passedpython3 .agents/scripts/test_workspace.py— 3 passedpython3 .agents/scripts/validate_docs.pypython3 -m py_compile .agents/scripts/*.py skills/api-to-typemcp/scripts/*.pygit diff --checkCloses #75