31 lines
1.8 KiB
Markdown
31 lines
1.8 KiB
Markdown
# Approvals Interface Pattern Migration
|
|
|
|
This migration applies the GovOPlaN interface pattern language to the
|
|
Approvals-owned route without changing the append-only approval model or
|
|
importing optional sibling modules.
|
|
|
|
## Surface Inventory
|
|
|
|
| Surface | Archetype | Consequence class | Contract |
|
|
| --- | --- | --- | --- |
|
|
| `/approvals` list | Searchable work queue | Select request or create immutable chain | Shared loading, empty, error, permission, selection, and help states |
|
|
| Approval detail | Governed record detail | Inspect exact subject, chain, state, and evidence | Locale-aware history, status, provenance, explained lifecycle actions |
|
|
| Request dialog | Consequential definition editor | Freeze exact subject and approval chain | Guarded draft, field help, validation reasons, at least one step |
|
|
| Decision dialog | Governed decision | Append approval or rejection evidence | Required reason/signature, guarded draft, explicit confirmation action |
|
|
|
|
## Consequence And Availability Rules
|
|
|
|
- Creation freezes the subject identity and digest plus every ordered step,
|
|
selector, quorum, separation, and signature requirement.
|
|
- Approving or rejecting appends attributable evidence and cannot be edited.
|
|
- Only pending or escalated requests can be decided. Terminal requests remain
|
|
available for reconstruction.
|
|
- Missing create or decide permission is visible and points to the Access role
|
|
assignment destination and responsible administrator.
|
|
- Signature references are evidence pointers and never a cryptographic claim.
|
|
|
|
The module uses Core dialogs, controls, status, blockers, help, loading, empty,
|
|
error, and draft-guard contracts. Native selection buttons preserve keyboard
|
|
order; bounded list/detail viewports remain responsive. English and German
|
|
catalogues cover module-owned copy and dates follow the active platform locale.
|