Files
govoplan-core/docs/INTERFACE_PATTERN_MIGRATION.md
T

3.4 KiB

Core Interface Pattern Migration

This document records the Core-owned part of the product-wide interface pattern-language rollout. The normative product grammar and complete route inventory live in the govoplan meta repository. Core owns reusable behavior; domain modules own their compositions.

Core Surfaces

Surface Pattern Consequence and provenance contract Evidence
User settings Two-zone settings workspace with typed controls and unsaved-change protection Save actions distinguish busy, unchanged, and test-in-progress states; contextual help resolves through Docs or the hosted fallback SettingsPage.tsx, test-core-interface-patterns.mjs
Reusable credentials Repeated administration with an adaptive create/edit dialog, optional password generator, and destructive confirmation Secret values are write-only; generated candidates use the browser cryptographic API without a weak fallback and do not replace the field until explicitly confirmed; scope/permission blockers name the required action, responsible actor, and destination; unavailable row actions remain keyboard-explainable CredentialEnvelopeManager.tsx, shared PasswordField, PasswordGeneratorDialog, ActionBlockerHint, Button, TableActionGroup, and ConfirmDialog
Retention policy Effective-policy editor with inherited source paths and typed, narrowing-only controls Parent locks and missing write authority are explicit; the save action distinguishes locks, missing target, loading, clean draft, and active save RetentionPolicyManagement.tsx, policy logic tests, test-core-interface-patterns.mjs
Module lifecycle Guided operator projection over durable installer-queue evidence Preflight, handoff, progress, stale evidence, recovery, and rollback consequences remain visible Admin module lifecycle tests and the Core installer-queue contract
Shared page frame Domain-neutral headed page layout used by Core and optional modules Scroll ownership, sticky heading, route actions, page notices, loading, narrow-layout collapse, and contextual-help identity are centralized; AdminPageLayout composes the same contract PageLayout.tsx, page-layout.test.tsx, Core fallback dashboard, Dashboard module, Ops module, and check-shared-webui-layouts.py
Shared configuration primitives Cross-module component contract Dialog focus, blocker structure, disabled-action focus, route/page/field/action F1 help, unsaved changes, confirmation, loading, alerts, problem lists, and policy provenance are centralized Core component tests, CONTEXTUAL_HELP_CONTRACT.md, and module-permutation build

Boundary

Files and Mail are the first two external consumers of the layered server/credential/policy pattern. Their own repositories retain provider discovery, transport behavior, authorization, and migration evidence. Remaining module surfaces are tracked by bounded module-owned issues under GovOPlaN #11; they are not reasons to add sibling-private behavior to Core.

Raw JSON remains permitted only for diagnostics, expert inspection, interchange, or conflict evidence. It is not a primary Core configuration editor.

Raw page-frame debt is registered in the meta repository and may only decrease. New headed pages use PageLayout; full-canvas explorers may use PageHeader while the next shared workspace/split-pane contract is developed. Module CSS continues to own domain content layout, never the shared page frame.