Migrate Committee interface patterns

This commit is contained in:
2026-08-03 12:48:55 +02:00
parent 11b946ea78
commit e64af30534
10 changed files with 719 additions and 79 deletions
+42
View File
@@ -0,0 +1,42 @@
# Committee Interface Pattern Migration
This document records the bounded migration of Committee-owned WebUI surfaces
to the GovOPlaN interface pattern language. Core owns shared controls, help,
blocking explanations, draft guards, confirmations, and host shells. Committee
owns bodies, meetings, agenda context, vote context, minutes, and the bounded
projection of their institutional evidence.
## Surface Inventory
| Surface | Archetype | Consequence class | Contract |
| --- | --- | --- | --- |
| `/committee` toolbar and body list | Searchable workspace directory | Change query projection or create body | Shared search/button/help controls, explicit loading/error/permission states |
| Body and meeting selectors | Master-detail selection | Change active context | Stable keyboard buttons, selected/hover state, bounded independent scrolling |
| Meeting detail | Governed record workspace | Create or revise agenda, vote, and minute records | Shared sections, statuses, action explanations, locale-aware dates |
| Committee record dialog | Consequential record editor | Save immutable revision or change lifecycle | Contextual field help, guarded draft, required change reason, lifecycle confirmation |
| Ballot finalization dialog | Governed provider action | Import aggregate result and evidence | Permission explanation, guarded draft, explicit confirmation, no individual ballots |
## Consequence And Availability Rules
- Every save creates a new Committee revision and retains the change reason.
- Terminal lifecycle states are immutable; disabled edit actions explain that
constraint rather than disappearing.
- Cancelling, withdrawing, or retiring stops future work but never removes
existing revisions, minutes, decisions, or evidence.
- Provider and Voting integrations remain optional capability boundaries.
Committee stores only the aggregate result and assurance evidence.
- Missing write or ballot-finalization permission identifies the required
action, responsible administrator, and Access destination.
- Unsaved editors intercept route, browser, backdrop, and explicit close
attempts through the shared draft guard.
## State And Accessibility Evidence
The module uses shared buttons, icon buttons, dialogs, confirmations, alerts,
status badges, loading indicators, action blockers, field help, and draft
guards. Native buttons preserve keyboard order and shared dialogs retain focus.
The existing three-region desktop layout and two-region compact layout keep
lists and details independently scrollable. English and German catalogues cover
module metadata and owned UI copy, while dates follow the selected platform
locale. Manifest topics expose stable route, field, blocker, privacy, and
consequence references without importing optional sibling modules.