1.8 KiB
1.8 KiB
Registry Versioning Contracts
Version contracts only. Applies across Commercial Foundation registries.
Contract version:registry-versioning.v1
1. Purpose
All commercial registries support explicit versions so catalogs can evolve without breaking historical subscriptions, installs, or policy decisions.
2. Versioned kinds
| Registry object | Version field | Notes |
|---|---|---|
| Products | version_code on PlatformProductVersion |
|
| Bundles | version_code on BusinessBundleVersion |
|
| Capabilities | optional version_code on CapabilityDefinition |
Additive |
| Extensions | optional version_code |
Additive |
| Assets | version_code + AssetVersion records |
|
| Automation Packs | version_code |
|
| Policies | version_code on PolicyDefinition |
|
| Metadata | version_code on MetadataBag |
3. RegistryVersionRecord (logical)
| Field | Type | Meaning |
|---|---|---|
registry_object_id |
uuid | Version record id |
parent_id |
uuid | Versioned object id |
parent_kind |
string | product/bundle/asset/… |
version_code |
string | Opaque commercial version string |
changelog |
string? | |
status |
enum | draft | published | deprecated | retired |
effective_from / effective_to |
datetime? | |
supersedes_version_code |
string? | |
content_snapshot_ref |
string? | Opaque |
ext |
object |
4. Rules
- Publishing a new version MUST NOT rewrite historical binding snapshots (future engines pin versions at subscribe/install time).
version_codeis an open string (e.g.2026.07.1, semver-like) — not a forced semver parser in contracts.- Deprecation of a version is independent of parent object lifecycle.
- Unlimited versions per object — architecture unchanged.