chore: use the shared release workflows - #1215
Conversation
Replaces local copies of release-prepare.yml and changeset-check.yml with thin callers into Nano-Collective/.github, and moves changeset validation onto the shared pr-checks via the new validate-changesets input. The local changeset-check ran pull_request_target and then checked out `github.event.pull_request.head.sha` — contributor-controlled code on disk in a privileged job — with a `# nosemgrep` comment suppressing the scanner warning about exactly that. Not exploitable, since nothing executed the tree, but the suppression meant it would not be flagged again either. The shared version uses pulls.listFiles and puts nothing on disk. scripts/validate-changesets.js and the test:changesets script are removed. The validator now lives in .github, generalised to read workspace globs from pnpm-workspace.yaml rather than hardcoding plugins/, so there is one implementation rather than one per repo. test:changesets was not part of test:all, so this removes no local workflow anyone was using. The check renames from `Changeset Validation` to `pr-checks / Changeset Validation`. Neither name is in Ruleset A's required list, so no ruleset change is needed. changeset:version is unchanged and still runs normalize-changelog.js — the shared workflow takes the script name as an input for exactly this reason. Verified: pnpm install --frozen-lockfile clean, and the shared validator passes against this tree (87 changesets, 2 workspace packages). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PZY52ePXLjwG9TaQgq2cHT
No changeset foundThis PR does not add a changeset, so it will not appear in the changelog or trigger a release. If the change is user-facing, add one: pnpm changesetPick a bump (patch / minor / major) and write the changelog entry in our usual voice ("Added X... Thanks to @you. Closes #123."), then commit the generated If this PR is docs-only or a chore that needs no release note, you can ignore this - or run |
nc-review: nothing to raiseThe PR replaces three local workflows (changeset-check, release-prepare, and the inline changeset-validation job in pr-checks) with thin callers into the shared Nano-Collective/.github reusable workflows, and deletes the now-redundant scripts/validate-changesets.js. The most consequential change is security-positive: the old 🔴 blocking · 🟠 a reviewer would ask for a change · ⚪ optional Automated code review — correctness, security, design, tests, plus duplicates and scope. A human still decides; this is not a substitute for review and is not exhaustive. The required status checks separately cover lint, formatting, types, unused dependencies, the test suite and the build. This bot never merges. Maintainers can rerun with |
Completes step 10. Local copies of
release-prepare.ymlandchangeset-check.ymlare replaced with thin callers intoNano-Collective/.github, and changeset validation moves onto the sharedpr-checks.The security bit
The local
changeset-check.ymlranpull_request_targetand then:Contributor-controlled code on disk in a privileged job — and
# nosemgrepsuppressing the scanner warning about precisely that. Not exploitable, because nothing executed the checked-out tree, but the suppression meant it would never be flagged again either.The checkout was never needed. The shared version uses
pulls.listFiles, so there is nothing on disk at all and no suppression to carry.One validator, not seven
scripts/validate-changesets.jsand thetest:changesetsscript are removed. The validator now lives in.github, generalised to read workspace globs frompnpm-workspace.yamlinstead of hardcodingplugins/.test:changesetswas not part oftest:all, so this removes nothing anyone was running locally.Check name change
Changeset Validation→pr-checks / Changeset Validation. Neither name is in Ruleset A's required list, so no ruleset change is needed and nothing becomes unmergeable.Unchanged
changeset:versionstill runschangeset version && node scripts/normalize-changelog.js— the shared workflow takes the script name as an input for exactly this reasonrelease-preparenever publishes;release.ymlstill owns itvscode-extensionandschema-driftjobs stay put — repo-specific work belongs in the repoVerified
pnpm install --frozen-lockfileclean; shared validator passes against this tree (87 changesets, 2 workspace packages).