Breaking Change Policy
How shape changes are communicated and how consumers are protected.
What counts as breaking
| Change | Breaking? | Process |
|---|---|---|
| Shape removed | Yes | Deprecate 2 minor versions, remove in major |
| blockId renamed | Yes | Alias old ID for 2 minor versions |
| Layer reassignment | Yes | Same as rename process |
| Style change (colors, font) | No | Handled by upgrade command |
| New shape added | No | Additive, no impact |
| New property added to shape | No | Additive, no impact |
| CLI command removed | Yes | Deprecation warning for 2 minor versions |
Deprecation lifecycle
v0.3.0 Shape marked deprecated: true
CLI check/upgrade show warnings
replacedBy field points to new shape
v0.4.0 Shape still works, warnings continue
v0.5.0 Shape still works (last minor before removal)
Upgrade command auto-migrates to replacement
v1.0.0 Shape removed
Major version = breaking change signal
YAML deprecation fields
blockId: old-shape-name
deprecated: true
deprecatedSince: "0.3.0"
replacedBy: new-shape-name
Consumer protection
- No surprises. Breaking changes only in major versions.
- Migration path. Upgrade command handles transitions automatically.
- Clear communication. Release notes highlight breaking changes.
- Time to adapt. 2 minor versions of deprecation before removal.