Skip to content

release: publish api-to-typemcp v0.2.2 - #78

Merged
sjungwon03 merged 17 commits into
mainfrom
dev
Jul 29, 2026
Merged

release: publish api-to-typemcp v0.2.2#78
sjungwon03 merged 17 commits into
mainfrom
dev

Conversation

@sjungwon03

Copy link
Copy Markdown
Member

Summary

  • promotes reviewed dev release candidate da8e4f22b81d7b2ede0683bdfd2f942b2f737b9d to release-only main
  • publishes the api-to-typemcp v0.2.2 skill through the main-push GitHub Release, ClawHub, and skills-hub.ai workflow
  • preserves reconciled main/dev ancestry required by the release gate

Verification

  • python3 .agents/scripts/test_skill_release.py — 16 passed
  • python3 -m unittest discover -s skills/api-to-typemcp/tests -p "test_*.py" -q — 140 passed
  • python3 .agents/scripts/test_validate_docs.py — 8 passed
  • python3 .agents/scripts/test_workspace.py — 3 passed
  • python3 .agents/scripts/validate_docs.py
  • python3 .agents/scripts/validate_release_promotion.py
  • python3 -m py_compile .agents/scripts/*.py skills/api-to-typemcp/scripts/*.py
  • git diff --check

Closes #77

@sjungwon03 sjungwon03 added the release Release preparation, promotion, or publication label Jul 29, 2026
@sjungwon03 sjungwon03 self-assigned this Jul 29, 2026
@sjungwon03-ai
sjungwon03-ai self-requested a review July 29, 2026 05:18

@sjungwon03-ai sjungwon03-ai left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review — api-to-typemcp v0.2.2 Release Promotion

Verdict: APPROVE

This devmain release promotion is well-structured and safe to merge.

Security & Safety

  • All file mutations use O_NOFOLLOW, O_DIRECTORY, and per-component symlink traversal — no symlink-following path exists.
  • Atomic backup-and-replace with O_EXCL backup creation, fsync, inode-identity TOCTOU checks, and post-write reread/parse validation.
  • Secret-free by design: plans expose env_names only; .env is never read; args resembling literal secrets are rejected.
  • Fingerprint-bound, single-use receipt gating prevents replay or plan mutation after approval.
  • Batch rollback restores prior targets; CLI adapters attempt compensating remove on failure.

Code Quality

  • Clean module separation: agent_clients (read-only detection), install_plan (immutable plan construction), config_codecs (narrow format adapters), install_mcp (atomic mutation).
  • Fail-closed throughout: unsupported formats, missing configs, symlinks, and changed fingerprints all raise typed errors.
  • patch_jsonc correctly refuses to operate until a comment-preserving writer is proven — honest engineering.

Testing

  • 140 engine tests + new dedicated suites for every module (plan, install, codecs, CLI adapters, docs contract).
  • Edge cases covered: symlinked ancestors, raced writes, duplicate names, batch partial failure, receipt single-use, Claude name-prefix false positives.

CI

  • e2e, release-promotion, docs-and-harness, bundled-engine all pass on head da8e4f2.
  • release-skill correctly skipped (PR context, not main push).

Minor Observations (non-blocking)

  • write_portable_export uses a plain write_text rather than atomic temp+replace; acceptable since it targets a project-local export, not an agent config.
  • _snapshot_spec restricts exports to node command only — reasonable scope for v0.2.2.

No blocking findings. Clean release promotion with strong safety invariants.

@sjungwon03-ai sjungwon03-ai left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Release Promotion Review — APPROVE

Exact head: da8e4f22b81d7b2ede0683bdfd2f942b2f737b9d
Base main: 169bf82f4460c19c36c001de11a09cdd5c9e11f9

Verification evidence

Gate Result
main/dev lineage preserved merge-base --is-ancestor origin/main HEAD + origin/dev HEAD enforced by release-promotion.yml:27-28; CI passed
0.2.2 version consistency SKILL.md:4 frontmatter, README.md:22 release link, .agents/scripts/test_skill_release.py:77 fixture all declare 0.2.2 / v0.2.2
No secrets or artifacts in diff ✅ grep across full diff returned only test fixtures and documentation references; no .env, dist/, .next/, node_modules/, binaries, or credential patterns
Main-push-gated release workflow skill-release.yml:23-24 requires GITHUB_EVENT_NAME=push + GITHUB_REF=refs/heads/main; credential validation (lines 30-42) precedes release mutation (lines 111-127); least-privilege permissions (contents: read top-level, contents: write release job only, persist-credentials: false on publish checkouts)
Exact-head CI checks ✅ All on da8e4f2: release-promotion pass 7s, docs-and-harness pass 6s, bundled-engine pass 19s, e2e pass 40s, release-skill correctly skipped (PR trigger, not main push)
PR governance ✅ head dev → base main, MERGEABLE, Closes #77, correct labels/assignee per AGENTS.md

No blocking findings. Release promotion is safe to squash-merge after this approval.


Independent formal review by sjungwon03-ai via Hermes Agent

@sjungwon03
sjungwon03 merged commit d4deb8b into main Jul 29, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

release Release preparation, promotion, or publication review:approved

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants