Skip to content

feat(ci): scheduled channel-health checks (user-perspective drift detection)#152

Merged
George-iam merged 2 commits into
mainfrom
feat/auto-marketplace-pr-20260611
Jun 11, 2026
Merged

feat(ci): scheduled channel-health checks (user-perspective drift detection)#152
George-iam merged 2 commits into
mainfrom
feat/auto-marketplace-pr-20260611

Conversation

@George-iam

@George-iam George-iam commented Jun 11, 2026

Copy link
Copy Markdown
Contributor

⚠️ Reworked mid-flight — read this first

The first commit on this branch added a CI job auto-opening a SHA-bump PR to anthropics/claude-plugins-community. That approach is dead on arrival: the repo is a read-only mirror — a bot auto-closed our manual PR #63 within minutes, pointing to clau.de/plugin-directory-submission. Per the official docs, Anthropic's own pipeline bumps approved plugins' pins automatically when we push to the plugin repo, and the public catalog syncs nightly. The second commit reverts the job.

So the honest answer to "как сделать, чтобы CI при теге релизил везде, включая plugin-канал":

tag v* → build → npm → sync-plugin-repo            ← OUR CI (works)
       → Anthropic pipeline auto-bumps the pin      ← THEIR CI (per docs)
       → nightly catalog sync                       ← THEIR mirror

Our pipeline already ends where it should. The open question is why the pin sat at April's v0.2.9 through three pushes — either their auto-bump postdates April, or their pipeline silently rejects our updates (e.g. a scanner flagging the bundled SDK). Today's v0.6.1 push is the live test: if the pin hasn't moved to 0fcab28 within 24–48h, we escalate through the submission channel.

What this PR actually ships: channel-health.yml

The June postmortem's real gap wasn't a missing release step — it was that three channels drifted for weeks while every pipeline was green, because nothing checked what a fresh user receives. New scheduled workflow (Mon+Thu + manual dispatch) verifies from the user's side:

# Check Against
1 npm latest newest v* release tag
2 Open VSX latest newest extension-v* release tag
3 plugin-repo plugin.json newest v* release tag
4 marketplace SHA pin plugin-repo HEAD, with 48h grace for Anthropic's auto-bump + nightly sync

On any drift: opens (or comments on) a tracking issue Channel health: distribution drift detected and fails the run. Would have caught the v0.2.9 freeze in 2 days instead of 2 months — and will catch the current pin within days if Anthropic's auto-bump doesn't fire for v0.6.1.

Also updates scripts/release.sh (header + postflight) to describe the real pin process instead of instructing a PR that gets auto-closed; pin lag <48h downgraded err→warn since it's expected behavior.

Verification

  • channel-health.yml parses; embedded script passes bash -n; same jq paths verified against live data today
  • release-binary.yml restored byte-identical to main
  • bash -n scripts/release.sh clean
  • After merge: gh workflow run channel-health.yml for a live fire (expected today: pin check inside 48h grace → green or pin-only finding)

🤖 Generated with Claude Code

George-iam and others added 2 commits June 11, 2026 12:55
Closes the last automatable mile of the Claude Code plugin channel.
`claude plugin install axme-code@claude-community` installs the SHA
pinned in anthropics/claude-plugins-community, not our plugin repo
HEAD — and through April-June 2026 that pin silently stayed at v0.2.9
because bumping it was a manual PR no process owned.

New open-marketplace-pr job (needs: sync-plugin-repo):
- reads the fresh AxmeAI/axme-code-plugin HEAD and the currently
  pinned SHA from upstream marketplace.json; no-ops when equal
- branches off UPSTREAM main in the AxmeAI fork (one-line diff
  regardless of fork staleness), replaces the SHA with a
  count==1 + JSON-parse assertion, force-pushes the standing
  `bump-axme-code` branch
- updates any open bump PR in place, else creates one — consecutive
  releases never stack duplicate PRs

The Anthropic maintainers' review/merge stays manual by design (their
supply-chain gate). release.sh postflight still verifies the pin, so a
stalled upstream PR is loudly visible at the next release.

Token note: uses MARKETPLACE_PR_TOKEN if set, else PLUGIN_REPO_TOKEN.
Creating PRs on a foreign public repo requires a classic PAT scope
(public_repo); if PLUGIN_REPO_TOKEN is fine-grained to the plugin repo
only, add MARKETPLACE_PR_TOKEN.

YAML validated; embedded script passes bash -n.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The previous commit on this branch added a CI job that auto-opens a
SHA-bump PR to anthropics/claude-plugins-community. Reality check
(2026-06-11): that repo is a READ-ONLY MIRROR — a bot auto-closed our
manual PR #63 within minutes, and the official docs state Anthropic's
own pipeline bumps approved plugins' pins automatically on plugin-repo
pushes, with a nightly catalog sync. An auto-PR job would just generate
auto-closed noise. Reverted.

What CAN be owned on our side is detection — the June postmortem's real
gap was that three channels drifted for weeks with all-green pipelines.
New channel-health.yml (Mon+Thu cron + manual dispatch) verifies, from
the user's perspective:
  1. npm latest            == newest v* release
  2. Open VSX latest       == newest extension-v* release
  3. plugin-repo manifest  == newest v* release
  4. marketplace SHA pin   == plugin-repo HEAD (48h grace for
     Anthropic's auto-bump + nightly sync)
On drift: opens/updates a tracking issue and fails the run.

release.sh postflight + header updated to describe the real pin
process (auto-bump + nightly sync + 48h grace + escalation via
clau.de/plugin-directory-submission) instead of instructing a PR that
gets auto-closed. Downgraded that postflight finding from err to warn
since lag <48h is expected behavior.

YAML validated; both shell payloads pass bash -n.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@George-iam George-iam changed the title feat(ci): auto-open marketplace bump PR after plugin sync feat(ci): scheduled channel-health checks (user-perspective drift detection) Jun 11, 2026
@George-iam George-iam merged commit fbe102c into main Jun 11, 2026
6 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.

1 participant