The audit-stream spine — one log, ten producers, five runtimes
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.
Every governance action across the whole product line, big or small, gets written to one shared, tamper-evident log instead of scattered across ten different systems' own records. If a Decision Card gets drafted, a policy gets deployed, an AI tool call gets blocked, or a database row changes, it all lands in the same chain. An auditor doesn't have to reconstruct a timeline from ten different sources by hand; they can replay the whole story from one place and trust that nothing in it was quietly edited afterward.
Imagine every important thing that happens across a whole company's software, an approval, a blocked request, a change to a webpage, gets written down in one shared notebook instead of ten separate ones. This notebook has a special property: once something is written in it, it can't be secretly erased or changed without leaving obvious evidence. So if someone later asks "what actually happened, and can you prove it wasn't tampered with," there's one place to look, and the answer is verifiable, not just someone's word.
Ten real producers, grouped by runtime. Switch to Full detail for every repo name and event kind, filterable by runtime.
▸+2 more
▸+2 more
▸+2 more
▸+2 more
▸+1 more
▸+1 more
▸+2 more
▸+2 more
GET /verify
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.