Files
DashBoard/docs/migration/portal-no-iframe/drawer_governance_contract.md

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

  1. Drawer IDs must be unique and non-empty.
  2. Page routes must be unique and non-empty.
  3. page.drawer_id (when present) must reference an existing drawer.
  4. order values (when present) must be positive integers.
  5. Page status must be one of released or dev.
  6. Visibility outcomes must be deterministic for admin/non-admin users.

Deterministic Rendering Order

Drawers:

  • Primary sort by order ascending.
  • Secondary sort by name ascending.

Pages in each drawer:

  • Primary sort by order ascending.
  • Secondary sort by (name or route) ascending.

Visibility Semantics

  • Non-admin users can view only released pages 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.json
  • baseline_drawer_visibility.json