diff --git a/apps/operator/data/fixtures.ts b/apps/operator/data/fixtures.ts
index 6c242bf..02e4e64 100644
--- a/apps/operator/data/fixtures.ts
+++ b/apps/operator/data/fixtures.ts
@@ -63,32 +63,11 @@ export const INCIDENT: ActiveIncident = {
// The seed in services/platform-api/src/seed/seed.service.ts creates the
// same 10 flags this fixture used to contain.
-export type AuditTone = 'info' | 'warn' | 'bad'
-export interface AuditEntry {
- id: string
- when: string
- actor: string
- role: string
- action: string
- target: string
- tenant: string
- ip: string
- tone: AuditTone
-}
-
-export const OP_AUDIT: AuditEntry[] = [
- { id: 'op_8821', when: '15:02:11', actor: 'Anne Baslund', role: 'platform admin', action: 'feature_flag.rollout', target: 'jmap_native_v2 · 50%', tenant: '—', ip: '10.0.4.18', tone: 'info' },
- { id: 'op_8820', when: '14:58:42', actor: 'Mikkel Nørgaard', role: 'engineer', action: 'service.pod_restart', target: 'authentik-worker-3', tenant: '—', ip: '10.0.4.21', tone: 'warn' },
- { id: 'op_8819', when: '14:48:02', actor: 'Sofie Lindberg', role: 'ops', action: 'tenant.impersonate', target: 'oliver@bygherre.dk', tenant: 'Bygherre Cloud', ip: '10.0.4.04', tone: 'info' },
- { id: 'op_8818', when: '14:36:00', actor: 'system', role: 'auto', action: 'oncall.paged', target: 'Mikkel Nørgaard', tenant: '—', ip: '—', tone: 'warn' },
- { id: 'op_8817', when: '14:18:00', actor: 'system', role: 'auto', action: 'alert.triggered', target: 'authentik p95 > 400ms', tenant: '—', ip: '—', tone: 'bad' },
- { id: 'op_8816', when: '13:21:55', actor: 'Anne Baslund', role: 'platform admin', action: 'tenant.refund_issued', target: 'INV-0480 · 980 DKK', tenant: 'Vester Foods', ip: '10.0.4.18', tone: 'info' },
- { id: 'op_8815', when: '12:09:30', actor: 'Sofie Lindberg', role: 'ops', action: 'tenant.suspended', target: 'København Kalkulator', tenant: 'København Kalkulator', ip: '10.0.4.04', tone: 'warn' },
- { id: 'op_8814', when: '11:44:00', actor: 'Anne Baslund', role: 'platform admin', action: 'partner.created', target: 'Klaussen Digital · invited', tenant: '—', ip: '10.0.4.18', tone: 'info' },
- { id: 'op_8813', when: '10:55:41', actor: 'system', role: 'auto', action: 'invoice.past_due', target: 'INV-0522 · 2.940 DKK · 21 d', tenant: 'Bygherre Cloud', ip: '—', tone: 'bad' },
- { id: 'op_8812', when: '10:12:08', actor: 'Mikkel Nørgaard', role: 'engineer', action: 'feature_flag.created', target: 'beta_ai_summaries', tenant: '—', ip: '10.0.4.21', tone: 'info' },
- { id: 'op_8811', when: '09:30:00', actor: 'Anne Baslund', role: 'platform admin', action: 'tos.published', target: 'v2026.05 · all tenants', tenant: '—', ip: '10.0.4.18', tone: 'info' },
-]
+// Audit log moved to a real backend at /api/audit + see types/audit.ts.
+// AuditService.record() in services/platform-api/src/audit/ writes an entry on
+// every privileged mutation. Incident timeline still references on-call
+// historically (see INCIDENT.updates above) — those are story content for
+// the mock incident, not entries in the audit collection.
// Services in the design that haven't been deployed yet. Surfaced as a
// separate "Planned" section on the Infrastructure page so the operator sees
diff --git a/apps/operator/pages/audit.vue b/apps/operator/pages/audit.vue
index 0024039..b74663e 100644
--- a/apps/operator/pages/audit.vue
+++ b/apps/operator/pages/audit.vue
@@ -1,26 +1,75 @@
@@ -29,27 +78,44 @@ function label(a: AuditEntry) {
| Time | @@ -62,31 +128,46 @@ function label(a: AuditEntry) {||||||||||
|---|---|---|---|---|---|---|---|---|---|---|
|
- sys
- sys
+
-
{{ a.actor }}
- {{ e.actorEmail || 'system' }}
+ |
- {{ a.target }} | +{{ e.resourceName || e.resourceId || '—' }} |
- |
-
+ |