04 · Governance events

The audit-stream spine — one log, ten producers, five runtimes

Explain this page:

Every governance moment in the portfolio writes to the same hash-chained log. Decision Cards drafted, AEO watches drifted, policy bundles deployed, requests denied at runtime, MCP + Azure OpenAI tool invocations gated, Postgres rows changed, WordPress content published, data contracts broken in CI, signatures verified or tampered, AEO graphs ingested, incidents correlated to remediation plans — one tamper-evident narrative an auditor can replay end-to-end.

10 producers · 1 hash-chained spine · 3 consumers

Ten real producers, grouped by runtime. Switch to Full detail for every repo name and event kind, filterable by runtime.

Same opt-in env-var contract (AUDIT_STREAM_URL) across all ten, spanning Python, Rust, PL/pgSQL, PHP, and Azure Functions.

20+ event kinds across 10 producers, all funneling into one verifiable chain. Producers fail safely: if audit-stream-py is down, governance still happens, the event is just logged to stderr instead of the chain. The Rust libraries ship behind a Cargo feature (--features audit-stream) so consumers who don't need emission can strip out the HTTP dep. The data-tier producers prove the reach: pg-audit-stream-extension catches direct DML the app path would miss, and wp-kinetic-gain-audit brings the same tamper-evident chain to any WordPress estate. Adding the next producer is a ~60-line module: copy the pattern, pick your event kinds, point at AUDIT_STREAM_URL.