Skip to main content
Depends on nothing. No other module reads its tables — they receive an already-resolved authorization context from the API layer. Spanish mirror: ../../es/modules/identity/. English is authoritative.

Feature roadmap

Nine deliveries. Six make F1a, because nothing in the platform can be built without an authenticated caller and a permission to check.

The cut, explained

  • Permission registry before everything that uses it (0002). It is a generated artifact: routes declare permissions, the registry is built from those declarations, and CI fails on drift. Every other module’s endpoints depend on it existing.
  • Authentication and sessions are separate (0003, 0004). Proving who you are and keeping you proven are different problems: one is a credential exchange, the other is revocation, device inventory and expiry. They fail differently.
  • API keys are F1a, OAuth2 is F1b (0006, 0007). A server-to-server integration needs a key on day one. An OAuth2 provider with a consent screen is a product surface and can follow — but the scope model it renders is defined in 0002 from the start, so it is additive.
  • Impersonation last (0009), because it is the most dangerous capability in the platform and should not exist before the audit trail that constrains it does.

The two realms

A token from one realm can never satisfy the other. That is structural, not a check.

OAuth in both directions

Neither is the default. A tenant may run both at once — staff inward through their corporate IdP, customers outward through our provider.