@@ -164,6 +164,30 @@ Branch names should be lowercase, use hyphens as separators, and be descriptive.
164164
165165---
166166
167+ ## Versioning, Releases, and Milestones
168+
169+ Releases are fully automated with [ release-please] ( https://github.com/googleapis/release-please ) :
170+ merging to ` main ` accumulates conventional commits into a release PR, and
171+ merging that PR cuts the tag, GitHub Release, and ` CHANGELOG.md ` entry.
172+ ` feat: ` bumps the minor version, ` fix: ` the patch, and a ` ! ` /` BREAKING CHANGE `
173+ commit the major. Version numbers are therefore ** outputs of the commit
174+ history, not plans** .
175+
176+ Two conventions follow from that:
177+
178+ - ** Milestones are themes, not version numbers.** Issues are grouped into
179+ thematic milestones (e.g. * Developer Experience & Distribution* ,
180+ * Conversation Intelligence* , * Quality & Hardening* ) with due dates. Don't
181+ create milestones named after unreleased minor versions — release-please
182+ will assign whatever number the commits dictate, and the milestone name
183+ will drift. The one exception is a deliberately gated ** major** (e.g.
184+ * v2.0 - Multi-Channel & Enterprise* ): breaking changes are a real product
185+ boundary because the CDN ` @1 ` channel never auto-serves a new major.
186+ - ** Issues associate with releases through commits, not milestones.** Put
187+ ` Closes #N ` in the PR description and reference the issue in commit bodies
188+ where useful; the changelog and GitHub Release then record which version
189+ actually shipped the work.
190+
167191## Project Structure
168192
169193```
0 commit comments