Versioning policystable
§8 Quick reference
| I want to… | Level | Moves ver_version? | Allowed? |
|---|---|---|---|
| Fix a typo in published prose | patch (annex) | no | yes — as an annex item, never by editing the published file |
| Make a schema enforce what the prose already required | patch | no | yes |
| Correct a self-inconsistent digest in the golden example | patch | no | yes |
| Resolve an ambiguity where two readings gave different Canonical Buffers | patch (annex) | no | yes — but say which reading is selected and that the others' pixel_hash values are withdrawn (§2.1) |
| Relax a constraint to resolve a contradiction in the published text | patch (annex) | no | yes — the named-exception carve-out in §2.1 |
| Add an optional field | minor | yes | yes |
| Add an enum member | minor | yes | yes |
| Relax a pattern that rejected legal values | minor | yes | yes |
| Make an optional field required for records declaring the new version | minor | yes | yes — the record's declared ver_version is the gate; in a version-pinned schema a flat required entry is that gate (§2.2) |
| Encode in the schema a requirement the previous release stated only in prose | minor | yes | yes — the declared ver_version is the gate. The release MUST publish the enumerated migration and its failure pointers (§2.2) |
| Rename a field and change the preimage of the value it carries | minor | yes | yes for records declaring the new version, and only with the old spelling left untouched in the old release (§2.2; 1.1's salted_sha256 → commitment_sha256) |
| Publish a release with no second implementation, no decoder corpus, or no governance process | — | — | no — §3.4's publication bar, from 1.1 onward |
| Make an optional field required for all records | major | yes | no, not before 2.0 |
| Change anything in CPNP-1 | major | yes (and cpnp_version) | no, not before 2.0 |
| Remove a field | major | yes | no, not before 2.0 |
| Narrow a value space producers populate | major | yes | no, not before 2.0 |
| Close an object left open by oversight, no producer relying on it | minor | yes | yes — by named ratification vote only, under §2.3's evident-intent carve-out |
Edit a file under standards/ver/1.0.0/ | — | — | never |
