Audit (cross-cutting)

Audit is a cross-cutting surface, not a service. It has no container of its own: the producer is a shared library (StellaOps.Audit.Emission) adopted by essentially every WebService in the platform, and the system of record is the Timeline service.

Documents

DocumentRead it when
ArchitectureYou need the contract, the trust boundary, the guarantees (and the non-guarantees), or you are deciding where an audit record should live.
Audit Event Emission GuideYou are adding audit emission to a service or endpoint.

The one-paragraph version

A service tags an endpoint with AuditActionAttribute + AuditActionFilter (src/__Libraries/StellaOps.Audit.Emission/). After the endpoint responds, the filter builds an AuditEventPayload — actor and tenant from the caller’s claims, resource from the route, request body PII-redacted — and HttpAuditEventEmitter POSTs it fire-and-forget to Timeline POST /api/v1/audit/ingest. Timeline persists it into timeline.unified_audit_events under a per-tenant SHA-256 hash chain, with per-classification retention and GDPR right-to-erasure that keeps the chain verifiable.

Three things that catch people out: