# Admin contribution zones Zone ids are a CLOSED, platform-owned enum and a public contract (ADR 0026 §8): breaking a zone's context shape means a new id, never mutation. An extension declares WHICH zone a panel mounts in (`ui.panels[].zone`), never its position — the platform owns arrangement. `when` is a closed predicate vocabulary (`orderStatusIn`, `requiresShipping`, `testOnly`) evaluated before the panel's code loads. | zone | kind | status | context passed | |---|---|---|---| | `settings.payments` | list | active | none — the platform renders the whole card from the manifest | | `settings.cargo` | list | active | none — the platform renders the whole card from the manifest | | `order.detail.ship` | panel | active | { order: OrderView, store: StoreCtx, onDone, onChanged } | | `order.detail.panel` | panel | active | { order: OrderView, store: StoreCtx, onChanged } | | `extension.settings.action` | action | active | { store: StoreCtx, extension: InstalledView, close, refresh } | | `product.detail.panel` | panel | reserved | { product, store } (reserved) | | `dashboard.widget` | panel | reserved | { store } (reserved) | | `returns.detail.panel` | panel | reserved | { return, order, store } (reserved) | Kind-derived **list** zones render every installed extension of the provider kind as a platform card (description, secrets, the auto-generated config form, actions, enable) — most extensions ship zero UI code. **panel** zones mount an extension's compiled panel (runtime:platform at E1; server-driven component trees for sandboxed extensions at P1+). **action** = a modal opened from the extension's settings card (`ui.actions[]`, with `doneWhen.configSet` for a "done" badge).