principle-release-engineeringlisted
Install: claude install-skill lugassawan/swe-workbench
<!-- preload-canary: SWB-PRELOAD-PRINCIPLE-RELEASE-ENGINEERING -->
# Release Engineering
A release is a promise: a specific artifact, at a specific version, reachable at a specific address, forever. Every discipline here protects that promise.
## Semver discipline
`MAJOR.MINOR.PATCH` — each level communicates an intent to callers.
| Bump | Meaning | Example |
|------|---------|---------|
| PATCH | Backward-compatible bug fix only | `1.2.3 → 1.2.4` |
| MINOR | New capability, backward-compatible | `1.2.3 → 1.3.0` |
| MAJOR | Breaking change — callers must adapt | `1.2.3 → 2.0.0` |
Never skip levels to signal "importance" (`1.0.0 → 3.0.0`). Pre-1.0 (`0.x.y`) still communicates intent: MINOR adds capability, PATCH fixes bugs, and a MAJOR bump to `1.0.0` signals API stability. If you're unsure between MINOR and MAJOR, default to MAJOR — over-caution is safe, under-caution breaks callers.
## Expand-contract for breaking changes
Never atomically break a public contract. Ship in three independent deployments:
1. **Expand** — add the new interface alongside the old one. Both work.
2. **Migrate** — update all callers to the new interface. Old interface idle.
3. **Contract** — remove the old interface once callers are migrated.
Each phase ships and bakes before the next begins. A rollback at any phase is safe because the old path still exists. For *schema* expand-contract mechanics — column backfills, dual-write windows, index swaps — defer to `swe-workbench:principle-data-mo