Extension ordering
Admin surface contributions and Frontend render-hook contributions share the
Core-owned ExtensionOrderResolver. Use a stable key and an owner for every
positioned contribution. Existing numeric priorities remain supported and are
adapted to ExtensionPosition::priority().
ExtensionPosition::first();ExtensionPosition::last();ExtensionPosition::priority(20);ExtensionPosition::before('capell.core.banner');ExtensionPosition::after('capell.core.banner');Equal priorities retain registration order. Re-registering the same owner,
source, and key is idempotent; a different owner or source must use the
registry’s explicit replacement method. Registries can be frozen once provider
boot has completed. Missing anchors and cycles retain deterministic fallback
order and are exposed through orderingDiagnostics() for audit tooling.