The technical upgrade process creates new versions by re-extracting content from the latest snapshots when there are changes not in service terms content, but in the system that extracts them (declarations, filters, engine, or dependencies).
Technical upgrades solve the critical problem of distinguishing between actual content changes and extraction improvements.
Without technical upgrades, improving a declaration would trigger false notifications. For example, if terms have sections A, B, and C but the declaration only extracted A and B, adding section C would make the next version appear to include new content, triggering a notification even though the service’s terms never changed.
With technical upgrades, the system re-extracts from the current snapshot using the improved declaration and creates a new version, that includes section C, marked as a technical upgrade. Next regular tracking then compares against this upgraded version, so only actual content changes trigger notifications.
For each tracked terms:
Example:
// Before: missing section C
{
"Privacy Policy": {
"fetch": "https://example.com/privacy",
"select": ".section-a, .section-b"
}
}
// After: includes all relevant sections
{
"Privacy Policy": {
"fetch": "https://example.com/privacy",
"select": ".section-a, .section-b, .section-c"
}
}
What happens:
Example:
// Before: 2 source documents
{
"Community Guidelines": {
"combine": [
{ "id": "main", "fetch": "https://example.com/community" },
{ "id": "hate-speech", "fetch": "https://example.com/community/hate-speech" }
]
}
}
// After: 3 source documents
{
"Community Guidelines": {
"combine": [
{ "id": "main", "fetch": "https://example.com/community" },
{ "id": "hate-speech", "fetch": "https://example.com/community/hate-speech" },
{ "id": "violence", "fetch": "https://example.com/community/violence" } // NEW
]
}
}
What happens:
What happens:
Nothing, technical upgrades do not fetch from new locations. Location changes represent a genuine change in how the service publishes their terms and should be tracked as a regular content change.
When you upgrade the engine or dependencies, extraction logic may change even if declarations remain the same.
Examples:
entities are converted to regular spaces instead of appearing literally in versionsWhat happens:
Versions created during technical upgrades are marked with:
isTechnicalUpgrade: true in version metadataApply technical or declaration upgrade on <service_id> <terms_type>Technical upgrades run automatically with npx ota track.
To run them separately, see the apply-technical-upgrades command.