Skip to content

Latest commit

 

History

History
49 lines (36 loc) · 3.21 KB

RELEASE.md

File metadata and controls

49 lines (36 loc) · 3.21 KB

Release

How ships, and what to follow when you open a change. Weekly rolling releases, with a fast lane for urgent fixes.

🧭 Principle

  • main is production. The marketplace tracks it, so users only ever get released, versioned code.
  • next is integration. The week's work batches here, and ships in one weekly release.
  • A release happens only when there is work, and is cut automatically by release-please.
  • A hotfix/* skips next, it branches from main and ships its own release out of cycle, for urgent production fixes.

🔀 Where your change goes

  • Almost everything flows through next and ships in the weekly release.
  • Only an urgent production fix takes the fast lane straight to main.
  • The branch prefix decides the target; the canonical prefix → target table lives in aidd_docs/memory/vcs.md.
flowchart LR
    work["feat/* · fix/* · docs/* · …"] -->|PR| next
    next -->|weekly promotion PR| main
    main -->|release-please PR, auto-merged| rel["tag + version bump"]
    rel -->|back-merge, auto| next
    hotfix["hotfix/*"] -->|PR| main
Loading

🛟 The two rules that keep it safe

  • The Release PR is auto-merged. Otherwise main briefly holds merged but unversioned code, and a new user installing in that window picks it up.
  • The main → next back-merge is automatic. Otherwise the version manifest and the changelog on next drift from main.

🗓️ Weekly release, step by step

  1. Plan the release video with the release-video skill (.claude/skills/release-video) until node .claude/skills/release-video/assets/check-release-video.js passes. The promotion refuses otherwise; skip_video lets an urgent one through.
  2. Open the promotion next to main once the week's work is ready.
  3. release-please opens a Release PR on main: it is auto-merged.
  4. Tags and version bumps are created. The umbrella release is a draft: the bundle, the distributions and the rendered video are attached to it, then it is published. Announcements fire on that publication, with everything in place.
  5. The video is rendered by CI from the plan the promotion checked. A failed video, bundle or distribution holds the release, and it stays a draft. Publish it by hand with gh release edit <tag> --draft=false --latest once fixed.
  6. main is back-merged into next automatically.

🚑 Hotfix

  1. Branch hotfix/* from main, fix, PR back to main. .github/rulesets/main.json declares merge as the only method the PR may use, so write every commit on the branch as conventional on its own — none gets squashed away.
  2. Merge with an empty description — clear the box in the UI, or run gh pr merge <n> --merge --body "" — because this repository's merge commits default their body to the PR title, and release-please reads a non-empty body as a second, duplicate commit in the next release's notes.
  3. release-please cuts a dedicated patch release.
  4. main is back-merged into next automatically.