Files
govoplan-cases/docs/INTERFACE_PATTERN_MIGRATION.md

40 lines
2.7 KiB
Markdown

# 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.