Skip to content

[Devops] Branching Strategy - Phase 0 #506

@lowlydba

Description

@lowlydba

Goal

Migrate devmain as default branch, stand up vnext, configure protections. Zero workflow changes — pure infrastructure, no code risk. Blocks all subsequent phases.

Tasks

p0-migrate-dev-to-main

  1. Verify main is ancestor of dev (git merge-base --is-ancestor main dev). Reconcile if not.

  2. Fast-forward main to dev HEAD.

  3. Bulk-retarget all open PRs devmain:

    gh pr list --base dev --json number --jq '.[].number' | xargs -I {} gh pr edit {} --base main
    

    Verify zero PRs remain targeting dev.

  4. Change GitHub default branch from devmain.

  5. Update CI workflows + branch protection rules + any external refs pointing at dev or staging.

  6. Delete staging (stale ~2 months, throwaway).

  7. Delete dev (retired). Tags already live on main commits — no change needed.

  8. Contributor announcement (GitHub Discussion + README banner).

p0-vnext-branch

  • Create vnext long-lived branch from new main.
  • Mirror branch protections from main: no direct push, require PR, required CI status checks.
  • Grant overture-pull-requester GH App bypass on vnext protection rules (needed for p1-post-merge-rebase force-push).

p0-docs

  • Create docs/branching-strategy.md covering the two-branch model and contributor workflow.
  • Update CONTRIBUTING.md with a pointer to it.
  • This is the live doc — subsequent phases append to it.

Contributor-facing changes

  • dev is gone. Default branch is now main.
  • staging is gone.
  • New vnext branch exists for major changes.
  • Branch from main. Target main for normal work, vnext for major changes.
  • Open PRs were auto-retargeted from devmain. No action needed unless yours was missed.

Definition of done

  • main is the default branch, at parity with former dev HEAD
  • vnext exists, protected, overture-pull-requester has bypass
  • dev and staging deleted
  • All open PRs target main
  • docs/branching-strategy.md created, CONTRIBUTING.md updated
  • Contributor announcement posted

Metadata

Metadata

Labels

enhancementNew feature or request

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions