Skip to main content

Breaking Changes Policy

A breaking change is any normative change that causes previously conformant implementations to fail required conformance tests or interoperate incorrectly with peers on the same declared profile and version.

This policy MUST be satisfied before breaking changes enter Stable RFCs or MAJOR specification bundles.

Definition

BreakingNon-breaking (additive)
Removing a required fieldAdding optional field with default
Tightening validation (reject formerly valid messages)Loosening validation where security allows
Changing semantic meaning of existing codeAdding new error code
Removing API operationAdding new operation
Shortening deprecation notice below minimumClarifying ambiguous spec text with unchanged behavior

When impact is uncertain, treat as breaking until proven otherwise with test evidence.

Where breaking changes may appear

RFC statusBreaking change allowed?
Draft, ReviewMAY freely
CandidateSHOULD minimize; document migration
AcceptedMAY with WG consensus + notice
StableMUST NOT without MAJOR version or deprecation cycle
Deprecated / RetiredNo new breaking edits except security retire

Approval requirements

Breaking changes targeting Stable specifications MUST satisfy all of:

  1. Written motivation — interoperability, security, or privacy justification; convenience alone MUST NOT suffice
  2. ARB review — impact on architecture and federation
  3. SRG review — if security-related
  4. Compatibility analysis — per RFC-010 template: affected profiles, operators, subjects
  5. Migration guide — step-by-step for implementers and operators
  6. Test updates — MAJOR bump to conformance suite
  7. Working Group vote — ≥75% approval per Decision Making
  8. Public notice — minimum periods below

Minimum notice periods

Change scopeMinimum notice before enforcement in certification
Wire format / API contract12 months
Lookup tier semantics12 months
Context isolation rules18 months
Security-mandatory fix72 hours to 90 days per SRG assessment
Retired RFC6 months after Deprecated (unless security)

Notice MUST include: effective date, replacement, test suite version, certificate impact.

Migration support

Implementations SHOULD provide:

  • Dual-read / dual-write windows where feasible
  • Version negotiation headers per RFC-006
  • Subject-visible impact assessment when breaking changes affect explainability or consent scopes

Operators MUST notify institutional consumers ≥30 days before enforcing breaking behavior in production lookup paths, except active exploitation scenarios.

Grandfathering certificates

When breaking changes ship in a MAJOR release:

Certificate agePolicy
Active at announcementMAY renew once on old MAJOR if within overlap window
New applicationsMUST target Current MAJOR
Security exceptionSRG MAY revoke grandfathering immediately

Conformance Program MUST publish explicit grandfather tables per release.

Anti-patterns

The following MUST NOT occur:

  • "Silent breaking" via undocumented stricter validation
  • Breaking Stable behavior in PATCH releases
  • Vendor-specific extensions marketed as universal PTI without RFC
  • Forcing migration by disabling old version without published timeline