Summary
Track the repo migration from the current staged -> main publish model to a model where:
main is the long-term human-authored default/source branch
marketplace is the long-term published/materialized branch that tools resolve
This should happen in two phases. In the initial phase, the repo should continue operating exactly as it does today for contributors, while also publishing to marketplace. In the later phase, contributor flow moves from staged to main and the legacy publish-only role of main is removed.
Problem
Today contributors are expected to branch from staged and open PRs against staged, while automation materializes plugin content and force-pushes that output to main.
Because GitHub presents main as the default branch, contributors often branch from or target main by mistake. Since main contains materialized plugin content, those PRs become noisy and difficult to review.
The goal is to preserve compatibility for existing clients in the short term, while moving toward a cleaner long-term model where contributors work against main and tools consume published artifacts from marketplace.
Current State
publish.yml publishes on push to staged, materializes plugin files, and force-pushes to main
- PR-target enforcement rejects PRs against
main and directs contributors to staged
- Most PR validation workflows are scoped to
staged
- Generated install URLs currently assume published artifacts live on
main
- GitHub Pages deploys from workflow-built artifacts; it does not commit generated files back into the repo
Proposed Rollout
Phase 1: Add marketplace without changing contributor flow
Keep the repo operating "as normal":
- contributors still branch from and target
staged
main remains the legacy published branch for older clients
- automation also publishes the materialized output to
marketplace
Work in this phase:
Phase 2: Move contributor flow from staged to main
After the client transition window:
Repo Areas Likely To Change
.github/workflows/publish.yml
.github/workflows/check-pr-target.yml
- PR validation workflows currently scoped to
staged
.github/workflows/build-website.yml
.github/workflows/deploy-website.yml
.github/pull_request_template.md
CONTRIBUTING.md
AGENTS.md
eng/materialize-plugins.mjs
eng/constants.mjs
eng/update-readme.mjs
- Generated or contributor-facing docs that encode the old branch contract
Notes / Risks
- Phase 1 should minimize contributor disruption by keeping the existing repo workflow intact
- Not all links need to move; top-level source files and docs can continue to resolve from the source/default branch
- The critical link changes are marketplace metadata and any path that expects materialized plugin contents
- If tool-facing published refs keep pointing at
main, clients may continue consuming the legacy branch instead of marketplace
- GitHub Pages is mainly a deployment-trigger/orchestration question, not a generated-files-written-back-to-git problem
- The CLI, VS Code, and Visual Studio changes are cross-repo dependencies and should be tracked here as rollout prerequisites even if implementation happens elsewhere
Acceptance Criteria
Summary
Track the repo migration from the current
staged -> mainpublish model to a model where:mainis the long-term human-authored default/source branchmarketplaceis the long-term published/materialized branch that tools resolveThis should happen in two phases. In the initial phase, the repo should continue operating exactly as it does today for contributors, while also publishing to
marketplace. In the later phase, contributor flow moves fromstagedtomainand the legacy publish-only role ofmainis removed.Problem
Today contributors are expected to branch from
stagedand open PRs againststaged, while automation materializes plugin content and force-pushes that output tomain.Because GitHub presents
mainas the default branch, contributors often branch from or targetmainby mistake. Sincemaincontains materialized plugin content, those PRs become noisy and difficult to review.The goal is to preserve compatibility for existing clients in the short term, while moving toward a cleaner long-term model where contributors work against
mainand tools consume published artifacts frommarketplace.Current State
publish.ymlpublishes on push tostaged, materializes plugin files, and force-pushes tomainmainand directs contributors tostagedstagedmainProposed Rollout
Phase 1: Add
marketplacewithout changing contributor flowKeep the repo operating "as normal":
stagedmainremains the legacy published branch for older clientsmarketplaceWork in this phase:
marketplaceas a second published/materialized branchstaged -> mainpublish behavior intactmarketplacemarketplacemainpublication in Phase 1 or switches earliermainandmarketplaceduring the compatibility windowmarketplacemarketplacemarketplacePhase 2: Move contributor flow from
stagedtomainAfter the client transition window:
mainthe human-authored source/default branchstagedtomainmainmainmainsource-branch flowstaged -> mainpublish pathmarketplaceas the only published/materialized branch tools should resolveRepo Areas Likely To Change
.github/workflows/publish.yml.github/workflows/check-pr-target.ymlstaged.github/workflows/build-website.yml.github/workflows/deploy-website.yml.github/pull_request_template.mdCONTRIBUTING.mdAGENTS.mdeng/materialize-plugins.mjseng/constants.mjseng/update-readme.mjsNotes / Risks
main, clients may continue consuming the legacy branch instead ofmarketplaceAcceptance Criteria
mainandmarketplacewithout changing contributor flowmarketplacemarketplacemainmainfor source content andmarketplacefor published/materialized content