78 lines
4.6 KiB
JSON
78 lines
4.6 KiB
JSON
{
|
|
"schemaVersion": 1,
|
|
"changes": [
|
|
{
|
|
"changeId": "FE-REG-QUERY:$contract:allowedValues:contract-field-changed",
|
|
"versionBump": "Cross-context invalidation wire protocol starts at version 1.",
|
|
"migration": "Every installed query row declares invalidate-only; older tabs remain local-only.",
|
|
"compatibilityWindow": "Mixed releases are isolated by release cacheEpoch and never exchange query keys or values.",
|
|
"rollback": "Remove the coordinator composition and the two query registry fields.",
|
|
"owner": "frontend-platform"
|
|
},
|
|
{
|
|
"changeId": "FE-REG-QUERY:$contract:breakingFields:contract-field-changed",
|
|
"versionBump": "Cross-context invalidation wire protocol starts at version 1.",
|
|
"migration": "Every installed query row declares its opaque topic and transport policy.",
|
|
"compatibilityWindow": "A release cacheEpoch rejects messages from a different deployed contract.",
|
|
"rollback": "Remove the coordinator composition and restore the prior query registry contract.",
|
|
"owner": "frontend-platform"
|
|
},
|
|
{
|
|
"changeId": "FE-REG-QUERY:$contract:fieldTypes:contract-field-changed",
|
|
"versionBump": "Cross-context invalidation wire protocol starts at version 1.",
|
|
"migration": "The installed reference query row and all consumers were updated atomically.",
|
|
"compatibilityWindow": "Old clients do not consume the new fields; new clients validate them before boot.",
|
|
"rollback": "Restore the previous query registry field types and local-only invalidation.",
|
|
"owner": "frontend-platform"
|
|
},
|
|
{
|
|
"changeId": "FE-REG-QUERY:$contract:requiredFields:contract-field-changed",
|
|
"versionBump": "Cross-context invalidation wire protocol starts at version 1.",
|
|
"migration": "Missing topics now fail registry validation instead of silently degrading at runtime.",
|
|
"compatibilityWindow": "Only a fully built release consumes its own installed registry snapshot.",
|
|
"rollback": "Remove the newly required fields and cross-context composition together.",
|
|
"owner": "frontend-platform"
|
|
},
|
|
{
|
|
"changeId": "FE-REG-QUERY:$contract:uniqueFields:contract-field-changed",
|
|
"versionBump": "Cross-context invalidation wire protocol starts at version 1.",
|
|
"migration": "Existing query namespaces received unique registry-issued opaque topics.",
|
|
"compatibilityWindow": "Topics are scoped by release cacheEpoch, so mixed releases cannot collide.",
|
|
"rollback": "Drop invalidationTopic uniqueness after removing the transport consumer.",
|
|
"owner": "frontend-platform"
|
|
},
|
|
{
|
|
"changeId": "FE-REG-STORAGE:$contract:allowedValues:contract-field-changed",
|
|
"versionBump": "Web Storage value codec contracts start at version 1.",
|
|
"migration": "Existing keys retain their physical schema version; values outside the selected codec are discarded.",
|
|
"compatibilityWindow": "Valid existing color-scheme and opaque-string records remain readable.",
|
|
"rollback": "Restore the previous registry contract; no physical key deletion is required.",
|
|
"owner": "frontend-platform"
|
|
},
|
|
{
|
|
"changeId": "FE-REG-STORAGE:$contract:breakingFields:contract-field-changed",
|
|
"versionBump": "Web Storage value codec contracts start at version 1.",
|
|
"migration": "Each existing row received an explicit codec; executable migration was never consumed and is now forbidden.",
|
|
"compatibilityWindow": "Schema-versioned physical keys and the envelope shape remain unchanged.",
|
|
"rollback": "Remove valueCodec enforcement and restore the prior metadata declaration.",
|
|
"owner": "frontend-platform"
|
|
},
|
|
{
|
|
"changeId": "FE-REG-STORAGE:$contract:fieldTypes:contract-field-changed",
|
|
"versionBump": "Web Storage value codec contracts start at version 1.",
|
|
"migration": "The dead function migration union was narrowed to the only implemented discard policy.",
|
|
"compatibilityWindow": "All installed definitions already used discard before this contract change.",
|
|
"rollback": "Restore the former type metadata without rewriting persisted records.",
|
|
"owner": "frontend-platform"
|
|
},
|
|
{
|
|
"changeId": "FE-REG-STORAGE:$contract:requiredFields:contract-field-changed",
|
|
"versionBump": "Web Storage value codec contracts start at version 1.",
|
|
"migration": "All installed storage rows now declare their closed value codec.",
|
|
"compatibilityWindow": "Existing valid envelopes continue to decode; invalid values fail closed.",
|
|
"rollback": "Remove the required codec field and runtime codec dispatch together.",
|
|
"owner": "frontend-platform"
|
|
}
|
|
]
|
|
}
|