41 lines
1.9 KiB
Markdown
41 lines
1.9 KiB
Markdown
# Audit Interface Pattern Migration
|
|
|
|
Audit contributes two read-only administration surfaces through the shared
|
|
`admin.sections` capability. Both use the platform's monitoring and evidence
|
|
archetype.
|
|
|
|
## Surface Map
|
|
|
|
| Surface | Authority | Pattern | Consequence class |
|
|
| --- | --- | --- | --- |
|
|
| `audit.admin.system` | `system:audit:read` | Server-filtered evidence grid and event inspector | Read-only evidence disclosure |
|
|
| `audit.admin.tenant` | `audit:read` for the active tenant | Server-filtered evidence grid and event inspector | Read-only evidence disclosure |
|
|
|
|
Audit does not expose mutation or destructive actions in these panels. The
|
|
only row action opens an inspection dialog; reload preserves the stable shell
|
|
and existing evidence while a newer projection is requested.
|
|
|
|
## Interaction Contract
|
|
|
|
- Core owns the admin layout, DataGrid, dialog, action group, loading/error
|
|
treatment, disabled-action explanation, and documentation link.
|
|
- Filtering, sorting, counts, and paging are server-owned. The first page may
|
|
apply bounded delta updates using an opaque watermark; a full response
|
|
remains authoritative when the delta contract cannot be used.
|
|
- System and tenant panels remain distinct and are registered only with their
|
|
respective read scopes. Tenant selection is never accepted as a free-form
|
|
client override.
|
|
- The event inspector renders stable actor, action, object, tenant, timestamp,
|
|
and structured detail rows. It does not add editing, replay, export, or raw
|
|
credential access.
|
|
- Contextual help resolves through `audit.read-authorized-evidence`; operational
|
|
recording, retention, and outbox guidance remains in the separate admin
|
|
topic.
|
|
|
|
## Verification
|
|
|
|
Run the Audit backend suite and `npm run test:interface-patterns` in `webui`.
|
|
The structural test guards shared components, localized labels, contextual
|
|
help, server paging, readable detail projection, and absence of private sibling
|
|
imports or browser-native dialogs.
|