Skip to content

fix: align plugin manifests with release tags and guard future drift (#874)#876

Merged
igorls merged 3 commits intodevelopfrom
fix/version-drift-874
Apr 14, 2026
Merged

fix: align plugin manifests with release tags and guard future drift (#874)#876
igorls merged 3 commits intodevelopfrom
fix/version-drift-874

Conversation

@igorls
Copy link
Copy Markdown
Member

@igorls igorls commented Apr 14, 2026

Closes #874.

Summary

  • Bumps .claude-plugin/marketplace.json, .claude-plugin/plugin.json, and .codex-plugin/plugin.json from 3.0.14 to 3.3.0 so they agree with mempalace/version.py and pyproject.toml. This unblocks /plugin update for users who have been stuck on 3.0.14 through the v3.1.0, v3.2.0, and v3.3.0 tags.
  • Fixes the stale owner.url in marketplace.json (github.com/milla-jovovichgithub.com/MemPalace). owner.name / author.name are preserved as creator attribution.
  • Adds .github/workflows/version-guard.yml so this drift cannot happen again silently:
    • On PRs touching any version file: fails if the five version sources (version.py, pyproject.toml, both .claude-plugin/*.json, .codex-plugin/plugin.json) don't all agree with version.py.
    • On stable tag push (vX.Y.Z): fails if the tag doesn't match version.py.
    • On semver pre-release tag push (vX.Y.Z-rc1, -beta.2, etc.): skips the strict match. Pre-releases don't flow to end users via /plugin update — they're distributed through PyPI / direct GitHub install — so the manifest isn't required to track them.

Test plan

  • All five version sources now report 3.3.0 locally (jq / grep sanity check).
  • JSON files parse cleanly (jq .).
  • Guard classifier dry-run: stable tag matches → pass; mismatched stable tag → fail; vX.Y.Z-* pre-release → skip.
  • After merge, CI Version Guard job passes on this PR.
  • Next release: cut a stable tag v3.3.1 (or chosen target) and confirm the guard's tag-push job runs green.
  • End-user /plugin update mempalace surfaces 3.3.0 after merge to developmain.

Notes for reviewer

  • Scoped intentionally. Other stale milla-jovovich/* URLs in pyproject.toml, README.md, .github/CODEOWNERS were not touched — they're a separate cleanup (pyproject.toml still points to old repo owner in project URLs #787 addressed a prior wave but missed those).
  • If you'd rather bump to a different target (e.g. 3.3.1 to mark a fresh release cut rather than retroactively reusing 3.3.0), happy to adjust — just let me know before merge.

igorls added 3 commits April 14, 2026 11:32
Aligns marketplace.json and both plugin.json files with version.py /
pyproject.toml (already at 3.3.0) so `/plugin update` reflects the
v3.1.0/v3.2.0/v3.3.0 tags that had been landing without manifest bumps.

Also updates marketplace.json `owner.url` from the stale
github.com/milla-jovovich path to the current github.com/MemPalace org.

Refs #874
Fails a tag push if `vX.Y.Z` does not match `mempalace/version.py` (the
single source of truth per CLAUDE.md), and fails PRs that touch any
version file without keeping all five in sync (pyproject.toml,
version.py, .claude-plugin/marketplace.json, .claude-plugin/plugin.json,
.codex-plugin/plugin.json).

Prevents the class of bug described in #874, where v3.1.0/v3.2.0/v3.3.0
tags all landed pointing at commits that still carried manifest version
3.0.14, blocking `/plugin update` for end users.

Refs #874
Tags matching `vX.Y.Z-*` (e.g. v3.4.0-rc1, v1.0.0-beta.2) are treated as
internal/staging builds. They skip the tag-vs-manifest check because
pre-releases do not flow to end users via `/plugin update`, which reads
the manifest on the default branch.

Stable tags `vX.Y.Z` still require all five version sources to match
exactly, so the protection against the #874 drift remains intact. The
cross-file consistency check on PRs is unchanged — all manifests must
still agree with mempalace/version.py whenever any version file moves.
@igorls igorls requested a review from bensig as a code owner April 14, 2026 14:36
@igorls igorls merged commit ff6a907 into develop Apr 14, 2026
7 checks passed
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.

release process: git tags created without bumping marketplace.json#version — /plugin update sees no new version

1 participant