.claude/rules/branch-source-matrix.md documents a "two long-lived release branches: main (pre-release, channel next) and production (stable)" model, where every push to main triggers a pre-release publish. That model was accurate when the file was written, but the release branch strategy was restructured since then and the file was never updated to match.
Why
- The actual current
.releaserc.json on the default branch declares branches: ["production", { "name": "beta", "channel": "beta", "prerelease": "beta" }] — there is no main entry at all.
.github/workflows/vsx-semantic-release.yml (and the npm sibling workflow) trigger on push: branches: [beta, production] — main is deliberately absent from the trigger list.
- In the current model,
main is a plain integration branch that triggers no release automation. The two release-trigger branches are production (stable) and beta (pre-release channel), replacing the old main-as-pre-release / production-as-stable split described in the stale doc.
- Because this file lives under
.claude/rules/, it is loaded as always-on context for anyone (or any agent) working in this repo. A stale doc in that position doesn't just sit unused — it actively steers investigation and planning in the wrong direction, since it reads as an authoritative, current description of how releases work.
Scope
- Rewrite
branch-source-matrix.md's source → tag → publish matrix, environment separation, and "how releases happen" sections to describe the current production + beta model (with main explicitly noted as non-release-triggering), instead of the old main/production split.
- Check whether the rewritten content would fully duplicate another already-accurate doc in the repo that describes the same release flow — if so, prefer consolidating (e.g. deleting this file and pointing its former referrers at the accurate doc) over maintaining two descriptions of the same pipeline.
- Grep the repo for any other doc or rule file that still cross-references the old
main-triggers-prerelease model and correct or remove those references too, so the fix doesn't leave a second stale copy behind.
Test plan
.claude/rules/branch-source-matrix.mddocuments a "two long-lived release branches:main(pre-release, channelnext) andproduction(stable)" model, where every push tomaintriggers a pre-release publish. That model was accurate when the file was written, but the release branch strategy was restructured since then and the file was never updated to match.Why
.releaserc.jsonon the default branch declaresbranches: ["production", { "name": "beta", "channel": "beta", "prerelease": "beta" }]— there is nomainentry at all..github/workflows/vsx-semantic-release.yml(and the npm sibling workflow) trigger onpush: branches: [beta, production]—mainis deliberately absent from the trigger list.mainis a plain integration branch that triggers no release automation. The two release-trigger branches areproduction(stable) andbeta(pre-release channel), replacing the oldmain-as-pre-release /production-as-stable split described in the stale doc..claude/rules/, it is loaded as always-on context for anyone (or any agent) working in this repo. A stale doc in that position doesn't just sit unused — it actively steers investigation and planning in the wrong direction, since it reads as an authoritative, current description of how releases work.Scope
branch-source-matrix.md's source → tag → publish matrix, environment separation, and "how releases happen" sections to describe the currentproduction+betamodel (withmainexplicitly noted as non-release-triggering), instead of the oldmain/productionsplit.main-triggers-prerelease model and correct or remove those references too, so the fix doesn't leave a second stale copy behind.Test plan
.releaserc.json,.releaserc-npm.json, and bothvsx-semantic-release.yml/npm-semantic-release.ymltrigger blocks, and confirm every claim in the doc matches those files line for line.channel.*next,main.*pre-release) and confirm none remain unless intentionally describing history.