|
1 | 1 | # Engine Maturity Versioning Strategy |
2 | 2 |
|
3 | | -## Contract Metadata |
4 | | -Each promoted contract should declare: |
| 3 | +## Objective |
| 4 | +Provide one reusable version-policy seam for mature debug/render contracts while preserving stable behavior for the current production contract version. |
| 5 | + |
| 6 | +## Required Metadata |
| 7 | +Each promoted contract should define: |
5 | 8 | - `contractId` |
6 | | -- `contractVersion` |
7 | | -- `compatibility` (`backwardCompatible`, `notes`) |
8 | | -- `status` (`active|deprecated`) |
9 | | -- `deprecatedSince` (optional) |
10 | | -- `replacementContractId` (optional) |
| 9 | +- `currentVersion` |
| 10 | +- `supportedVersions` |
| 11 | +- `deprecatedVersions` |
| 12 | + |
| 13 | +## Runtime Rules |
| 14 | +1. Normalize incoming version strings to canonical semver (`MAJOR.MINOR.PATCH`). |
| 15 | +2. Accept only versions listed in `supportedVersions`. |
| 16 | +3. Treat unsupported versions as hard validation failures. |
| 17 | +4. Allow deprecation signaling without silent auto-upgrade. |
| 18 | + |
| 19 | +## SemVer Guidance |
| 20 | +- MAJOR: breaking contract changes |
| 21 | +- MINOR: additive backward-compatible changes |
| 22 | +- PATCH: non-breaking fixes/clarifications |
| 23 | + |
| 24 | +## Compatibility Guidance |
| 25 | +- Alias-style inputs (for example `v1.0`) may be normalized to a supported canonical version. |
| 26 | +- Unsupported major upgrades (for example `2.x`) must be rejected explicitly. |
11 | 27 |
|
12 | | -## SemVer Rules |
13 | | -- MAJOR: breaking |
14 | | -- MINOR: additive/backward-compatible |
15 | | -- PATCH: non-breaking fix/clarification |
| 28 | +## Current Adopted Policies |
| 29 | +- Render contract (`toolbox.render.contract`): current `1.0.0`, supported `1.0.0` aliases normalized from `1`, `1.0`, `v1.0`. |
| 30 | +- Dev diagnostics contract (`toolbox.dev.diagnostics`): current `1.0.0`, same compatibility normalization policy. |
16 | 31 |
|
17 | | -## Deprecation |
18 | | -- mark deprecated with replacement guidance |
19 | | -- keep transition window |
20 | | -- remove only on MAJOR boundary |
| 32 | +## Deprecation Rules |
| 33 | +- Mark deprecations in policy metadata before removal. |
| 34 | +- Keep replacement guidance in docs before advancing MAJOR. |
| 35 | +- Remove deprecated versions only after explicit migration window closure. |
0 commit comments