# Contract compatibility and rollback rules The blocking tuple is `(buildId, configSchemaVersion, apiContractVersion, assetManifestHash, releaseId)`. Versions are parsed numerically. 1. additive changes preserve current required fields 2. breaking changes require a major version bump 3. persisted cache is discarded unless an explicit tested migration exists 4. an incompatible config or API contract blocks product mount 5. rollback restores HTML, assets, runtime config, API compatibility, and release manifest as one coherent set The current `apiContractVersion` check proves release/config coherence, not provider conformance by itself. The target multi-protocol contract set binds REST/OpenAPI artifacts, GraphQL schema and persisted-operation manifests, protobuf source/descriptors/codegen profiles, Connect/gRPC-Web provider profiles, ProtoJSON/HttpRule/generated OpenAPI/gateway artifacts, runtime schema/mapper registries, and server-state policy digests as defined in [API contract, Schema, Mapper, and Server State](../architecture/api-contract-schema-mapper-and-server-state.md). Browser Protobuf and REST Gateway compatibility is further split in [Protobuf browser transport and REST Gateway](../architecture/protobuf-browser-transport-and-rest-gateway.md); binary/JSON/HTTP-route compatibility gates are not interchangeable.