Skip to main content

Backward Compatibility

AXAG takes backward compatibility seriously. Agents consuming AXAG manifests must be able to rely on stable contracts. This page defines what constitutes a breaking change and how backward compatibility is maintained.

What Is a Breaking Change

A change is breaking if it causes existing, conformant consumers to fail:

ChangeBreaking?Reason
Add optional field to manifestNoConsumers ignore unknown fields
Add new enum valueNoConsumers should handle unknown values gracefully
Remove a required fieldYesConsumers depend on it
Rename a fieldYesConsumers reference old name
Change field typeYesConsumers parse with old type
Remove an enum valueYesConsumers may send removed value
Change axag-intent formatYesAll intent parsing breaks
Add new required fieldYesExisting manifests become invalid
Change risk level semanticsYesSafety behavior changes

Non-Breaking Changes

These changes are always safe:

  • Adding new optional axag-* attributes
  • Adding new optional fields to manifest actions
  • Adding new lint rules as warnings (not errors)
  • Adding new conformance level criteria
  • Adding new entity types
  • Adding new use case documentation

Compatibility Matrix

Consumer VersionManifest 0.1.xManifest 0.2.xManifest 1.0.x
Agent v0.1.x✅ Full⚠️ Partial❌ Incompatible
Agent v0.2.x✅ Full✅ Full❌ Incompatible
Agent v1.0.x✅ Full✅ Full✅ Full

Robustness Principle

Agents consuming AXAG manifests SHOULD follow Postel's Law:

Be conservative in what you send, be liberal in what you accept.

  • Producers (annotation authors): Follow the spec strictly
  • Consumers (agents): Handle unknown fields gracefully, don't fail on extra data