| title | Versioning |
|---|
AzureLocal/platform follows Semantic Versioning 2.0 with additional rules specific to a reusable-workflow platform.
azurelocal-platform-v<MAJOR>.<MINOR>.<PATCH>
release-please uses the simple release type with the tag prefix azurelocal-platform. The leading v inside the suffix is conventional.
| Bump | When |
|---|---|
| MAJOR | Any breaking change in reusable workflows, PS modules, MAPROOM schema, templates, or IIC canon |
| MINOR | New feature, new workflow, new module function, new template variant, new IIC canon file |
| PATCH | Bug fix, performance improvement, doc-only fix inside a published module |
Docs-only commits (docs:) do not bump. Chore/ci/refactor commits do not bump.
In addition to the full semver tag, a short major tag is maintained:
v1→ latestv1.x.yv2→ latestv2.x.y
This is how consumers pin. Example:
uses: AzureLocal/platform/.github/workflows/reusable-ps-module-ci.yml@v1The short tag is force-moved forward on each release within a major. It is not moved across majors — v1 stops updating once v2.0.0 ships.
While platform is in v0.x.x:
- Consumers pin
@main. - Breaking changes are allowed on a minor bump (v0.2.x → v0.3.0) with an ADR.
- The
@v1pin rule is not yet active. drift-check.ymlis configured to not flag@mainas drift.
When platform tags v1.0.0:
- Consumers pin
@v1(short major tag). drift-check.ymlflags@mainas drift.- Breaking changes require a major bump.
- Old major tags (
v1,v2, …) are retained indefinitely so late migrators can still build.
Declaring v1.0.0 implies:
- The interface of all 6 reusable workflows is stable.
AzureLocal.CommonandAzureLocal.Maproomfunction signatures are stable.- MAPROOM
fixture.schema.jsonis frozen (additive only within the major). - IIC canon files are frozen.
- Template token set is stable.
Target for v1.0.0 is after the deferred toolsets ship in v0.3.0 (see ADR-0004) and at least one full quarter of consumer use has surfaced the real breakage points.
Consumer repos version their own releases via release-please — independent of platform.
| Example | Interpretation |
|---|---|
AzureLocal.Maproom@0.2.0 + azurelocal-ranger@1.3.0 |
ranger is a consumer on v1.3.0 of its own release line, using platform v0.2.0 |
| Platform bumps to v0.3.0 with breaking MAPROOM changes | ranger stays on v0.2.0 platform (pinned to SHA or old tag) until it can upgrade |
- ADR 0001 — Create platform repo — initial stance
- ADR 0004 — Testing toolset classification — defers toolsets to v0.3.0
- Reusable workflows → Versioning — the consumer-facing perspective
- Release cycle — when releases happen
- Breaking changes — what counts as major