Audit Log - cross-entity audit trail¶
| Stage | Building |
|---|---|
| Status | Partial |
| Design status | In progress |
| Estimate | S |
| Confidence | Medium |
| Linear | PIN-620 ↗ PIN-117 ↗ |
| Linear status | Done · +1 backlog |
| Design | Design ↗ |
| Linear epic | Platform Foundation |
| Module | Settings & Admin ↗ |
Priority: High
Scope¶
Admin-facing Audit Log: every create/update/delete across the app captured with actor, entity, timestamp, and field-level diff, queryable by entity or by user. Adds a paginated, searchable/filterable admin list page (not yet built) on top of the existing capture service. (Source: PIN-620, PIN-117.)
Acceptance criteria¶
- Every mutating action (create/update/delete) logged with user, action, entity type/ID, timestamp, IP address
- Field-level diff recorded per edit (old value to new value)
- Admin Audit Log list page with server-side search, filters, and pagination (currently missing — no route/nav entry today)
- Lookup by entity (cross-entity trail) or by user
- Loading / empty / end-of-list states on the list page
- Visible only to admin + compliance-officer roles
Conor's comments¶
Jonny provided comments, do we need to make adjustments?
Notes¶
INFRA / NO DESIGN - not a Claude Design surface; build item, not awaiting design sign-off. AuditLogEntry model exists
Open question for Conor¶
Not in Claude design - keep as-is or surface it?