29 lines
2.7 KiB
Markdown
29 lines
2.7 KiB
Markdown
# 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 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.
|