In a significant development for the Universal Commerce Protocol, Ilya Grigorik has reverted the identity linking mechanism registry that merged just two weeks ago. PR #329 rolls back PR #265, which had introduced an extensible registry pattern for identity providers.
If you began implementing the mechanism registry pattern from PR #265, pause that work. The specification is returning to the previous identity linking model while the design is reconsidered.
The original PR #265 introduced several breaking changes to identity linking:
The revert returns UCP to the simpler, hardcoded identity linking model that preceded it.
This revert is notable for several reasons:
The reverted mechanism registry was designed to solve a real problem: UCP's original identity linking was tightly coupled to OAuth 2.0. As enterprise use cases emerged requiring SAML, passkeys, and wallet-based authentication, the specification needed extensibility.
However, the registry pattern introduced significant complexity:
// Before (simple, direct)
{
"identity_link": {
"provider": "google",
"scope": ["profile", "email"]
}
}
// After PR #265 (registry-based, reverted)
{
"identity_link": {
"mechanism": "oauth2",
"registry_entry": "google_oauth",
"capability_scopes": ["commerce.order.read"],
"trust_level": "verified"
}
}
The registry approach required implementers to maintain mechanism definitions, handle capability-to-scope mappings, and validate trust level transitions — overhead that may not have been justified for current adoption levels.
The revert PR doesn't close the door on identity extensibility — it pauses the current approach. Expect:
For teams building on UCP:
This revert is a healthy sign of specification governance — better to pull back a premature abstraction than force adoption of unstable infrastructure. The identity extensibility problem remains real; the solution needs more iteration.
Related: UCP Identity Linking Mechanism Registry — Breaking Change (original merge analysis)