{"id":176,"date":"2026-09-20T08:00:22","date_gmt":"2026-09-20T08:00:22","guid":{"rendered":"https:\/\/www.dobryakov.net\/blog\/176\/"},"modified":"2026-09-20T08:00:22","modified_gmt":"2026-09-20T08:00:22","slug":"ai-governance-auditability","status":"publish","type":"post","link":"https:\/\/www.dobryakov.net\/blog\/176\/","title":{"rendered":"Auditability &#038; Reproducibility: How to Prove to a Regulator What Your AI Actually Did"},"content":{"rendered":"<p>Six months after your loan-approval system goes live, a regulator submits a formal request. A customer is appealing a denial dated May 12. The question is simple and lethal: why did the AI recommend denial?<\/p>\n<p>If your answer is &quot;the model decided so,&quot; you are already non-compliant. A high-risk system under the EU AI Act requires a reconstructible chain of evidence: the exact system prompt, the customer data pulled in, the model version, the guardrails that fired. Without an immutable trace of every call, the decision is unprovable, and the system cannot legally operate.<\/p>\n<p><!--more--><\/p>\n<p>This is the audit plane: the layer where every AI decision leaves a permanent trace, sufficient to reproduce and explain it to a regulator, an auditor, or an incident review. Without it, every preceding control plane is unprovable. Guardrails that cannot be shown in a log do not exist as far as a regulator is concerned.<\/p>\n<h2>The Regulatory and Operational Drivers<\/h2>\n<p>The audit plane is driven by external law and internal incident response.<\/p>\n<p>On the regulatory side, the EU AI Act (Art. 12) mandates automatic logging for the entire lifetime of a high-risk system. Art. 13 requires transparency, and Art. 86 grants the right to an explanation of an individual decision. GDPR Art. 22 reinforces this with explainability requirements for automated decisions.<\/p>\n<p>On the operational side, without a trace, you cannot tell a prompt bug apart from model drift or a security attack. These are three different causes requiring three different responses. An incident review without a trace is guesswork.<\/p>\n<h2>The Architectural Pattern: Immutable AI Trace Log<\/h2>\n<p>The engineering solution is an Immutable AI Trace Log Pipeline built on OpenTelemetry GenAI Semantic Conventions. This provides end-to-end tracing with standard spans, exported to immutable storage with a defined retention policy.<\/p>\n<p>The observability ecosystem for LLMs is fragmented. Langfuse, Helicone, Traceloop, and LangSmith all use incompatible proprietary formats, locking you into a vendor. GenAI Semantic Conventions, developed under the CNCF, define a shared vocabulary. A span from a LangChain agent looks exactly the same as one from a bare OpenAI call.<\/p>\n<p>An honest caveat: as of mid-2026, the conventions are still in Development status. In production, teams must enable <code>OTEL_SEMCONV_STABILITY_OPT_IN<\/code> for dual emission\u2014sending both legacy and new attributes\u2014to survive the eventual transition to stable.<\/p>\n<h2>Engineering Stack<\/h2>\n<ul>\n<li><strong>Tracing standard<\/strong>: OpenTelemetry + GenAI Semantic Conventions (spans for LLM calls, retrieval, tool calls).<\/li>\n<li><strong>Backends<\/strong>: Arize Phoenix, Langfuse, or LangSmith (all accept OTel).<\/li>\n<li><strong>Transport<\/strong>: Kafka or NATS.<\/li>\n<li><strong>Storage<\/strong>: ClickHouse for analytics and dashboards, plus an immutable WORM (Write Once Read Many) layer for legal audit.<\/li>\n<\/ul>\n<h2>Step 1: An End-to-End <code>trace_id<\/code><\/h2>\n<p>A single ID runs the entire decision chain: the API gateway, RAG and fine-grained authorization, input guardrails, the model, tool calls, output guardrails, and the final response.<\/p>\n<p>This same ID serves as the key into the PII mapping store and the budget tracker. It ties the entire system&#x27;s state together for a single decision.<\/p>\n<h2>Step 2: What Gets Captured in the Spans<\/h2>\n<p>Per GenAI SemConv plus audit extensions, the spans must capture:<\/p>\n<ul>\n<li>The <strong>system prompt<\/strong> version (a hash and a link to the version control commit).<\/li>\n<li>The exact <strong>RAG chunks<\/strong> with their distance scores and <code>source_doc_id<\/code>.<\/li>\n<li><strong>Raw request and response<\/strong> (already with PII masked).<\/li>\n<li>The <strong>arguments of every called function<\/strong> (tool calling) and the policy gate&#x27;s verdict.<\/li>\n<li>The <strong>model\/provider version<\/strong>, temperature, and seed.<\/li>\n<li>The <strong>guardrail verdicts<\/strong> (what fired, what was blocked).<\/li>\n<\/ul>\n<h2>Step 3: Export to Immutable Storage<\/h2>\n<p>The pipeline routes data from the application via the OTel SDK through the OTLP protocol to a collector, then into Kafka. From Kafka, the stream splits:<\/p>\n<ul>\n<li>To <strong>ClickHouse<\/strong> for analytics and dashboards.<\/li>\n<li>To a <strong>WORM\/append-only layer<\/strong> for legal audit and retention.<\/li>\n<\/ul>\n<p>The append-only layer is not &quot;a database everyone agreed not to write over.&quot; It is storage with a technical impossibility of overwrite, using object-lock mechanisms.<\/p>\n<h2>Step 4: Reproducibility<\/h2>\n<p>Given a <code>trace_id<\/code>, the full input is reassembled. With a fixed model version and seed, a decision can be replayed. This is what the regulator needs: proof of what ran, what data it used, and what verdict each control produced.<\/p>\n<h2>Step 5: The Log&#x27;s Own Privacy<\/h2>\n<p>The audit trail contains PII and secrets. It requires encryption, role-based access control, and a separate TTL that balances the AI Act&#x27;s mandate to retain against GDPR&#x27;s mandate not to over-retain.<\/p>\n<h2>Where It Breaks<\/h2>\n<p>The pipeline still fails in predictable ways. The audit plane has specific, dangerous failure modes.<\/p>\n<p><strong>LLM non-determinism.<\/strong> Even with a seed, reproducibility is incomplete. Providers swap models &quot;under the hood,&quot; and sampling varies. An &quot;explanation&quot; produced by replaying a trace is a reconstruction of the decision&#x27;s context, not a guarantee of literal causal replication.<\/p>\n<p><strong>Post-hoc rationalization.<\/strong> Chain-of-thought logged from the model is what the model wrote, not necessarily why it decided that way. Do not sell CoT to a regulator as a causal mechanism. It is a artifact of the generation process, not the generation&#x27;s driver.<\/p>\n<p><strong>Volume and cost.<\/strong> A full trace with RAG chunks runs into terabytes. Retention under Art. 12 versus the ClickHouse budget versus GDPR data minimization is a three-way conflict. It is resolved by sampling detail level: full trace for high-risk decisions, truncated for the rest.<\/p>\n<p><strong>The log as an attack surface.<\/strong> An audit trail containing PII and secrets is a prime target. A leak of the audit log is worse than the original data breach. Protect the log as part of the security perimeter.<\/p>\n<p><strong>The standard isn&#x27;t stable yet.<\/strong> SemConv is in Development. Attributes change, which is why dual emission during the transition period is mandatory for production systems.<\/p>\n<h2>Maturity Checklist<\/h2>\n<ul>\n<li><strong>L1<\/strong>: Raw request\/response and model version are logged.<\/li>\n<li><strong>L2<\/strong>: An OTel trace (SemConv) with chunks, prompt version, and tool arguments stored in append-only storage.<\/li>\n<li><strong>L3<\/strong>: Decision replay by <code>trace_id<\/code>, retention aligned with the AI Act, encryption and RBAC on the audit trail, dual emission during the standard&#x27;s transition period.<\/li>\n<\/ul>\n<h2>Standards and Mapping<\/h2>\n<ul>\n<li><strong>EU AI Act<\/strong>: Art. 12 (record-keeping), Art. 13 (transparency), Art. 86 (explanation).<\/li>\n<li><strong>ISO\/IEC 42001<\/strong>: logging, monitoring, incident management.<\/li>\n<li><strong>NIST AI RMF<\/strong>: Measure\/Manage \u2014 traceability.<\/li>\n<li><strong>GDPR<\/strong>: Art. 22.<\/li>\n<\/ul>\n<p>When the regulator asks for the May 12 decision, you do not open the model and hope for the best. You pull the <code>trace_id<\/code>, reconstruct the exact prompt, the retrieved chunks, the guardrail verdicts, and the model version, and you hand over the evidence. If you cannot do that, the system you built is a liability.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Six months after launch, a regulator asks why your AI denied a loan. Without an immutable trace of every call, you have no answer \u2014 and a high-risk system that is non-compliant.<\/p>\n","protected":false},"author":0,"featured_media":175,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[147],"tags":[164,150,161,153,162,163],"class_list":["post-176","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ai-governance","tag-ai-trace","tag-ai-governance","tag-auditability","tag-eu-ai-act","tag-opentelemetry","tag-reproducibility"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"Build an immutable AI trace log with OpenTelemetry GenAI SemConv. Prove to regulators what your AI decided, why, and with which data.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<link rel=\"canonical\" href=\"https:\/\/www.dobryakov.net\/blog\/176\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Grigoriy Dobryakov - IT+AI Blog - Grigoriy Dobryakov&#039;s blog: management, development and testing\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"AI Auditability: Tracing Every Decision for Regulators\" \/>\n\t\t<meta property=\"og:description\" content=\"Build an immutable AI trace log with OpenTelemetry GenAI SemConv. Prove to regulators what your AI decided, why, and with which data.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/www.dobryakov.net\/blog\/176\/\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2026-09-20T08:00:22+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2026-09-20T08:00:22+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:title\" content=\"AI Auditability: Tracing Every Decision for Regulators\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Build an immutable AI trace log with OpenTelemetry GenAI SemConv. Prove to regulators what your AI decided, why, and with which data.\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BlogPosting\",\"@id\":\"https:\\\/\\\/www.dobryakov.net\\\/blog\\\/176\\\/#blogposting\",\"name\":\"AI Auditability: Tracing Every Decision for Regulators\",\"headline\":\"Auditability &#038; Reproducibility: How to Prove to a Regulator What Your AI Actually Did\",\"author\":{\"@id\":\"https:\\\/\\\/www.dobryakov.net\\\/blog\\\/author\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/www.dobryakov.net\\\/blog\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/www.dobryakov.net\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/ai-governance-auditability.jpg\",\"width\":1200,\"height\":630,\"caption\":\"Auditability & Reproducibility: How to Prove to a Regulator What Your AI Actually Did\"},\"datePublished\":\"2026-09-20T08:00:22+00:00\",\"dateModified\":\"2026-09-20T08:00:22+00:00\",\"inLanguage\":\"en-US\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.dobryakov.net\\\/blog\\\/176\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dobryakov.net\\\/blog\\\/176\\\/#webpage\"},\"articleSection\":\"AI Governance, AI trace, ai-governance, auditability, eu-ai-act, OpenTelemetry, reproducibility\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.dobryakov.net\\\/blog\\\/176\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.dobryakov.net\\\/blog#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.dobryakov.net\\\/blog\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.dobryakov.net\\\/blog\\\/category\\\/ai-governance\\\/#listItem\",\"name\":\"AI Governance\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.dobryakov.net\\\/blog\\\/category\\\/ai-governance\\\/#listItem\",\"position\":2,\"name\":\"AI Governance\",\"item\":\"https:\\\/\\\/www.dobryakov.net\\\/blog\\\/category\\\/ai-governance\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.dobryakov.net\\\/blog\\\/176\\\/#listItem\",\"name\":\"Auditability &#038; Reproducibility: How to Prove to a Regulator What Your AI Actually Did\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.dobryakov.net\\\/blog#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.dobryakov.net\\\/blog\\\/176\\\/#listItem\",\"position\":3,\"name\":\"Auditability &#038; Reproducibility: How to Prove to a Regulator What Your AI Actually Did\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.dobryakov.net\\\/blog\\\/category\\\/ai-governance\\\/#listItem\",\"name\":\"AI Governance\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.dobryakov.net\\\/blog\\\/#organization\",\"name\":\"Grigoriy Dobryakov - IT+AI Blog\",\"description\":\"Grigoriy Dobryakov's blog: management, development and testing\",\"url\":\"https:\\\/\\\/www.dobryakov.net\\\/blog\\\/\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.dobryakov.net\\\/blog\\\/176\\\/#webpage\",\"url\":\"https:\\\/\\\/www.dobryakov.net\\\/blog\\\/176\\\/\",\"name\":\"AI Auditability: Tracing Every Decision for Regulators\",\"description\":\"Build an immutable AI trace log with OpenTelemetry GenAI SemConv. Prove to regulators what your AI decided, why, and with which data.\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dobryakov.net\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.dobryakov.net\\\/blog\\\/176\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/www.dobryakov.net\\\/blog\\\/author\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/www.dobryakov.net\\\/blog\\\/author\\\/#author\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/www.dobryakov.net\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/ai-governance-auditability.jpg\",\"@id\":\"https:\\\/\\\/www.dobryakov.net\\\/blog\\\/176\\\/#mainImage\",\"width\":1200,\"height\":630,\"caption\":\"Auditability & Reproducibility: How to Prove to a Regulator What Your AI Actually Did\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.dobryakov.net\\\/blog\\\/176\\\/#mainImage\"},\"datePublished\":\"2026-09-20T08:00:22+00:00\",\"dateModified\":\"2026-09-20T08:00:22+00:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.dobryakov.net\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.dobryakov.net\\\/blog\\\/\",\"name\":\"Grigoriy Dobryakov - IT+AI Blog\",\"description\":\"Grigoriy Dobryakov's blog: management, development and testing\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.dobryakov.net\\\/blog\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"AI Auditability: Tracing Every Decision for Regulators","description":"Build an immutable AI trace log with OpenTelemetry GenAI SemConv. Prove to regulators what your AI decided, why, and with which data.","canonical_url":"https:\/\/www.dobryakov.net\/blog\/176\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BlogPosting","@id":"https:\/\/www.dobryakov.net\/blog\/176\/#blogposting","name":"AI Auditability: Tracing Every Decision for Regulators","headline":"Auditability &#038; Reproducibility: How to Prove to a Regulator What Your AI Actually Did","author":{"@id":"https:\/\/www.dobryakov.net\/blog\/author\/#author"},"publisher":{"@id":"https:\/\/www.dobryakov.net\/blog\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/www.dobryakov.net\/blog\/wp-content\/uploads\/2026\/09\/ai-governance-auditability.jpg","width":1200,"height":630,"caption":"Auditability & Reproducibility: How to Prove to a Regulator What Your AI Actually Did"},"datePublished":"2026-09-20T08:00:22+00:00","dateModified":"2026-09-20T08:00:22+00:00","inLanguage":"en-US","mainEntityOfPage":{"@id":"https:\/\/www.dobryakov.net\/blog\/176\/#webpage"},"isPartOf":{"@id":"https:\/\/www.dobryakov.net\/blog\/176\/#webpage"},"articleSection":"AI Governance, AI trace, ai-governance, auditability, eu-ai-act, OpenTelemetry, reproducibility"},{"@type":"BreadcrumbList","@id":"https:\/\/www.dobryakov.net\/blog\/176\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/www.dobryakov.net\/blog#listItem","position":1,"name":"Home","item":"https:\/\/www.dobryakov.net\/blog","nextItem":{"@type":"ListItem","@id":"https:\/\/www.dobryakov.net\/blog\/category\/ai-governance\/#listItem","name":"AI Governance"}},{"@type":"ListItem","@id":"https:\/\/www.dobryakov.net\/blog\/category\/ai-governance\/#listItem","position":2,"name":"AI Governance","item":"https:\/\/www.dobryakov.net\/blog\/category\/ai-governance\/","nextItem":{"@type":"ListItem","@id":"https:\/\/www.dobryakov.net\/blog\/176\/#listItem","name":"Auditability &#038; Reproducibility: How to Prove to a Regulator What Your AI Actually Did"},"previousItem":{"@type":"ListItem","@id":"https:\/\/www.dobryakov.net\/blog#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/www.dobryakov.net\/blog\/176\/#listItem","position":3,"name":"Auditability &#038; Reproducibility: How to Prove to a Regulator What Your AI Actually Did","previousItem":{"@type":"ListItem","@id":"https:\/\/www.dobryakov.net\/blog\/category\/ai-governance\/#listItem","name":"AI Governance"}}]},{"@type":"Organization","@id":"https:\/\/www.dobryakov.net\/blog\/#organization","name":"Grigoriy Dobryakov - IT+AI Blog","description":"Grigoriy Dobryakov's blog: management, development and testing","url":"https:\/\/www.dobryakov.net\/blog\/"},{"@type":"WebPage","@id":"https:\/\/www.dobryakov.net\/blog\/176\/#webpage","url":"https:\/\/www.dobryakov.net\/blog\/176\/","name":"AI Auditability: Tracing Every Decision for Regulators","description":"Build an immutable AI trace log with OpenTelemetry GenAI SemConv. Prove to regulators what your AI decided, why, and with which data.","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/www.dobryakov.net\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/www.dobryakov.net\/blog\/176\/#breadcrumblist"},"author":{"@id":"https:\/\/www.dobryakov.net\/blog\/author\/#author"},"creator":{"@id":"https:\/\/www.dobryakov.net\/blog\/author\/#author"},"image":{"@type":"ImageObject","url":"https:\/\/www.dobryakov.net\/blog\/wp-content\/uploads\/2026\/09\/ai-governance-auditability.jpg","@id":"https:\/\/www.dobryakov.net\/blog\/176\/#mainImage","width":1200,"height":630,"caption":"Auditability & Reproducibility: How to Prove to a Regulator What Your AI Actually Did"},"primaryImageOfPage":{"@id":"https:\/\/www.dobryakov.net\/blog\/176\/#mainImage"},"datePublished":"2026-09-20T08:00:22+00:00","dateModified":"2026-09-20T08:00:22+00:00"},{"@type":"WebSite","@id":"https:\/\/www.dobryakov.net\/blog\/#website","url":"https:\/\/www.dobryakov.net\/blog\/","name":"Grigoriy Dobryakov - IT+AI Blog","description":"Grigoriy Dobryakov's blog: management, development and testing","inLanguage":"en-US","publisher":{"@id":"https:\/\/www.dobryakov.net\/blog\/#organization"}}]},"og:locale":"en_US","og:site_name":"Grigoriy Dobryakov - IT+AI Blog - Grigoriy Dobryakov's blog: management, development and testing","og:type":"article","og:title":"AI Auditability: Tracing Every Decision for Regulators","og:description":"Build an immutable AI trace log with OpenTelemetry GenAI SemConv. Prove to regulators what your AI decided, why, and with which data.","og:url":"https:\/\/www.dobryakov.net\/blog\/176\/","article:published_time":"2026-09-20T08:00:22+00:00","article:modified_time":"2026-09-20T08:00:22+00:00","twitter:card":"summary_large_image","twitter:title":"AI Auditability: Tracing Every Decision for Regulators","twitter:description":"Build an immutable AI trace log with OpenTelemetry GenAI SemConv. Prove to regulators what your AI decided, why, and with which data."},"aioseo_meta_data":{"post_id":"176","title":"AI Auditability: Tracing Every Decision for Regulators","description":"Build an immutable AI trace log with OpenTelemetry GenAI SemConv. Prove to regulators what your AI decided, why, and with which data.","keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":"AI Auditability: Tracing Every Decision for Regulators","og_description":"Build an immutable AI trace log with OpenTelemetry GenAI SemConv. Prove to regulators what your AI decided, why, and with which data.","og_object_type":"default","og_image_type":"default","og_image_custom_url":null,"og_image_custom_fields":null,"og_image_url":null,"og_image_width":null,"og_image_height":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_image_url":null,"twitter_title":"AI Auditability: Tracing Every Decision for Regulators","twitter_description":"Build an immutable AI trace log with OpenTelemetry GenAI SemConv. Prove to regulators what your AI decided, why, and with which data.","schema_type":"default","schema_type_options":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"limit_modified_date":false,"ai":null,"breadcrumb_settings":null,"seo_analyzer_scan_date":null,"created":"2026-09-20 08:00:40","updated":"2026-09-20 08:00:40"},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/www.dobryakov.net\/blog\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/www.dobryakov.net\/blog\/category\/ai-governance\/\" title=\"AI Governance\">AI Governance<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tAuditability &amp; Reproducibility: How to Prove to a Regulator What Your AI Actually Did\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/www.dobryakov.net\/blog"},{"label":"AI Governance","link":"https:\/\/www.dobryakov.net\/blog\/category\/ai-governance\/"},{"label":"Auditability &#038; Reproducibility: How to Prove to a Regulator What Your AI Actually Did","link":"https:\/\/www.dobryakov.net\/blog\/176\/"}],"_links":{"self":[{"href":"https:\/\/www.dobryakov.net\/blog\/wp-json\/wp\/v2\/posts\/176","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dobryakov.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dobryakov.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dobryakov.net\/blog\/wp-json\/wp\/v2\/comments?post=176"}],"version-history":[{"count":0,"href":"https:\/\/www.dobryakov.net\/blog\/wp-json\/wp\/v2\/posts\/176\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dobryakov.net\/blog\/wp-json\/wp\/v2\/media\/175"}],"wp:attachment":[{"href":"https:\/\/www.dobryakov.net\/blog\/wp-json\/wp\/v2\/media?parent=176"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dobryakov.net\/blog\/wp-json\/wp\/v2\/categories?post=176"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dobryakov.net\/blog\/wp-json\/wp\/v2\/tags?post=176"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}