Migrate Cases interface patterns
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
# Cases Interface Pattern Migration
|
||||
|
||||
This migration applies the GovOPlaN interface pattern language to the case
|
||||
directory, governed case detail, lifecycle editor, institutional references,
|
||||
immutable evidence, and object-level access dialog.
|
||||
|
||||
## Surface Inventory
|
||||
|
||||
| Surface | Archetype | Consequence class | Contract |
|
||||
| --- | --- | --- | --- |
|
||||
| `/cases` | Governed directory | Search and select a readable case | Stable loading, empty, error, filter, count, and contextual-help states |
|
||||
| Case summary | Governed object detail | Inspect current revision and lifecycle state | Privacy-safe title, type, status, dates, revision, and reason rendering |
|
||||
| Lifecycle editor | Consequential record editor | Append revision or close case | Guarded draft, OCC revision, stable idempotency key, explicit reason, permission explanation, and save/discard |
|
||||
| Institutional references | Provider-owned reference list | Inspect linked objects | Stable owner/object/version references without copying sibling-module state |
|
||||
| Timeline and history | Immutable evidence view | Inspect recorded lifecycle evidence | Actor-safe summaries, revision order, timestamps, and no historical mutation controls |
|
||||
| Access dialog | Governed object-access editor | Change visibility or explicit grants | Searchable account/group references, guarded nested draft, confirmation, OCC revision, reason, and permission boundary |
|
||||
|
||||
## Consequence And Availability Rules
|
||||
|
||||
- Every accepted title, status, visibility, or grant change appends an immutable
|
||||
revision and timeline event. Existing history is never rewritten.
|
||||
- Updates require `cases:case:update`; terminal statuses additionally require
|
||||
`cases:case:close`; access changes require `cases:case:share`.
|
||||
- A missing permission leaves the readable case available and explains the
|
||||
actor, required action, and administrative destination instead of hiding the
|
||||
entire object.
|
||||
- Restricted visibility is evaluated by the Cases ACL provider. The WebUI
|
||||
selector discovers accounts and groups through shared reference providers;
|
||||
it does not import Access internals.
|
||||
- Main and access-dialog drafts are guarded. A direct access save requires a
|
||||
separate confirmation that identifies the case, visibility, and grant count.
|
||||
- Service, party, assignment, Decision, and record links remain references to
|
||||
provider-owned objects. Optional modules may enrich those objects without
|
||||
becoming runtime dependencies of Cases.
|
||||
|
||||
Backend and WebUI manifests publish the same navigation, route, section, and
|
||||
action surface identifiers. English and German catalogues cover module-owned
|
||||
navigation, blocker, guard, and confirmation vocabulary. Contextual help links
|
||||
resolve to the module-owned manifest documentation.
|
||||
Reference in New Issue
Block a user