1.4 KiB
1.4 KiB
Drawer Governance Contract (Portal No-Iframe Migration)
Scope
This contract defines drawer behavior that must remain stable during migration.
Canonical Responsibilities
Drawer metadata is responsible for:
- Information architecture grouping.
- Display order.
- Access visibility (
admin_only).
Drawer metadata is not responsible for:
- Content embedding mode (
iframe,toolFrame). - Rendering technology selection (Jinja vs SPA route view).
Contract Rules
- Drawer IDs must be unique and non-empty.
- Page routes must be unique and non-empty.
page.drawer_id(when present) must reference an existing drawer.ordervalues (when present) must be positive integers.- Page status must be one of
releasedordev. - Visibility outcomes must be deterministic for admin/non-admin users.
Deterministic Rendering Order
Drawers:
- Primary sort by
orderascending. - Secondary sort by
nameascending.
Pages in each drawer:
- Primary sort by
orderascending. - Secondary sort by
(name or route)ascending.
Visibility Semantics
- Non-admin users can view only
releasedpages in non-admin-only drawers. - Admin users can view all drawer-assigned pages according to current page status policy.
- Drawers with zero visible pages are hidden.
Validation Artifacts
baseline_drawer_contract_validation.jsonbaseline_drawer_visibility.json