Versioning
Semver, immutable published versions, and predictable tenant impact.
Rules
| rule | detail |
| Semver required | MAJOR.MINOR.PATCH — certification rejects anything else |
| Published versions are immutable | resubmitting an UNPUBLISHED version replaces it (new certification run); shipping changes after publication means a new version number |
| The listing tracks the latest published version | the app card, manifest and permission list shown at install all come from it |
| Installs pin the version they installed | app_installs.version records exactly what a tenant got; upgrades are an explicit reinstall |
What to bump
| change | bump |
| new permissions, removed/renamed objects or fields, changed conflict policy | MAJOR — tenants re-review scopes |
| new objects/fields/workflows/webhooks, broader sync coverage | MINOR |
| copy, descriptions, prompt tuning, bugfixes | PATCH |