<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[Compliance Evidence Automation | CodeYourCompliance]]></title><description><![CDATA[CodeYourCompliance explores compliance automation, replayable audit evidence, read-only evidence collection, policy-as-code, and evidence packages.]]></description><link>https://www.codeyourcompliance.com</link><image><url>https://substackcdn.com/image/fetch/$s_!yIEc!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5cabd34-4bcf-4182-8a08-961d2b665a8d_1254x1254.png</url><title>Compliance Evidence Automation | CodeYourCompliance</title><link>https://www.codeyourcompliance.com</link></image><generator>Substack</generator><lastBuildDate>Thu, 18 Jun 2026 10:05:28 GMT</lastBuildDate><atom:link href="https://www.codeyourcompliance.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[CodeYourCompliance]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[codeyourcompliance@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[codeyourcompliance@substack.com]]></itunes:email><itunes:name><![CDATA[www.codeyourcompliance.com]]></itunes:name></itunes:owner><itunes:author><![CDATA[www.codeyourcompliance.com]]></itunes:author><googleplay:owner><![CDATA[codeyourcompliance@substack.com]]></googleplay:owner><googleplay:email><![CDATA[codeyourcompliance@substack.com]]></googleplay:email><googleplay:author><![CDATA[www.codeyourcompliance.com]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[A Generated Report Is Not an Accountable Audit Conclusion]]></title><description><![CDATA[Evidence processing is not evidence judgment. AI can support the work, but the reviewer owns the conclusion.]]></description><link>https://www.codeyourcompliance.com/p/a-generated-report-is-not-an-accountable</link><guid isPermaLink="false">https://www.codeyourcompliance.com/p/a-generated-report-is-not-an-accountable</guid><dc:creator><![CDATA[CodeYourCompliance]]></dc:creator><pubDate>Mon, 15 Jun 2026 05:45:30 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/fa24b961-0600-492a-b006-e357247dcb5b_1731x909.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>A team uploads access exports, screenshots, policy PDFs, and control notes into an AI-assisted GRC tool.</p><p>The tool maps controls.</p><p>It summarizes gaps.</p><p>It drafts findings.</p><p>It produces a clean report.</p><p>Then the reviewer asks one question:</p><p>Who concluded that the control was operating?</p><p>The report cannot answer that by itself.</p><p>That is the failure mode.</p><p>A generated report is not an accountable audit conclusion.</p><p>It may be useful.</p><p>It may reduce drafting work.</p><p>It may make the review file easier to read.</p><p>But it does not automatically prove that evidence was valid, interpreted correctly, reviewed under the right standard, and accepted by a responsible reviewer.</p><p>That is the boundary.</p><h2>Evidence processing is not evidence judgment</h2><p>AI can support audit work.</p><p>It can collect records.</p><p>It can map controls.</p><p>It can compare evidence.</p><p>It can summarize exceptions.</p><p>It can draft findings.</p><p>None of that is the problem.</p><p>The problem starts when evidence processing is mistaken for evidence judgment.</p><p><mark data-color="#ffff00" style="background-color: rgb(255, 255, 0); color: rgb(0, 0, 0);">Evidence processing</mark> asks:</p><div class="callout-block" data-callout="true"><p>What does this artifact say?</p><p>What control might it relate to?</p><p>What fields are missing?</p><p>What exception appears?</p></div><p><mark data-color="#ffff00" style="background-color: rgb(255, 255, 0); color: rgb(0, 0, 0);">Evidence judgment</mark> asks:</p><div class="callout-block" data-callout="true"><p>Is this evidence valid?</p><p>Is it complete enough for this control?</p><p>Was it collected from the right source?</p><p>Was it current at the review date?</p><p>Does it meet the acceptance standard?</p><p>Who accepts the conclusion?</p></div><p>Those are different acts.</p><p>The tool can assist the first.</p><p>It should not silently inherit the second.</p><h2>MAS TRM-inspired does not mean audit automation</h2><p>CodeYourCompliance uses MAS TRM-inspired engineering language.</p><p>That does not mean MAS TRM prescribes this implementation.</p><p>It does not mean the output is legal, regulatory, audit, or certification advice.</p><p>The point is narrower.</p><p>MAS TRM-style control thinking gives a useful engineering structure:</p><div class="callout-block" data-callout="true"><p><mark data-color="#fce5cd" style="background-color: rgb(252, 229, 205); color: rgb(0, 0, 0);">control objective</mark></p><p><mark data-color="#fce5cd" style="background-color: rgb(252, 229, 205); color: rgb(0, 0, 0);">evidence requirement</mark></p><p><mark data-color="#fce5cd" style="background-color: rgb(252, 229, 205); color: rgb(0, 0, 0);">source system</mark></p><p><mark data-color="#fce5cd" style="background-color: rgb(252, 229, 205); color: rgb(0, 0, 0);">collector metadata</mark></p><p><mark data-color="#fce5cd" style="background-color: rgb(252, 229, 205); color: rgb(0, 0, 0);">timestamp</mark></p><p><mark data-color="#fce5cd" style="background-color: rgb(252, 229, 205); color: rgb(0, 0, 0);">integrity reference</mark></p><p><mark data-color="#fce5cd" style="background-color: rgb(252, 229, 205); color: rgb(0, 0, 0);">policy evaluation</mark></p><p><mark data-color="#fce5cd" style="background-color: rgb(252, 229, 205); color: rgb(0, 0, 0);">review narrative</mark></p></div><p>That structure prevents one common failure.</p><p>A report says the control passed.</p><p>But the evidence object cannot show what was collected, when it was collected, from where, by what collector, under which schema, and against which acceptance standard.</p><p>That is not a writing problem.</p><p>That is an evidence architecture problem.</p><h2>A report is narrative</h2><p>A report is narrative.</p><p>Evidence is proof material.</p><p>A control is not proven because a paragraph says it was satisfied.</p><p>A control is supported when the underlying evidence can survive review.</p><p>A minimal evidence object should preserve:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;json&quot;,&quot;nodeId&quot;:&quot;5a13098f-fb74-4de7-8cbb-149a0a26556f&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-json">evidence_id: ev-2026-001
control_id: access-review-001
source_system: identity_platform
collector_type: read_only_export
collected_at: 2026-06-13T09:20:00Z
artifact_type: access_export
artifact_hash: sha256:...
schema_version: evidence.v1
policy_version: access_review_policy.v1
evaluation_result: pass | fail | manual_review | invalid_evidence
review_status: pending | accepted | rejected
</code></pre></div><p>This does not make the conclusion automatic.</p><p>It makes the conclusion reviewable.</p><p>The report can explain the finding.</p><p>The evidence package should show:</p><div class="callout-block" data-callout="true"><p><mark data-color="#fce5cd" style="background-color: rgb(252, 229, 205); color: rgb(0, 0, 0);">what was collected</mark></p><p><mark data-color="#fce5cd" style="background-color: rgb(252, 229, 205); color: rgb(0, 0, 0);">where it came from</mark></p><p><mark data-color="#fce5cd" style="background-color: rgb(252, 229, 205); color: rgb(0, 0, 0);">when it was collected</mark></p><p><mark data-color="#fce5cd" style="background-color: rgb(252, 229, 205); color: rgb(0, 0, 0);">whether the artifact changed</mark></p><p><mark data-color="#fce5cd" style="background-color: rgb(252, 229, 205); color: rgb(0, 0, 0);">which policy evaluated it</mark></p><p><mark data-color="#fce5cd" style="background-color: rgb(252, 229, 205); color: rgb(0, 0, 0);">who accepted the result</mark></p><p><mark data-color="#fce5cd" style="background-color: rgb(252, 229, 205); color: rgb(0, 0, 0);">what exceptions remained</mark></p></div><p>Reports persuade.</p><p>Evidence survives.</p><h2>The reviewer still owns the conclusion</h2><p>AI-assisted audit work can make weak review files look strong.</p><p>The report may sound complete.</p><p>The finding may sound precise.</p><p>The control mapping may look convincing.</p><p>But if no accountable reviewer has accepted the evidence, the conclusion is not anchored.</p><p>The review file should separate five layers:</p><div class="callout-block" data-callout="true"><p><mark data-color="#fce5cd" style="background-color: rgb(252, 229, 205); color: rgb(0, 0, 0);">evidence source</mark></p><p><mark data-color="#fce5cd" style="background-color: rgb(252, 229, 205); color: rgb(0, 0, 0);">evidence processing</mark></p><p><mark data-color="#fce5cd" style="background-color: rgb(252, 229, 205); color: rgb(0, 0, 0);">evidence interpretation</mark></p><p><mark data-color="#fce5cd" style="background-color: rgb(252, 229, 205); color: rgb(0, 0, 0);">review note</mark></p><p><mark data-color="#fce5cd" style="background-color: rgb(252, 229, 205); color: rgb(0, 0, 0);">accountable conclusion</mark></p></div><p>Do not collapse them.</p><p>A collector collects.</p><p>A policy evaluates.</p><p>A model summarizes.</p><p>A reviewer concludes.</p><p>A report narrates.</p><p>Each layer has a different job.</p><p>If the model invents certainty, the narrative becomes dangerous.</p><p>If the reviewer does not accept the conclusion, the report is only a draft.</p><h2>Invalid evidence is not a failed control</h2><p>A generated report often hides another problem.</p><p>It treats every bad artifact as a bad control.</p><p>That is wrong.</p><p><mark data-color="#fce5cd" style="background-color: rgb(252, 229, 205); color: rgb(0, 0, 0);">Invalid evidence is not the same as control failure.</mark></p><p>Example:</p><blockquote><p><em>Control</em>: privileged access must be reviewed quarterly.</p><p><em>Artifact</em>: screenshot of admin users.</p><p><em>Problem</em>: screenshot has no export timestamp, no source binding, no hash, and no review-period marker.</p></blockquote><p>The correct result is not automatically:</p><div class="callout-block" data-callout="true"><p>control failed</p></div><p>The correct result may be:</p><div class="callout-block" data-callout="true"><p>invalid_evidence</p></div><p><mark data-color="#fce5cd" style="background-color: rgb(252, 229, 205); color: rgb(0, 0, 0);">A control failure says the system state did not meet the control requirement.</mark></p><p><mark data-color="#fce5cd" style="background-color: rgb(252, 229, 205); color: rgb(0, 0, 0);">Invalid evidence says the artifact cannot prove the system state.</mark></p><p>Those are different findings.</p><p>If evidence is invalid, the report should not pretend to know the control outcome.</p><p>It should say:</p><div class="callout-block" data-callout="true"><p>The submitted artifact does not support a control conclusion.</p><p>Additional source-bound evidence is required.</p></div><p>That is not softer.</p><p>It is more precise.</p><h2>The report comes late</h2><p>A useful compliance automation pipeline should not start by drafting the final report.</p><p>It should start by preserving the evidence path.</p><div class="callout-block" data-callout="true"><p><mark data-color="#fce5cd" style="background-color: rgb(252, 229, 205); color: rgb(0, 0, 0);">read-only collection</mark></p><p><mark data-color="#fce5cd" style="background-color: rgb(252, 229, 205); color: rgb(0, 0, 0);">evidence object creation</mark></p><p><mark data-color="#fce5cd" style="background-color: rgb(252, 229, 205); color: rgb(0, 0, 0);">integrity hash</mark></p><p><mark data-color="#fce5cd" style="background-color: rgb(252, 229, 205); color: rgb(0, 0, 0);">schema validation</mark></p><p><mark data-color="#fce5cd" style="background-color: rgb(252, 229, 205); color: rgb(0, 0, 0);">policy evaluation</mark></p><p><mark data-color="#fce5cd" style="background-color: rgb(252, 229, 205); color: rgb(0, 0, 0);">exception classification</mark></p><p><mark data-color="#fce5cd" style="background-color: rgb(252, 229, 205); color: rgb(0, 0, 0);">reviewer acceptance</mark></p><p><mark data-color="#fce5cd" style="background-color: rgb(252, 229, 205); color: rgb(0, 0, 0);">audit narrative generation</mark></p><p><mark data-color="#fce5cd" style="background-color: rgb(252, 229, 205); color: rgb(0, 0, 0);">evidence package export</mark></p></div><p>The report comes late.</p><p>The evidence comes first.</p><p>If the report is generated before evidence quality is known, the system produces confidence before proof.</p><p>If the evidence object is weak, the narrative should remain weak.</p><p>If the policy evaluation returns <code>manual_review</code>, the report should not say <code>pass</code>.</p><p>If the artifact hash changes, the evidence package should flag mutation.</p><p>If collector metadata is missing, the evidence should be downgraded.</p><p>The tool is not the point.</p><p>The audit structure is the point.</p><h2>A better generated report</h2><p>A weak generated report says:</p><div class="callout-block" data-callout="true"><p>The access review control is operating effectively.</p></div><p>A better report says:</p><div class="callout-block" data-callout="true"><p>Evidence was collected from the identity platform using a read-only export on 2026-06-13.</p><p>The export hash is recorded in the evidence package.</p><p>The evidence was evaluated against access_review_policy.v1.</p><p>The policy result found no privileged users outside the approved group list.</p><p>The review conclusion remains pending until accepted by the responsible reviewer.</p></div><p>This is less polished.</p><p>It is more honest.</p><p>It separates machine evaluation from human conclusion.</p><p>It separates evidence from narrative.</p><p>It separates control support from final acceptance.</p><div><hr></div><h2>Origin</h2><p><em>CodeYourCompliance</em><br><br>Website: <a href="https://www.codeyourcompliance.com">https://www.codeyourcompliance.com</a><br>GitHub: <a href="https://github.com/codeyourcompliance">https://github.com/codeyourcompliance</a></p><p><em>Attribution is requested for forks, references, adaptations, and discussions.</em></p><h2>Scope Boundary</h2><p>MAS TRM-inspired means engineering interpretation.</p><p>This is not legal, regulatory, audit, certification, compliance, or implementation advice.</p><h2>Related Reading</h2><ul><li><p><a href="https://www.codeyourcompliance.com/p/a-screenshot-is-a-supporting-artifact">A Screenshot Is a Supporting Artifact, Not a Proof Object</a></p></li><li><p><a href="https://www.codeyourcompliance.com/p/what-a-mas-trm-checklist-cannot-prove">What a MAS TRM Checklist Cannot Prove</a></p></li><li><p><a href="https://www.codeyourcompliance.com/p/can-your-audit-evidence-survive-replay">Can Your Audit Evidence Survive Replay?</a></p></li><li><p><a href="https://www.codeyourcompliance.com/p/compliance-automation-starts-at-evidence">Compliance Automation Starts at Evidence</a></p></li></ul>]]></content:encoded></item><item><title><![CDATA[Vendor Says It Does Not Train on Your Data. What Evidence Should You Ask For?]]></title><description><![CDATA[A no-training claim may be true and useful, but it is not evidence-complete. AI vendor review still needs evidence on retention, logging, support access, subprocessors, model providers, deletion, audit logs, tenant settings, and contract scope.]]></description><link>https://www.codeyourcompliance.com/p/vendor-says-it-does-not-train-on</link><guid isPermaLink="false">https://www.codeyourcompliance.com/p/vendor-says-it-does-not-train-on</guid><dc:creator><![CDATA[CodeYourCompliance]]></dc:creator><pubDate>Thu, 04 Jun 2026 02:36:22 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/39ebd638-20b3-4687-85bf-994cb89f3735_2173x724.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2>Positioning</h2><p>Vendor claim is not evidence.</p><p>&#8220;We do not train on your data&#8221; is one of the most common AI vendor statements. It is also one of the easiest to over-credit.</p><p>The claim may be true. It may be helpful. It may even appear in a contract.</p><p>But by itself, it is not evidence-complete.</p><p>Training is only one possible use of customer data. The real review question is:</p><div class="callout-block" data-callout="true"><p><mark data-color="#ffff00" style="background-color: rgb(255, 255, 0); color: rgb(0, 0, 0);">After customer data enters the AI product, what happens to it?</mark></p></div><p>That means looking past the slogan and asking about retention, logging, review workflows, support access, metadata, subprocessors, model providers, deletion, audit logs, tenant settings, and contract scope.</p><h2>Claim</h2><div class="callout-block" data-callout="true"><p><mark data-color="#ffff00" style="background-color: rgb(255, 255, 0); color: rgb(0, 0, 0);">We do not train on your data.</mark></p></div><p>Or:</p><div class="callout-block" data-callout="true"><p><mark data-color="#ffff00" style="background-color: rgb(255, 255, 0); color: rgb(0, 0, 0);">Customer data is not used to train our models.</mark></p></div><p>Or:</p><div class="callout-block" data-callout="true"><p><mark data-color="#ffff00" style="background-color: rgb(255, 255, 0); color: rgb(0, 0, 0);">Your prompts and outputs are not used for model training.</mark></p></div><p>These statements sound clear. They are not all the same.</p><p>One may cover customer content. Another may cover prompts and outputs only. Another may cover training, but say nothing about logs, telemetry, evaluation, support access, or product improvement.</p><p>The exact wording matters.</p><p>So does the source.</p><p>A public FAQ is not the same as a customer contract. A product page is not the same as a data processing addendum (DPA). A trust center statement is not the same as tenant-level evidence.</p><h2>Why it sounds sufficient</h2><p>It answers the question most buyers have been trained to ask:</p><div class="callout-block" data-callout="true"><p><mark data-color="#ffff00" style="background-color: rgb(255, 255, 0); color: rgb(0, 0, 0);">Will the vendor use my data to train its model?</mark></p></div><p>That is a real concern. If proprietary or sensitive data can be used for model training, the buyer has a serious problem.</p><p>So when the vendor says no, it feels like the main issue is closed.</p><p>That is where reviews go off track.</p><p>The claim addresses one use. It does not explain the operational data path. A vendor may not train on customer data and still retain prompts, keep logs, allow support review, or send data through model providers and subprocessors.</p><h2>What the claim can support</h2><p>A no-training statement can support a narrow point:</p><div class="callout-block" data-callout="true"><p><mark data-color="#ffff00" style="background-color: rgb(255, 255, 0); color: rgb(0, 0, 0);">The vendor says customer data is not used to train models.</mark></p></div><p>That is useful. It is just not enough.</p><p>The strength depends on where it appears. A contract or product-specific term is stronger than a marketing page. A signed response is stronger than a generic FAQ.</p><p>It is also only as good as its scope. If the statement does not define the covered data, product, plan, exceptions, and document source, it remains incomplete.</p><p>At minimum, the buyer should be able to answer:</p><div class="callout-block" data-callout="true"><p><mark data-color="#ffff00" style="background-color: rgb(255, 255, 0); color: rgb(0, 0, 0);">What data is covered?</mark></p><p><mark data-color="#ffff00" style="background-color: rgb(255, 255, 0); color: rgb(0, 0, 0);">Which product and plan are covered?</mark></p><p><mark data-color="#ffff00" style="background-color: rgb(255, 255, 0); color: rgb(0, 0, 0);">Which uses are excluded?</mark></p><p><mark data-color="#ffff00" style="background-color: rgb(255, 255, 0); color: rgb(0, 0, 0);">Where is the commitment written?</mark></p></div><p>Without that, the claim is reassuring but thin.</p><h2>What it does not prove</h2><p><mark data-color="#ffff00" style="background-color: rgb(255, 255, 0); color: rgb(0, 0, 0);">A no-training claim does not automatically prove:</mark></p><ul><li><p><mark data-color="#ffff00" style="background-color: rgb(255, 255, 0); color: rgb(0, 0, 0);">prompt retention period</mark></p></li><li><p><mark data-color="#ffff00" style="background-color: rgb(255, 255, 0); color: rgb(0, 0, 0);">logging and telemetry scope</mark></p></li><li><p><mark data-color="#ffff00" style="background-color: rgb(255, 255, 0); color: rgb(0, 0, 0);">review and support access boundaries</mark></p></li><li><p><mark data-color="#ffff00" style="background-color: rgb(255, 255, 0); color: rgb(0, 0, 0);">metadata handling</mark></p></li><li><p><mark data-color="#ffff00" style="background-color: rgb(255, 255, 0); color: rgb(0, 0, 0);">support access boundary</mark></p></li><li><p><mark data-color="#ffff00" style="background-color: rgb(255, 255, 0); color: rgb(0, 0, 0);">subprocessor data path</mark></p></li><li><p><mark data-color="#ffff00" style="background-color: rgb(255, 255, 0); color: rgb(0, 0, 0);">model provider data path</mark></p></li><li><p><mark data-color="#ffff00" style="background-color: rgb(255, 255, 0); color: rgb(0, 0, 0);">deletion controls</mark></p></li><li><p><mark data-color="#ffff00" style="background-color: rgb(255, 255, 0); color: rgb(0, 0, 0);">audit log availability</mark></p></li><li><p><mark data-color="#ffff00" style="background-color: rgb(255, 255, 0); color: rgb(0, 0, 0);">tenant setting defaults</mark></p></li><li><p><mark data-color="#ffff00" style="background-color: rgb(255, 255, 0); color: rgb(0, 0, 0);">customer-specific contract coverage</mark></p></li></ul><p>That is the gap. The vendor answered training use. The buyer still does not know the full data path.</p><h2>Weak-answer pattern</h2><p>The weak-answer pattern is a narrow promise presented as if it closed the review.</p><p>The vendor says:</p><div class="callout-block" data-callout="true"><p><mark data-color="#ffff00" style="background-color: rgb(255, 255, 0); color: rgb(0, 0, 0);">We do not train on customer data.</mark></p></div><p>But the answer does not address the rest of the path:</p><div class="callout-block" data-callout="true"><p><mark data-color="#ffff00" style="background-color: rgb(255, 255, 0); color: rgb(0, 0, 0);">logging</mark></p><p><mark data-color="#ffff00" style="background-color: rgb(255, 255, 0); color: rgb(0, 0, 0);">retention</mark></p><p><mark data-color="#ffff00" style="background-color: rgb(255, 255, 0); color: rgb(0, 0, 0);">review workflows</mark></p><p><mark data-color="#ffff00" style="background-color: rgb(255, 255, 0); color: rgb(0, 0, 0);">support access</mark></p><p><mark data-color="#ffff00" style="background-color: rgb(255, 255, 0); color: rgb(0, 0, 0);">metadata</mark></p><p><mark data-color="#ffff00" style="background-color: rgb(255, 255, 0); color: rgb(0, 0, 0);">subprocessors</mark></p><p><mark data-color="#ffff00" style="background-color: rgb(255, 255, 0); color: rgb(0, 0, 0);">model providers</mark></p><p><mark data-color="#ffff00" style="background-color: rgb(255, 255, 0); color: rgb(0, 0, 0);">deletion</mark></p></div><p>The statement may be true. It is still too narrow. A strong answer maps the claim to data categories, retention, third parties, customer controls, and contract scope.</p><h2>Evidence request</h2><p>Do not ask the vendor to restate the slogan. Ask for evidence that maps the claim to actual handling:</p><div class="callout-block" data-callout="true"><p><mark data-color="#fce5cd" style="background-color: rgb(252, 229, 205); color: rgb(0, 0, 0);">Please provide the product-specific data flow for prompts, outputs, files, logs, metadata, diagnostic data, support access, subprocessors, and model providers.</mark></p><p><mark data-color="#fce5cd" style="background-color: rgb(252, 229, 205); color: rgb(0, 0, 0);">For each data category, identify retention period, access roles, third-party processing, customer controls, deletion options, and the contractual or administrative source for the commitment.</mark></p></div><p>That is a much better question than &#8220;do you train on our data?&#8221;</p><h2><strong>Review note</strong></h2><p>Usable review language:</p><div class="callout-block" data-callout="true"><p><mark data-color="#fce5cd" style="background-color: rgb(252, 229, 205); color: rgb(0, 0, 0);">The vendor states that customer data is not used for model training. This is useful but not evidence-complete. The statement addresses training use only. It does not by itself establish retention, logging, review workflows, support access, subprocessor handling, model provider routing, deletion controls, audit-log coverage, tenant settings, or customer-specific contract scope.</mark></p><p><mark data-color="#fce5cd" style="background-color: rgb(252, 229, 205); color: rgb(0, 0, 0);">Additional evidence is needed before relying on this claim for sensitive data use.</mark></p></div><p>That note records the evidence gap without pretending the claim proves more than it does.</p><h2>Usage boundary</h2><p>Until the missing evidence is resolved, keep the usage boundary narrow:</p><div class="callout-block" data-callout="true"><p><mark data-color="#fce5cd" style="background-color: rgb(252, 229, 205); color: rgb(0, 0, 0);">low-sensitivity workflows. Do not use the product for customer data, regulated data, confidential source code, or workflows that require prompt-level auditability.</mark></p></div><p>That is not approval or rejection. It is a review boundary.</p><h2>Bottom line</h2><p>&#8220;We do not train on your data&#8221; may be true. It may be useful.</p><p>It is still not the review.</p><p>The buyer still needs to know what enters the product, where it goes, how long it stays, who can access it, which third parties touch it, what can be deleted, what can be audited, and which commitments actually apply to the buyer&#8217;s product, plan, tenant, and contract.</p><p>Vendor claim is not evidence.</p><p>The work is turning a narrow public claim into a mapped evidence request, a usable review note, and a conservative usage boundary.</p><p>This is part of the <a href="https://www.codeyourcompliance.com/p/start-here-ai-vendor-risk-pack">AI Vendor Evidence Gap Pack series</a>: vendor claim &#8594; evidence source &#8594; evidence gap &#8594; buyer question &#8594; usage boundary.</p><h2>Boundary</h2><p>This article is for evidence structuring and review preparation.</p><p>It does not provide legal, regulatory, audit, procurement, certification, or implementation advice.</p><p>Examples are illustrative unless separately validated for a specific organization and use case.</p>]]></content:encoded></item><item><title><![CDATA[AI Vendor Risk Is Not a Questionnaire Problem]]></title><description><![CDATA[A vendor can answer every question and still leave the buyer without usable evidence.]]></description><link>https://www.codeyourcompliance.com/p/ai-vendor-risk-is-not-a-questionnaire</link><guid isPermaLink="false">https://www.codeyourcompliance.com/p/ai-vendor-risk-is-not-a-questionnaire</guid><dc:creator><![CDATA[CodeYourCompliance]]></dc:creator><pubDate>Mon, 01 Jun 2026 16:13:56 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!yIEc!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5cabd34-4bcf-4182-8a08-961d2b665a8d_1254x1254.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>AI vendor risk is not a questionnaire problem.</p><p>The problem is not that teams lack questions. The problem is that vendor answers are not converted into evidence requests, weak-answer patterns, red flags, and residual risk language.</p><h2>Opening direction</h2><p>Most AI vendor reviews start with a questionnaire.</p><p>That is reasonable. Questionnaires create structure. They force vendors to answer in writing. They give procurement, security, legal, risk, and audit teams a shared object to review.</p><p>But the questionnaire is not the control.</p><p>A vendor can answer every question and still leave the buyer with little usable evidence.</p><p>The gap appears after the answer arrives.</p><p>The vendor says:</p><blockquote><p>We do not train on your data.</p></blockquote><p>The review question should not stop there.</p><p>It should ask:</p><blockquote><p>What does training mean?</p><p>Does that include fine-tuning?</p><p>Does that include evaluation?</p><p>Does that include abuse monitoring?</p><p>Does that include support review?</p><p>What is retained?</p><p>What is logged?</p><p>Which subprocessors touch the data?</p><p>Can the customer export evidence later?</p></blockquote><p>The claim may be true. But it is not yet evidence-complete.</p><h2>Core argument</h2><p>A questionnaire collects vendor statements.</p><p>An evidence review converts those statements into reviewable objects.</p><p>Those objects include:</p><ul><li><p>evidence requests</p></li><li><p>weak-answer patterns</p></li><li><p>red flags</p></li><li><p>review notes</p></li><li><p>residual risk language</p></li></ul><p>That conversion step is where many AI vendor reviews are weakest.</p><h2>Why AI vendors make this harder</h2><p>Traditional vendor risk templates were built for more stable control surfaces.</p><p>They work reasonably well for questions about:</p><ul><li><p>access control</p></li><li><p>encryption</p></li><li><p>incident notification</p></li><li><p>business continuity</p></li><li><p>SOC 2 availability</p></li><li><p>subprocessors</p></li><li><p>data processing terms</p></li></ul><p>AI vendors add new ambiguity.</p><p>The ambiguity is not always in the security layer. It is often in the behavior layer.</p><p>Examples:</p><ul><li><p>What data enters the model context?</p></li><li><p>What data is retained in logs?</p></li><li><p>What data is used for evaluation?</p></li><li><p>What changes when the model version changes?</p></li><li><p>Can the customer identify which model produced a prior output?</p></li><li><p>What actions can an AI agent take?</p></li><li><p>What approvals exist before an external action is triggered?</p></li><li><p>Can logs be exported for audit or incident reconstruction?</p></li></ul><p>A generic questionnaire can ask about these issues, but the harder work is deciding whether the answer is evidence-complete.</p><h2>Example: polished answer, weak evidence</h2><p>Vendor answer:</p><blockquote><p>We use industry-leading safeguards to ensure customer data is protected and is not used to train our models.</p></blockquote><p>This answer sounds reassuring.</p><p>But as evidence it is weak unless it is supported by:</p><ul><li><p>contractual language</p></li><li><p>retention periods</p></li><li><p>logging scope</p></li><li><p>support access boundaries</p></li><li><p>subprocessor handling</p></li><li><p>opt-out configuration</p></li><li><p>evaluation and fine-tuning scope</p></li><li><p>exportable records</p></li></ul><p>The issue is not whether the vendor is bad.</p><p>The issue is whether the buyer can rely on the claim later.</p><h2>The review shift</h2><p>The review should move from:</p><blockquote><p>Did the vendor answer the question?</p></blockquote><p>To:</p><blockquote><p>Can the vendor answer be preserved as evidence?</p></blockquote><p>And then:</p><blockquote><p>If the evidence is weak, what residual risk language should appear in the review file?</p></blockquote><h2>What AI Vendor Risk Pack is trying to do</h2><p>AI Vendor Risk Pack is a practical attempt to make that conversion easier.</p><p>It starts with common vendor claims and asks:</p><blockquote><p>What evidence should be requested?</p><p>What answer would be weak?</p><p>What should be treated as a red flag?</p><p>What review note should be preserved?</p><p>What residual risk language might be needed?</p></blockquote><p>It is not a certification system.</p><p>It is not a vendor rating.</p><p>It is not legal or audit advice.</p><p>It is a review aid for turning AI vendor claims into evidence-aware risk language.</p><h2>Possible closing</h2><p>The next phase of AI vendor risk will not be won by longer questionnaires.</p><p>It will be won by better evidence conversion.</p><p>The real question is not whether the vendor gave an answer.</p><p>The question is whether the buyer can later explain why that answer was accepted.</p><h2>CTA draft</h2><p>I am building a lightweight AI Vendor Risk Pack under CodeYourCompliance.</p><p>The first version focuses on five domains:</p><ol><li><p>Data use.</p></li><li><p>Model change and governance.</p></li><li><p>Security and logging.</p></li><li><p>Human approval and agent permission.</p></li><li><p>Auditability and evidence export.</p></li></ol><p>The goal is simple:</p><blockquote><p>Turn AI vendor claims into evidence requests, weak-answer patterns, red flags, review notes, and residual risk language.</p></blockquote><p>The next article applies this to the most common AI vendor claim: &#8220;We do not train on your data.&#8221;</p><p>Read next: Vendor Says It Does Not Train on Your Data. What Evidence Should You Ask For?</p>]]></content:encoded></item><item><title><![CDATA[A Screenshot Is a Supporting Artifact, Not a Proof Object]]></title><description><![CDATA[Screenshots can help explain audit evidence. They should not replace it.]]></description><link>https://www.codeyourcompliance.com/p/a-screenshot-is-a-supporting-artifact</link><guid isPermaLink="false">https://www.codeyourcompliance.com/p/a-screenshot-is-a-supporting-artifact</guid><dc:creator><![CDATA[CodeYourCompliance]]></dc:creator><pubDate>Mon, 01 Jun 2026 13:37:40 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!NA7W!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06fc77f5-ee77-453c-b80b-1482c430fb74_1220x832.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>An audit folder contains five screenshots.</p><p>One shows TLS enabled.<br>One shows logging configured.<br>One shows a user access table.<br>One shows a vendor portal confirmation.<br>One shows a dashboard with a green status indicator.</p><p>The folder looks complete.</p><p>Then the reviewer asks a basic question.</p><p>Which screenshot was used for policy evaluation?</p><p>Nobody answers cleanly.</p><p>Another question follows.</p><p>Was the screenshot the evidence, or only supporting context? Was there a source system export behind it? Was it captured before or after remediation? Was it modified? Was it tied to a timestamped evidence object?</p><p>The screenshot still looks useful.</p><p>The proof boundary is unclear.</p><p>That is the failure mode.</p><p><strong>A screenshot can support audit evidence. It should not be treated as the proof object unless it carries the structure needed for replay.</strong></p><p>This is a MAS TRM-inspired engineering note. It is not legal, regulatory, audit, certification, compliance, or implementation advice. MAS TRM is the context. The subject here is evidence structure.</p><h2>Screenshot Is a View</h2><p>A screenshot is a view.</p><p>It is not the system state.</p><p>It captures what appeared on a screen. It may help a reviewer understand what an operator saw. It may support an audit narrative.</p><p>That is valid.</p><p>But a view is not proof.</p><p>A screenshot usually does not prove:</p><ul><li><p>when the system state was observed</p></li><li><p>which source system produced it</p></li><li><p>who or what collected it</p></li><li><p>whether the page was refreshed</p></li><li><p>whether the image changed after capture</p></li><li><p>whether the policy result evaluated the same object</p></li></ul><p>That does not make screenshots useless.</p><p>It makes their role narrower.</p><p>The problem starts when a supporting artifact is asked to do the job of a primary evidence object.</p><h2>Evidence Admissibility Tiers</h2><p>Not all artifacts have the same evidentiary weight.</p><p>A useful audit workflow should separate evidence types before evaluation.</p><div id="datawrapper-iframe" class="datawrapper-wrap outer" data-attrs="{&quot;url&quot;:&quot;https://datawrapper.dwcdn.net/lCXD6/1/&quot;,&quot;thumbnail_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/06fc77f5-ee77-453c-b80b-1482c430fb74_1220x832.png&quot;,&quot;thumbnail_url_full&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0b7f4d3d-dac6-47f3-a8ab-00ebb7c483ab_1220x832.png&quot;,&quot;height&quot;:416,&quot;title&quot;:&quot;Created with Datawrapper&quot;,&quot;description&quot;:&quot;&quot;}" data-component-name="DatawrapperToDOM"><iframe id="iframe-datawrapper" class="datawrapper-iframe" src="https://datawrapper.dwcdn.net/lCXD6/1/" width="730" height="416" frameborder="0" scrolling="no"></iframe><script type="text/javascript">!function(){"use strict";window.addEventListener("message",(function(e){if(void 0!==e.data["datawrapper-height"]){var t=document.querySelectorAll("iframe");for(var a in e.data["datawrapper-height"])for(var r=0;r<t.length;r++){if(t[r].contentWindow===e.source)t[r].style.height=e.data["datawrapper-height"][a]+"px"}}}))}();</script></div><p>This table is the point.</p><p>A screenshot usually belongs in the second tier.</p><p>It can explain the finding.</p><p>It should not become the finding.</p><h2>What the Proof Object Needs</h2><p>For a checklist item such as &#8220;certificate valid,&#8221; a screenshot of a certificate page may show a date.</p><p>But the proof object still needs fields such as:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;json&quot;,&quot;nodeId&quot;:&quot;129c8fb5-cc06-4a53-8943-91c282e69420&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-json">certificate_not_after: "2026-09-01T00:00:00Z"
observed_at: "2026-05-25T10:31:00Z"
source_system: "production-load-balancer"
collector: "tls-cert-collector"
collection_method: "runtime_observation"
integrity_hash: "sha256:..."
policy_result_ref: "policy-results/tls-cert-valid-2026-05-25.json"</code></pre></div><p>A screenshot may sit beside this evidence.</p><p>It should not silently replace it.</p><p>A better model has clear states:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;jsx&quot;,&quot;nodeId&quot;:&quot;e6dd75c5-1fd5-4927-9cb7-8b0aae0e8fad&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-jsx">primary_evidence: machine-verifiable evidence suitable for policy evaluation
supporting_artifact: human-readable context that supports the audit narrative
manual_claim_only: assertion without independent source-bound observation
not_machine_verifiable: artifact usable for human review but not automated evaluation
invalid_evidence: evidence integrity failed or cannot be verified
</code></pre></div><p>These are different audit states.</p><p>Do not collapse them.</p><h2>The Report Should Not Launder Screenshots</h2><p>Compliance reporting automation can make screenshots look stronger than they are.</p><p>It can place them into folders. It can label them by control. It can attach reviewer comments. It can generate a clean audit pack.</p><p>That does not fix the evidence problem.</p><p>A clean report built from weak artifacts is still weak.</p><p>Reports persuade.</p><p>Evidence survives.</p><p>The weak question is:</p><p>&#8220;Do we have a screenshot?&#8221;</p><p>The better question is:</p><p>&#8220;What role does this screenshot play?&#8221;</p><p>If it is primary evidence, it must satisfy the evidence requirement.</p><p>If it is supporting context, say so.</p><p>If it cannot be verified, mark it correctly.</p><p>If it fails integrity checks, do not evaluate the control from it.</p><p>The audit problem is not that screenshots exist.</p><p>The audit problem is when screenshots are treated as proof objects without provenance, timestamp, source system, collector metadata, integrity context, and policy result binding.</p><p>Compliance is not documentation.</p><p><strong>Compliance is replayable, timestamped, verifiable evidence.</strong></p><p><strong>A screenshot is a supporting artifact.</strong></p><p><strong>Evidence is proof material.</strong></p><p><strong>A report is narrative.</strong></p><p><strong>Do not confuse them.</strong></p><div><hr></div><h2>Related Reading</h2><ul><li><p><a href="https://www.codeyourcompliance.com/p/what-a-mas-trm-checklist-cannot-prove">What a MAS TRM Checklist Cannot Prove</a></p></li><li><p><a href="https://www.codeyourcompliance.com/p/can-your-audit-evidence-survive-replay">Can Your Audit Evidence Survive Replay?</a></p></li><li><p><a href="https://www.codeyourcompliance.com/p/compliance-automation-starts-at-evidence">Compliance Automation Starts at Evidence</a></p></li></ul><h2>Origin</h2><p><em>CodeYourCompliance</em><br>Website: <a href="https://www.codeyourcompliance.com/">https://www.codeyourcompliance.com/</a><br>GitHub: <a href="https://github.com/codeyourcompliance">https://github.com/codeyourcompliance</a></p><p><em>Attribution is requested for forks, references, adaptations, and discussions.</em></p><h2>Scope Boundary</h2><p>MAS TRM-inspired means engineering interpretation.</p><p>This is not legal, regulatory, audit, certification, compliance, or implementation advice.</p><h2></h2>]]></content:encoded></item><item><title><![CDATA[What a MAS TRM Checklist Cannot Prove]]></title><description><![CDATA[A completed checklist can organize audit readiness. It cannot prove system state. Proof requires timestamped, source-bound, integrity-checked evidence.]]></description><link>https://www.codeyourcompliance.com/p/what-a-mas-trm-checklist-cannot-prove</link><guid isPermaLink="false">https://www.codeyourcompliance.com/p/what-a-mas-trm-checklist-cannot-prove</guid><dc:creator><![CDATA[CodeYourCompliance]]></dc:creator><pubDate>Mon, 25 May 2026 07:30:52 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/46bae53b-f2a3-4c53-b64c-fefed6e6eb61_1672x941.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>A team completes a MAS TRM checklist.</p><p>Every row is marked complete. The control owner is assigned. Evidence links are attached. A report is prepared. The team looks audit-ready.</p><p>Then a reviewer asks a simple question.</p><p>When was the TLS certificate state observed?</p><p>Nobody answers cleanly.</p><p>Another question follows.</p><p>Who collected it? Which source system did it come from? Was the target system changed during collection? Has the evidence changed since collection? Did the policy result use the same evidence object?</p><p>The checklist still looks complete.</p><p>The proof does not.</p><p>That is the failure mode.</p><p>A MAS TRM checklist can organize compliance work. It cannot by itself prove that a control was true at a specific point in time.</p><p>This is a MAS TRM-inspired engineering note. It is not legal, regulatory, audit, certification, or compliance advice. MAS TRM is the context. The subject here is evidence structure.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!AxfI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd535f419-109f-4bc3-bf74-b77b50193e7d_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!AxfI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd535f419-109f-4bc3-bf74-b77b50193e7d_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!AxfI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd535f419-109f-4bc3-bf74-b77b50193e7d_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!AxfI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd535f419-109f-4bc3-bf74-b77b50193e7d_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!AxfI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd535f419-109f-4bc3-bf74-b77b50193e7d_1672x941.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!AxfI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd535f419-109f-4bc3-bf74-b77b50193e7d_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d535f419-109f-4bc3-bf74-b77b50193e7d_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1312590,&quot;alt&quot;:&quot;Alt text: An infographic showing a completed compliance checklist and narrative report on the left, separated by a broken chain from a structured evidence object on the right. The evidence object includes metadata fields such as observed_at, source_system, collector, collection_method, integrity_hash, and policy_result_ref. A policy result box shows invalid_evidence, illustrating that a completed checklist is not proof without verifiable evidence metadata.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.codeyourcompliance.com/i/199146774?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd535f419-109f-4bc3-bf74-b77b50193e7d_1672x941.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Alt text: An infographic showing a completed compliance checklist and narrative report on the left, separated by a broken chain from a structured evidence object on the right. The evidence object includes metadata fields such as observed_at, source_system, collector, collection_method, integrity_hash, and policy_result_ref. A policy result box shows invalid_evidence, illustrating that a completed checklist is not proof without verifiable evidence metadata." title="Alt text: An infographic showing a completed compliance checklist and narrative report on the left, separated by a broken chain from a structured evidence object on the right. The evidence object includes metadata fields such as observed_at, source_system, collector, collection_method, integrity_hash, and policy_result_ref. A policy result box shows invalid_evidence, illustrating that a completed checklist is not proof without verifiable evidence metadata." srcset="https://substackcdn.com/image/fetch/$s_!AxfI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd535f419-109f-4bc3-bf74-b77b50193e7d_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!AxfI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd535f419-109f-4bc3-bf74-b77b50193e7d_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!AxfI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd535f419-109f-4bc3-bf74-b77b50193e7d_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!AxfI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd535f419-109f-4bc3-bf74-b77b50193e7d_1672x941.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">A completed checklist can still leave the proof chain broken if the evidence object lacks timestamp, source system, collector metadata, integrity hash, and policy result reference.</figcaption></figure></div><h2>Checklist Is Intake</h2><p>A checklist is not evidence.</p><p>A checklist is intake.</p><p>It helps assign owners. It tracks status. It reminds teams what to review. It supports audit readiness by reducing loose ends before a review.</p><p>That is useful.</p><p>But usefulness is not proof.</p><p>A MAS TRM compliance checklist can say:</p><div id="datawrapper-iframe" class="datawrapper-wrap outer" data-attrs="{&quot;url&quot;:&quot;https://datawrapper.dwcdn.net/gfTRk/1/&quot;,&quot;thumbnail_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ae5dd35a-995a-4357-be09-2de5ad18ab26_1220x866.png&quot;,&quot;thumbnail_url_full&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/10383ad4-7a19-441c-8bcc-ed792e6637f6_1220x1174.png&quot;,&quot;height&quot;:885,&quot;title&quot;:&quot;What a MAS TRM Compliance Checklist Can Claim &#8212; And What It Cannot Prove&quot;,&quot;description&quot;:&quot;A checklist can organize audit readiness. It can track status, ownership, and attached files. It cannot prove system state at a specific point in time unless each row maps to timestamped, source-bound evidence requirements.&quot;}" data-component-name="DatawrapperToDOM"><iframe id="iframe-datawrapper" class="datawrapper-iframe" src="https://datawrapper.dwcdn.net/gfTRk/1/" width="730" height="885" frameborder="0" scrolling="no"></iframe><script type="text/javascript">!function(){"use strict";window.addEventListener("message",(function(e){if(void 0!==e.data["datawrapper-height"]){var t=document.querySelectorAll("iframe");for(var a in e.data["datawrapper-height"])for(var r=0;r<t.length;r++){if(t[r].contentWindow===e.source)t[r].style.height=e.data["datawrapper-height"][a]+"px"}}}))}();</script></div><h2>Evidence Needs Provenance</h2><p>The fourth column is the real work.</p><p>A checklist item should map to evidence requirements.</p><p>Without evidence requirements, the checklist becomes a container for weak artifacts. Screenshots. PDF exports. Email confirmations. Manually uploaded spreadsheets. Meeting notes.</p><p>These may help tell the story.</p><p>They do not automatically prove the state.</p><p>Data alone is not evidence.</p><p>Provenance makes it usable.</p><p>For &#8220;TLS certificate valid,&#8221; the evidence requirement should include:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;json&quot;,&quot;nodeId&quot;:&quot;4a1bd6c1-f64f-4b15-be82-fd45539b9d51&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-json">certificate_not_after: "2026-09-01T00:00:00Z"
observed_at: "2026-05-25T10:31:00Z"
source_system: "production-load-balancer"
collector: "tls-cert-collector"
collection_method: "runtime_observation"
integrity_hash: "sha256:..."
policy_result_ref: "policy-results/tls-cert-valid-2026-05-25.json"</code></pre></div><p>Each field has a job.</p><div class="callout-block" data-callout="true"><p><code>observed_at</code> anchors the observation in time.</p><p><code>source_system</code> says where the state came from.</p><p><code>collector</code> identifies the tool or process.</p><p><code>collection_method</code> separates runtime observation from human claim.</p><p><code>integrity_hash</code> helps detect mutation after collection.</p><p><code>policy_result_ref</code> links the result to the evidence object actually evaluated.</p></div><p>This is where compliance automation matters.</p><p>Not because it creates cleaner reports.</p><p>Because it can collect timestamped evidence, attach collector metadata, calculate an integrity hash, and bind a policy result to the same evidence object.</p><p>That is different from manual evidence collection.</p><p>Manual collection often loses context at capture. A screenshot may show a state, but not the command, endpoint, collector, timestamp, or mutation history. A spreadsheet export may show users, but not whether it came from the authoritative identity system. A PDF may show approval, but not whether the reviewed data matches the data used in policy evaluation.</p><p>The audit problem starts earlier than reporting.</p><p>Compliance reporting automation can make weak evidence look orderly.</p><p>It can place files into folders. It can generate summaries. It can produce dashboards.</p><p>That does not solve the proof problem.</p><p>A clean report built from unstable evidence is still unstable.</p><p><strong>Reports persuade.</strong></p><p><strong>Evidence survives.</strong></p><p>The checklist also cannot separate observation from remediation.</p><p>A team observes that logging is disabled. Someone enables logging. The checklist row becomes green. The report says the issue is resolved.</p><blockquote><p>But what is being proven?</p><p>The original observation?</p><p>The remediation action?</p><p>The post-remediation state?</p><p>The approval?</p></blockquote><p>These are separate evidence objects.</p><p>Observation records what was seen.</p><p>Remediation records what was changed.</p><p>Policy evaluation records whether the observed state satisfies the rule.</p><p>Narrative explains the sequence.</p><p>If all of this is compressed into one checklist row, audit clarity is lost.</p><h2>Invalid Evidence Is Not Failure</h2><p>Integrity is another boundary.</p><p>If the evidence hash does not match, the result should not be pass or fail.</p><p>The correct result is <code>invalid_evidence</code>.</p><blockquote><p>A failed control and invalid evidence are different audit states.</p><p>A failed control means the evidence was usable, and the observed state did not satisfy the policy.</p></blockquote><p>Invalid evidence means the evidence itself cannot be relied upon. It may be missing. It may have been modified. It may not match the declared source system. It may be outside the freshness window. It may not be the evidence object used for policy evaluation.</p><p>Treating invalid evidence as failure is imprecise.</p><p>Treating invalid evidence as pass is worse.</p><p><code>invalid_evidence</code> preserves the boundary.</p><p>The control may be fine.</p><p>The evidence may not be.</p><p>A better structure is simple.</p><p>Every checklist item should map to an evidence requirement.</p><p>Every evidence object should carry collection context.</p><p>Every policy result should reference the evidence object it evaluated.</p><p>Every report should narrate from those objects, not replace them.</p><p>This is the engineering interpretation behind CodeYourCompliance.</p><p>Compliance is not documentation.</p><p>Compliance is replayable, timestamped, verifiable evidence.</p><p>A MAS TRM checklist is a useful intake.</p><p>It can organize work. It can improve audit readiness. It can reduce confusion.</p><p>But it cannot prove that a control was true at a specific point in time.</p><p>Checklist is intake.</p><p>Evidence is proof material.</p><p>Report is narrative.</p><p>Do not confuse them.</p><h2>Related Reading</h2><p>This article builds on earlier CodeYourCompliance notes:</p><ul><li><p><a href="https://www.codeyourcompliance.com/p/compliance-automation-starts-at-evidence">Compliance Automation Starts at Evidence.</a><br>Why policy evaluation should only happen after evidence is collected, timestamped, sealed, and verified.</p></li><li><p><a href="https://www.codeyourcompliance.com/p/can-your-audit-evidence-survive-replay">Can Your Audit Evidence Survive Replay?</a><br>A replay test for deciding whether an evidence object can be verified and re-evaluated later.</p></li><li><p><a href="https://www.codeyourcompliance.com/p/read-only-collection-as-an-audit">Read-Only Collection as an Audit Boundary</a><br>Why evidence collection should observe the target system without changing it.</p></li></ul><div><hr></div><h2>Origin</h2><p><em>CodeYourCompliance</em></p><p>Website: <a href="https://www.codeyourcompliance.com/">https://www.codeyourcompliance.com/</a><br>GitHub: <a href="https://github.com/codeyourcompliance">https://github.com/codeyourcompliance</a></p><p><em>Attribution is requested for forks, references, adaptations, and discussions.</em></p><h2>Scope Boundary</h2><p>MAS TRM-inspired means engineering interpretation.</p><p>This is not legal, regulatory, audit, certification, compliance, or implementation advice.</p><p>MAS TRM is the context. The artifact discusses evidence structure, replay, and verification design.</p>]]></content:encoded></item><item><title><![CDATA[Can Your Audit Evidence Survive Replay?]]></title><description><![CDATA[A short CodeYourCompliance note on evidence replay in MAS TRM-inspired compliance automation. It explains why audit evidence must be timestamped, sealed, verified, policy-evaluable, and replayable before it can support a defensible compliance conclusion.]]></description><link>https://www.codeyourcompliance.com/p/can-your-audit-evidence-survive-replay</link><guid isPermaLink="false">https://www.codeyourcompliance.com/p/can-your-audit-evidence-survive-replay</guid><dc:creator><![CDATA[CodeYourCompliance]]></dc:creator><pubDate>Tue, 19 May 2026 09:16:25 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!voo_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7df0a9a6-1d2b-4998-bc37-a43816a9045c_1672x941.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>An audit pack can look complete and still fail as evidence. </p><p>It may contain screenshots, exported reports, configuration files, approval notes, and signed control narratives. A reviewer may be able to read it. A manager may be able to approve it. A report may even be written from it.</p><p><strong>That does not mean the evidence can survive replay.</strong></p><p>The failure starts before the report. It starts when nobody can prove when the evidence was collected, where it came from, whether it changed after collection, or whether the policy result was produced from the same evidence object shown in the audit pack.</p><p><strong>That is not a reporting problem.</strong></p><p><strong>It is an evidence integrity problem.</strong></p><p>Compliance automation is not about producing cleaner reports. It is about making evidence harder to fake, harder to mutate, and easier to replay.</p><blockquote><p><strong>A report can persuade.</strong></p><p><strong>Evidence must survive.</strong></p></blockquote><h2>The replay question</h2><p>Take one evidence item from an audit pack.</p><ul><li><p>Can you prove when it was collected? </p></li><li><p>Can you prove what collected it? </p></li><li><p>Can you prove which source system it came from? </p></li><li><p>Can you prove it was not changed after collection? </p></li><li><p>Can the policy result be traced back to this exact evidence object?</p></li></ul><p>If the answer is no, the evidence is weak.</p><p>It may still be useful as documentation. It may still help a human reviewer understand the environment. But it is not strong machine-verifiable evidence.</p><p>Documentation helps explain.</p><p>Replayable evidence helps prove.</p><h2>The evidence object comes first</h2><p>The first structure in a compliance automation pipeline is not the report.</p><p>It is the evidence object.</p><p><strong>A minimum evidence object should be:</strong></p><ul><li><p><strong>timestamped</strong></p></li><li><p><strong>source-bound</strong></p></li><li><p><strong>collector-identified</strong></p></li><li><p><strong>integrity-sealed</strong></p></li><li><p><strong>verified before evaluation</strong></p></li><li><p><strong>linked to a specific policy result</strong></p></li></ul><p>Without these properties, the later audit narrative is built on unstable ground.</p><p>This is where many compliance automation efforts start too late. They begin with dashboards, templates, report generators, and control mappings. Those may be useful, but they sit downstream.</p><p>If the evidence object cannot be trusted, the report only makes an untrusted object easier to read. That is not assurance but formatting. </p><p><strong>OPA should not evaluate raw trust.</strong></p><p>It should evaluate verified evidence.</p><p>If the evidence hash fails, the correct result is not non-compliant but invalid evidence.</p><p>Those are different audit outcomes.</p><p><strong>A failed control says the system may not meet the expected condition but invalid evidence says the audit cannot safely evaluate the system at all.</strong></p><p>Do not mix them.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!voo_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7df0a9a6-1d2b-4998-bc37-a43816a9045c_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!voo_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7df0a9a6-1d2b-4998-bc37-a43816a9045c_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!voo_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7df0a9a6-1d2b-4998-bc37-a43816a9045c_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!voo_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7df0a9a6-1d2b-4998-bc37-a43816a9045c_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!voo_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7df0a9a6-1d2b-4998-bc37-a43816a9045c_1672x941.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!voo_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7df0a9a6-1d2b-4998-bc37-a43816a9045c_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7df0a9a6-1d2b-4998-bc37-a43816a9045c_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1303488,&quot;alt&quot;:&quot;Diagram showing an evidence replay test for compliance automation. An evidence object with evidence ID, timestamp, collector, source system, and integrity hash is evaluated in an original audit run and then re-evaluated in a replay run. Both runs include hash verification, OPA policy evaluation, and result comparison. Outcomes are replay pass, replay fail, or invalid evidence.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.codeyourcompliance.com/i/198363874?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7df0a9a6-1d2b-4998-bc37-a43816a9045c_1672x941.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Diagram showing an evidence replay test for compliance automation. An evidence object with evidence ID, timestamp, collector, source system, and integrity hash is evaluated in an original audit run and then re-evaluated in a replay run. Both runs include hash verification, OPA policy evaluation, and result comparison. Outcomes are replay pass, replay fail, or invalid evidence." title="Diagram showing an evidence replay test for compliance automation. An evidence object with evidence ID, timestamp, collector, source system, and integrity hash is evaluated in an original audit run and then re-evaluated in a replay run. Both runs include hash verification, OPA policy evaluation, and result comparison. Outcomes are replay pass, replay fail, or invalid evidence." srcset="https://substackcdn.com/image/fetch/$s_!voo_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7df0a9a6-1d2b-4998-bc37-a43816a9045c_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!voo_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7df0a9a6-1d2b-4998-bc37-a43816a9045c_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!voo_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7df0a9a6-1d2b-4998-bc37-a43816a9045c_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!voo_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7df0a9a6-1d2b-4998-bc37-a43816a9045c_1672x941.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Evidence should not only support an audit result once. It should survive replay.</figcaption></figure></div><h2><strong>MAS TRM-inspired, not MAS TRM-prescribed</strong></h2><p>MAS TRM-inspired compliance automation should not be treated as a claim that MAS prescribes this implementation.</p><p>It is an engineering interpretation of supervisory expectations.</p><p>The useful question is not:</p><p>&#8220;Can we generate a report that sounds aligned?&#8221;</p><p>The useful question is:</p><p>&#8220;Can we produce evidence that can be collected, sealed, verified, evaluated, and replayed?&#8221;</p><p>That is the engineering problem.</p><p>A MAS TRM-inspired evidence pipeline should separate four layers:</p><ol><li><p><strong>Collection captures system state.</strong></p></li><li><p><strong>Integrity verification proves the evidence has not changed.</strong></p></li><li><p><strong>Policy evaluation tests verified evidence against defined conditions.</strong></p></li><li><p><strong>The audit narrative explains the result.</strong></p></li></ol><p>If these layers collapse into one report, the audit surface becomes fragile.</p><h2><strong>A short self-test</strong></h2><p>Before treating an audit pack as automation-ready, test one evidence object.</p><p>Ask:</p><ul><li><p><strong>Does it include a collection timestamp?</strong></p></li><li><p><strong>Does it identify the collector?</strong></p></li><li><p><strong>Does it preserve source system context?</strong></p></li><li><p><strong>Is there an integrity hash or seal?</strong></p></li><li><p><strong>Was integrity verified before policy evaluation?</strong></p></li><li><p><strong>Is the policy result tied to that evidence object?</strong></p></li><li><p><strong>Is there a defined </strong><code>invalid_evidence</code><strong> path?</strong></p></li><li><p><strong>Can the same evidence object be re-evaluated later?</strong></p></li></ul><p>This is not a remediation checklist. It does not tell the operator how to fix the system. It only tests whether the evidence can support a replayable audit conclusion.</p><p><strong>Observation is not remediation.</strong></p><p><strong>Evidence is not a report.</strong></p><p><strong>A control is not proof.</strong></p><p>The audit problem starts earlier.</p><p>If the evidence cannot survive replay, the report should not pretend to be stronger than the evidence beneath it.</p><p>Reports persuade.</p><p>Evidence survives.</p><h2>Related Reading</h2><p>Replay only works if the evidence pipeline is sound.</p><ul><li><p><a href="https://www.codeyourcompliance.com/p/compliance-automation-starts-at-evidence">Compliance Automation Starts at Evidence</a></p></li><li><p><a href="https://www.codeyourcompliance.com/p/read-only-collection-as-an-audit">Read-Only Collection as an Audit Boundary</a></p></li><li><p><a href="https://www.codeyourcompliance.com/p/what-a-mas-trm-checklist-cannot-prove">What a MAS TRM Checklist Cannot Prove</a></p></li></ul><div><hr></div><h2>Origin</h2><p>CodeYourCompliance<br>Website: <a href="https://www.codeyourcompliance.com">https://www.codeyourcompliance.com</a><br>GitHub: <a href="https://github.com/codeyourcompliance">https://github.com/codeyourcompliance</a></p><h2><strong>Scope Boundary</strong></h2><p>MAS TRM-inspired means engineering interpretation.</p><p>This is not legal, regulatory, audit, certification, or compliance advice.</p>]]></content:encoded></item><item><title><![CDATA[AI Vendor Risk Assessment: Vendor Claim Is Not Evidence]]></title><description><![CDATA[Vendor claim is not evidence. A practical AI vendor risk assessment guide for turning vendor statements into evidence requests, buyer questions, and usage boundaries.]]></description><link>https://www.codeyourcompliance.com/p/start-here-ai-vendor-risk-pack</link><guid isPermaLink="false">https://www.codeyourcompliance.com/p/start-here-ai-vendor-risk-pack</guid><dc:creator><![CDATA[CodeYourCompliance]]></dc:creator><pubDate>Tue, 12 May 2026 04:38:17 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!pznK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a64a907-f9c7-4ab6-8fb0-5deb9ab5fe85_1672x941.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!pznK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a64a907-f9c7-4ab6-8fb0-5deb9ab5fe85_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pznK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a64a907-f9c7-4ab6-8fb0-5deb9ab5fe85_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!pznK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a64a907-f9c7-4ab6-8fb0-5deb9ab5fe85_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!pznK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a64a907-f9c7-4ab6-8fb0-5deb9ab5fe85_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!pznK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a64a907-f9c7-4ab6-8fb0-5deb9ab5fe85_1672x941.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pznK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a64a907-f9c7-4ab6-8fb0-5deb9ab5fe85_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5a64a907-f9c7-4ab6-8fb0-5deb9ab5fe85_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1397560,&quot;alt&quot;:&quot;CodeYourCompliance banner showing AI vendor risk assessment documents under review with a magnifying glass, evidence icons, and the tagline &#8220;Vendor claim is not evidence.&#8221;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.codeyourcompliance.com/i/197306325?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a64a907-f9c7-4ab6-8fb0-5deb9ab5fe85_1672x941.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="CodeYourCompliance banner showing AI vendor risk assessment documents under review with a magnifying glass, evidence icons, and the tagline &#8220;Vendor claim is not evidence.&#8221;" title="CodeYourCompliance banner showing AI vendor risk assessment documents under review with a magnifying glass, evidence icons, and the tagline &#8220;Vendor claim is not evidence.&#8221;" srcset="https://substackcdn.com/image/fetch/$s_!pznK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a64a907-f9c7-4ab6-8fb0-5deb9ab5fe85_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!pznK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a64a907-f9c7-4ab6-8fb0-5deb9ab5fe85_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!pznK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a64a907-f9c7-4ab6-8fb0-5deb9ab5fe85_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!pznK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a64a907-f9c7-4ab6-8fb0-5deb9ab5fe85_1672x941.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Vendor claim is not evidence. AI vendor risk assessment starts with evidence gaps.</figcaption></figure></div><p>AI vendor risk assessment is not mainly a questionnaire problem.</p><p>It is an evidence conversion problem.</p><p>Most teams already have vendor questionnaires. They ask about security, privacy, subprocessors, SOC 2, access control, incident response, data retention, and contractual terms.</p><p>That is useful.</p><p>But it is not enough.</p><p>A vendor can answer every question and still leave the buyer without reviewable evidence.</p><p>The harder question is not:</p><div class="callout-block" data-callout="true"><p><mark data-color="#ffff00" style="background-color: rgb(255, 255, 0); color: rgb(0, 0, 0);">Did the vendor answer?</mark></p></div><p>The harder question is:</p><div class="callout-block" data-callout="true"><p><mark data-color="#ffff00" style="background-color: rgb(255, 255, 0); color: rgb(0, 0, 0);">Can the buyer rely on this answer later?</mark></p></div><p>That is the purpose of AI Vendor Evidence Gap Pack.</p><p><mark data-color="#ffff00" style="background-color: rgb(255, 255, 0); color: rgb(0, 0, 0);">It helps buyers and reviewers turn AI vendor claims into evidence requests, weak-answer patterns, buyer questions, review notes, and usage boundaries.</mark></p><p>It does not approve vendors.</p><p>It shows where the vendor&#8217;s claim stops and where the buyer still lacks evidence.</p><h2>Problem</h2><p>A vendor may say:</p><div class="callout-block" data-callout="true"><p>We do not train on your data.</p></div><p><mark data-color="#ffff00" style="background-color: rgb(255, 255, 0); color: rgb(0, 0, 0);">That may be true.</mark></p><p><mark data-color="#ffff00" style="background-color: rgb(255, 255, 0); color: rgb(0, 0, 0);">But a review should not stop there.</mark></p><p>The buyer still needs to know what &#8220;training&#8221; means. Does it include fine-tuning, evaluation, abuse monitoring, support review, retained logs, human review, embeddings, metadata, subprocessors, or model providers?</p><p>The buyer also needs to know where the claim appears.</p><p>A DPA clause is not the same as a marketing page.</p><p>A SOC 2 report is not automatically proof that the specific AI feature, model path, data flow, or product tier is covered.</p><p>A trust center can provide useful source material, but it is not a completed risk assessment.</p><p>The problem is not that every vendor claim is false.</p><p>The problem is that many vendor claims remain narrative claims.</p><p>They sound reassuring. They may be directionally useful. But they do not automatically become evidence requests, evidence gaps, buyer questions, review notes, or residual risk language.</p><p>That creates a gap in the review file.</p><p>If the vendor is approved or renewed, the buyer may still be unable to explain why the answer was accepted.</p><h2>What this pack does</h2><p>AI Vendor Evidence Gap Pack converts vendor-controlled language into reviewable structure:</p><div class="callout-block" data-callout="true"><p><mark data-color="#ffff00" style="background-color: rgb(255, 255, 0); color: rgb(0, 0, 0);">AI vendor claim -&gt; evidence source -&gt; evidence gap -&gt; buyer question -&gt; usage boundary</mark></p></div><p>This is not a longer questionnaire.</p><p>A questionnaire collects answers.</p><p>This pack helps review whether those answers are evidence-complete.</p><p>For each claim, the review asks:</p><ul><li><p><mark data-color="#ffff00" style="background-color: rgb(255, 255, 0); color: rgb(0, 0, 0);">What exactly is being claimed?</mark></p></li><li><p><mark data-color="#ffff00" style="background-color: rgb(255, 255, 0); color: rgb(0, 0, 0);">Where is the claim written?</mark></p></li><li><p><mark data-color="#ffff00" style="background-color: rgb(255, 255, 0); color: rgb(0, 0, 0);">Is the source contractual, audited, official, public, marketing, or unsupported?</mark></p></li><li><p><mark data-color="#ffff00" style="background-color: rgb(255, 255, 0); color: rgb(0, 0, 0);">Does it cover the actual product, plan, region, and use case?</mark></p></li><li><p><mark data-color="#ffff00" style="background-color: rgb(255, 255, 0); color: rgb(0, 0, 0);">Does it cover the relevant data path?</mark></p></li><li><p><mark data-color="#ffff00" style="background-color: rgb(255, 255, 0); color: rgb(0, 0, 0);">What is missing?</mark></p></li><li><p><mark data-color="#ffff00" style="background-color: rgb(255, 255, 0); color: rgb(0, 0, 0);">What should the buyer ask next?</mark></p></li><li><p><mark data-color="#ffff00" style="background-color: rgb(255, 255, 0); color: rgb(0, 0, 0);">What usage boundary is reasonable until the missing evidence is resolved?</mark></p></li></ul><p>The output is not a pass or fail conclusion.</p><p>The output is evidence structure.</p><h2>Example</h2><p>Vendor claim:</p><div class="callout-block" data-callout="true"><p>We do not train on your data.</p></div><p>Why it sounds sufficient:</p><p><mark data-color="#ffff00" style="background-color: rgb(255, 255, 0); color: rgb(0, 0, 0);">It appears to answer the main AI privacy concern.</mark></p><p><em>What it actually proves:</em></p><p>It may support a narrow commitment about model training, depending on the source, scope, product, plan, contract, and date.</p><p><em>What it does not prove:</em></p><p>It does not prove prompt logging, output storage, file retention, metadata handling, embeddings, abuse monitoring, support access, human review, subprocessors, deletion controls, retention period, data residency, audit logs, or exportability.</p><p><em>Weak-answer pattern:</em></p><p>The vendor repeats that it does not train on customer data, but does not define training, retention, logging, evaluation, human review, support access, subprocessors, or exceptions.</p><p><em>Evidence request:</em></p><p>Provide the data flow for prompts, outputs, uploaded files, logs, embeddings, metadata, moderation events, support access, subprocessors, model providers, and human review queues. Include retention period, access roles, deletion controls, tenant settings, contractual commitments, and documented exceptions.</p><p><em>Review note:</em></p><p>The claim is directionally useful but not evidence-complete. It addresses model training use, but does not establish how operational data is handled after inference.</p><p><em>Usage boundary:</em></p><p>Do not rely on this claim for customer data, confidential data, regulated data, proprietary source code, or production approval until retention, logging, human review, subprocessor, and deletion boundaries are evidenced.</p><p>The point is not to accuse the vendor.</p><p>The point is to avoid accepting a claim before it becomes reviewable evidence.</p><h2>Who it is for</h2><p>This pack is for people involved in AI vendor review before procurement, renewal, internal approval, or audit preparation.</p><p>That includes security reviewers, compliance teams, procurement operators, privacy leads, IT managers, founders, operators, and small teams adopting AI tools.</p><p>It is especially useful for teams that do not yet have a mature AI vendor review process, but still need to ask defensible questions before real data use.</p><p>The review should not start with the vendor name alone.</p><p>The real review unit is:</p><div class="callout-block" data-callout="true"><p><mark data-color="#ffff00" style="background-color: rgb(255, 255, 0); color: rgb(0, 0, 0);">vendor + product + plan + use case + data type + region + contract terms + evidence date</mark></p></div><p>The same vendor may be acceptable for public marketing drafts and not acceptable for customer records, source code, employee data, regulated data, or automated decisioning.</p><p>Context matters.</p><h2>What it is not</h2><p>AI Vendor Evidence Gap Pack is not certification, vendor rating, legal advice, regulatory advice, audit opinion, procurement approval, compliance guarantee, or a pass/fail conclusion.</p><p>It is not a substitute for legal, security, privacy, audit, procurement, or business owner review.</p><p>It is also not a generic AI governance checklist.</p><p>The product boundary is simple:</p><div class="callout-block" data-callout="true"><p>Evidence gap review, not approval.</p></div><h2>Reading path</h2><p>Each claim teardown follows the same review path:</p><blockquote><p><mark data-color="#ffff00" style="background-color: rgb(255, 255, 0); color: rgb(0, 0, 0);">vendor claim &#8594; evidence source &#8594; evidence gap &#8594; buyer question &#8594; usage boundary</mark></p></blockquote><p>Start with the core frame:</p><ol><li><p><a href="https://www.codeyourcompliance.com/p/ai-vendor-risk-is-not-a-questionnaire">AI Vendor Risk Is Not a Questionnaire Problem</a></p></li></ol><p>Then read the claim teardowns:</p><ol start="2"><li><p><a href="https://www.codeyourcompliance.com/p/vendor-says-it-does-not-train-on">Vendor Says It Does Not Train on Your Data. What Evidence Should You Ask For?</a></p></li></ol><p>Planned next:</p><ul><li><p>A Trust Center Is Not an AI Vendor Risk Assessment</p></li><li><p>Why SOC 2 Does Not Prove the AI Vendor Data Path Is Covered</p></li><li><p>Human Review Is a Data Exposure Path Unless It Is Bounded</p></li><li><p>Subprocessor Lists Do Not Show the Actual AI Data Path<br>This series starts with one claim:</p></li></ul><p>For now:</p><p><em><strong>Reply if you want the draft sample questions.</strong></em></p><h2>Boundary</h2><p>This material is for evidence structuring and review preparation.</p><p>It does not provide legal, regulatory, audit, procurement, certification, or implementation advice.</p><p>Examples are illustrative unless separately validated for a specific organization and use case.</p>]]></content:encoded></item><item><title><![CDATA[Compliance Automation Starts at Evidence]]></title><description><![CDATA[Compliance automation should start with verifiable evidence, not reports. This article explains a MAS TRM-inspired evidence pipeline using read-only collection, timestamped evidence, hash sealing, OPA evaluation, and audit narratives.]]></description><link>https://www.codeyourcompliance.com/p/compliance-automation-starts-at-evidence</link><guid isPermaLink="false">https://www.codeyourcompliance.com/p/compliance-automation-starts-at-evidence</guid><dc:creator><![CDATA[CodeYourCompliance]]></dc:creator><pubDate>Mon, 11 May 2026 07:29:25 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!PnvS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a0fccd-f257-4b77-959c-b957e55fda17_1672x941.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Most audit packs are built after the fact.</p><p>That is the weakness.</p><p>Compliance evidence automation is not template filling. It means collecting evidence from source systems, preserving provenance, validating integrity, evaluating policy, and producing a reviewable evidence package.</p><p>The screenshot is taken after the audit request arrives. The log export is prepared after the system has moved on. The control owner writes how the process is supposed to work.</p><p>The report becomes coherent.</p><p>Coherence is not proof.</p><p>A clean audit pack can still be built on weak evidence.</p><p>That is the problem compliance automation must solve first.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!PnvS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a0fccd-f257-4b77-959c-b957e55fda17_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PnvS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a0fccd-f257-4b77-959c-b957e55fda17_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!PnvS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a0fccd-f257-4b77-959c-b957e55fda17_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!PnvS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a0fccd-f257-4b77-959c-b957e55fda17_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!PnvS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a0fccd-f257-4b77-959c-b957e55fda17_1672x941.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PnvS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a0fccd-f257-4b77-959c-b957e55fda17_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/56a0fccd-f257-4b77-959c-b957e55fda17_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1187258,&quot;alt&quot;:&quot;Diagram of a six-step compliance evidence pipeline from system state to audit narrative, showing the audit boundary between live state and sealed evidence&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.codeyourcompliance.com/i/197183310?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a0fccd-f257-4b77-959c-b957e55fda17_1672x941.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Diagram of a six-step compliance evidence pipeline from system state to audit narrative, showing the audit boundary between live state and sealed evidence" title="Diagram of a six-step compliance evidence pipeline from system state to audit narrative, showing the audit boundary between live state and sealed evidence" srcset="https://substackcdn.com/image/fetch/$s_!PnvS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a0fccd-f257-4b77-959c-b957e55fda17_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!PnvS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a0fccd-f257-4b77-959c-b957e55fda17_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!PnvS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a0fccd-f257-4b77-959c-b957e55fda17_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!PnvS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56a0fccd-f257-4b77-959c-b957e55fda17_1672x941.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Evidence comes first. Policy evaluates only after the evidence is sealed.</figcaption></figure></div><h2>The report is too late</h2><p>A report is downstream.</p><p>It cannot rescue stale evidence. It cannot repair a missing timestamp. It cannot prove that a configuration remained unchanged after collection.</p><p>Most automation starts at the wrong layer.</p><p>It generates summaries.<br>It fills templates.<br>It writes control narratives.</p><p>That saves labour.</p><p>It does not harden evidence.</p><h2>Evidence needs provenance</h2><p>Data is not evidence until it can be traced.</p><p>An evidence object should tell us what was observed, when it was observed, where it came from, how it was collected, whether it changed after collection, and which control expectation it supports.</p><p>Without that, the audit trail is soft.</p><p>Soft evidence creates soft conclusions.</p><h2>Collection is not correction</h2><p>The collector should not fix the system.</p><p>If collection changes the target, the failed state may disappear before it is recorded. Operations may like that. Audit should not.</p><p>Read-only collection is not a tooling preference.</p><p>It is restraint.</p><p>Pull the configuration. Timestamp it. Seal it. Evaluate it. Remediate later.</p><p>Observation and remediation are different jobs.</p><h2>Integrity comes before judgment</h2><p>A hash does not prove compliance.</p><p>It proves whether the evidence changed after collection.</p><p>That is a narrow claim. It is also a useful one.</p><p>If integrity verification fails, the audit path should stop. OPA should not evaluate evidence that has already failed its own trust boundary.</p><p>Bad evidence should not produce a clean result.</p><h2>OPA is not the system</h2><p><a href="https://www.openpolicyagent.org/">OPA</a> is a policy evaluator.</p><p>Not a collector.<br>Not a repair tool.<br>Not an audit writer.</p><p>Its job is narrow: take verified evidence and decide whether the observed state violates a defined control condition.</p><p>That narrowness is the point.</p><p>Policy should stay deterministic. Narrative can come later.</p><h2>TLS shows the boundary</h2><p>Take an Apache HTTPS service.</p><p>The weak audit asks whether SSL is enabled.</p><p>The stronger audit asks when the certificate was observed, when it expires, which signature algorithm was used, whether the evidence was sealed, and whether that sealed evidence was verified before policy evaluation.</p><p>The first question checks a claim.</p><p>The second checks proof.</p><p>A certificate expiring within 48 hours is not a cosmetic issue. It is a control weakness.</p><p>The audit narrative should stay tied to evidence:</p><blockquote><p>Based on verified TLS evidence collected at a specific time, the service was operating with a certificate approaching expiry within the defined threshold. This weakens assurance over secure communications and does not align with MAS TRM-inspired expectations for maintaining effective cryptographic controls.</p></blockquote><p>No legal conclusion.</p><p>No remediation theatre.</p><p>Just evidence, expectation, and judgment.</p><h2>MAS TRM-inspired means engineering interpretation</h2><p><a href="https://www.mas.gov.sg/-/media/MAS/Regulations-and-Financial-Stability/Regulatory-and-Supervisory-Framework/Risk-Management/TRM-Guidelines-18-January-2021.pdf">MAS TRM</a> is the context here, not legal advice.</p><p>The engineering task is not to rewrite regulatory language into softer prose. It is to turn control expectations into evidence structures.</p><p>A control cannot remain a paragraph forever.</p><p>It needs a schema.<br>It needs a collector.<br>It needs a timestamp.<br>It needs an integrity check.<br>It needs a policy rule.<br>It needs an audit narrative.</p><p>That is where the machine boundary starts.</p><h2>The position</h2><p>Compliance automation is not report automation.</p><p>Report automation makes audit packs faster.</p><p>Evidence automation makes control claims harder to fake, harder to mutate, and easier to replay.</p><p>That is the useful distinction.</p><p>Reports persuade.</p><p>Evidence survives.</p><div><hr></div><h2>Related Reading</h2><p>This article sits between collection and replay.</p><ul><li><p><a href="https://www.codeyourcompliance.com/p/read-only-collection-as-an-audit">Read-Only Collection as an Audit Boundary</a></p></li><li><p><a href="https://www.codeyourcompliance.com/p/can-your-audit-evidence-survive-replay">Can Your Audit Evidence Survive Replay?</a></p></li></ul><div><hr></div><h2>Origin</h2><p><em>CodeYourCompliance</em></p><p>Website: <a href="https://www.codeyourcompliance.com/">https://www.codeyourcompliance.com/</a><br><br>GitHub: <a href="https://github.com/codeyourcompliance">https://github.com/codeyourcompliance</a></p><p><em>Attribution is requested for forks, references, adaptations, and discussions.</em></p><h2>Scope Boundary</h2><p>MAS TRM-inspired means engineering interpretation.</p><p>This is not legal, regulatory, audit, certification, compliance, or implementation advice.</p><p>MAS TRM is the context. The artifact discusses evidence structure, replay, and verification design.</p>]]></content:encoded></item><item><title><![CDATA[Join my new subscriber chat]]></title><description><![CDATA[A private space for us to converse and connect]]></description><link>https://www.codeyourcompliance.com/p/join-my-new-subscriber-chat</link><guid isPermaLink="false">https://www.codeyourcompliance.com/p/join-my-new-subscriber-chat</guid><dc:creator><![CDATA[CodeYourCompliance]]></dc:creator><pubDate>Fri, 08 May 2026 05:21:35 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!KYZT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0f63c9a-2296-4c96-a2f9-52648999bb00_2000x1000.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Today I&#8217;m announcing a brand new addition to my Substack publication: CodeYourCompliance subscriber chat.</p><p>This is a conversation space exclusively for subscribers&#8212;kind of like a group chat or live hangout. I&#8217;ll post questions and updates that come my way, and you can jump into the discussion.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://open.substack.com/pub/codeyourcompliance/chat&quot;,&quot;text&quot;:&quot;Join chat&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://open.substack.com/pub/codeyourcompliance/chat"><span>Join chat</span></a></p><div><hr></div><h2>How to get started</h2><ol><li><p><strong>Get the Substack app by clicking <a href="https://substack.com/app/app-store-redirect">this link</a> or the button below.</strong> New chat threads won&#8217;t be sent sent via email, so turn on push notifications so you don&#8217;t miss conversation as it happens. You can also access chat <a href="https://open.substack.com/pub/codeyourcompliance/chat">on the web</a>.</p></li></ol><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://substack.com/app/app-store-redirect&quot;,&quot;text&quot;:&quot;Get app&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://substack.com/app/app-store-redirect"><span>Get app</span></a></p><ol start="2"><li><p><strong>Open the app and tap the Chat icon.</strong> It looks like two bubbles in the bottom bar, and you&#8217;ll see a row for my chat inside.</p></li></ol><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!KYZT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0f63c9a-2296-4c96-a2f9-52648999bb00_2000x1000.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KYZT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0f63c9a-2296-4c96-a2f9-52648999bb00_2000x1000.jpeg 424w, https://substackcdn.com/image/fetch/$s_!KYZT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0f63c9a-2296-4c96-a2f9-52648999bb00_2000x1000.jpeg 848w, https://substackcdn.com/image/fetch/$s_!KYZT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0f63c9a-2296-4c96-a2f9-52648999bb00_2000x1000.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!KYZT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0f63c9a-2296-4c96-a2f9-52648999bb00_2000x1000.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KYZT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0f63c9a-2296-4c96-a2f9-52648999bb00_2000x1000.jpeg" width="1456" height="728" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e0f63c9a-2296-4c96-a2f9-52648999bb00_2000x1000.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:728,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:241528,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://kylewarrentest.substack.com/i/114198534?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0f63c9a-2296-4c96-a2f9-52648999bb00_2000x1000.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!KYZT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0f63c9a-2296-4c96-a2f9-52648999bb00_2000x1000.jpeg 424w, https://substackcdn.com/image/fetch/$s_!KYZT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0f63c9a-2296-4c96-a2f9-52648999bb00_2000x1000.jpeg 848w, https://substackcdn.com/image/fetch/$s_!KYZT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0f63c9a-2296-4c96-a2f9-52648999bb00_2000x1000.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!KYZT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0f63c9a-2296-4c96-a2f9-52648999bb00_2000x1000.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><ol start="3"><li><p><strong>That&#8217;s it!</strong> Jump into my thread to say hi, and if you have any issues, check out <a href="https://support.substack.com/hc/en-us/sections/360007461791-Frequently-Asked-Questions">Substack&#8217;s FAQ</a>.</p></li></ol>]]></content:encoded></item><item><title><![CDATA[Read-Only Collection as an Audit Boundary]]></title><description><![CDATA[Read-only evidence collection is an audit boundary. This article explains why MAS TRM-inspired compliance automation must observe system state without changing it.]]></description><link>https://www.codeyourcompliance.com/p/read-only-collection-as-an-audit</link><guid isPermaLink="false">https://www.codeyourcompliance.com/p/read-only-collection-as-an-audit</guid><dc:creator><![CDATA[CodeYourCompliance]]></dc:creator><pubDate>Tue, 05 May 2026 02:59:50 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!KPqv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc7b03e5-c8e8-4ef3-a108-e958d590bd97_1672x941.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Most compliance automation fails in a quiet way.</p><p>The collector changes the system it is supposed to observe.</p><p>A playbook checks a setting and updates it.<br>A script gathers evidence and restarts a service.<br>A compliance job produces a clean result after it has already changed the target.</p><p>That may help operations. It weakens audit evidence.</p><p>The audit problem starts earlier than reporting. It starts at collection.</p><p>If collection changes the target, the evidence has already lost part of its value. You are no longer recording system state. You are participating in it.</p><p>That is why read-only collection is not a convenience. It is an audit boundary.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!KPqv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc7b03e5-c8e8-4ef3-a108-e958d590bd97_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KPqv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc7b03e5-c8e8-4ef3-a108-e958d590bd97_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!KPqv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc7b03e5-c8e8-4ef3-a108-e958d590bd97_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!KPqv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc7b03e5-c8e8-4ef3-a108-e958d590bd97_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!KPqv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc7b03e5-c8e8-4ef3-a108-e958d590bd97_1672x941.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KPqv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc7b03e5-c8e8-4ef3-a108-e958d590bd97_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dc7b03e5-c8e8-4ef3-a108-e958d590bd97_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1151142,&quot;alt&quot;:&quot;MAS TRM-inspired compliance automation infographic showing a read-only evidence pipeline from system state to timestamped evidence, integrity verification, and policy evaluation.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.codeyourcompliance.com/i/196497016?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc7b03e5-c8e8-4ef3-a108-e958d590bd97_1672x941.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="MAS TRM-inspired compliance automation infographic showing a read-only evidence pipeline from system state to timestamped evidence, integrity verification, and policy evaluation." title="MAS TRM-inspired compliance automation infographic showing a read-only evidence pipeline from system state to timestamped evidence, integrity verification, and policy evaluation." srcset="https://substackcdn.com/image/fetch/$s_!KPqv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc7b03e5-c8e8-4ef3-a108-e958d590bd97_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!KPqv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc7b03e5-c8e8-4ef3-a108-e958d590bd97_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!KPqv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc7b03e5-c8e8-4ef3-a108-e958d590bd97_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!KPqv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc7b03e5-c8e8-4ef3-a108-e958d590bd97_1672x941.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Read-only collection protects the boundary between observing system state and changing it.</figcaption></figure></div><h2>MAS TRM-inspired does not mean MAS TRM-prescribed</h2><p>This series is inspired by MAS TRM, but it is not a legal reading of MAS TRM.</p><p>MAS TRM does not prescribe this pipeline. It does not require Ansible, SHA256, Python, OPA, or any specific collector. The point is narrower than that.</p><p>I use MAS TRM as an engineering pressure test.</p><p>If a control needs assurance, what evidence would support that assurance?<br>If evidence must be trusted, how should it be collected?<br>If system state matters, how do we observe it without contaminating it?</p><p>That is the boundary.</p><p>MAS TRM gives principles and expectations. The pipeline is an engineering interpretation of those expectations around control assurance, evidence protection, monitoring, and cryptographic lifecycle management.</p><p>The broader argument of this series is simple: compliance automation should move away from report production and toward evidence systems.</p><p>This article focuses on the first boundary in that shift.</p><p>Collection is not correction.</p><h2>Observation is not remediation</h2><p>These two actions are often mixed because the same tool can do both.</p><p>That is exactly the problem.</p><p>Observation asks: <strong>what is true now</strong>?<br>Remediation asks: <strong>what should we change</strong>?</p><p>They are not the same workflow.</p><p>If a playbook checks a TLS configuration and then fixes it in the same run, what does the evidence prove? Did the system meet the requirement before the collector ran, or only after the automation changed it?</p><p>That ambiguity is not cosmetic. It changes how much trust the evidence deserves.</p><p>Reports persuade. Evidence survives.</p><p>A read-only collector gives you a cleaner line:</p><blockquote><ul><li><p>this is what was observed</p></li><li><p>this is when it was observed</p></li><li><p>this is how it was collected</p></li><li><p>the collector did not modify the target system</p></li></ul></blockquote><p>That is a defensible starting point. A post-remediation snapshot is not the same thing.</p><h2>Data alone is not evidence</h2><p>A raw command output is data.</p><p>A screenshot is data.</p><p>A JSON file without provenance is data.</p><p>Data becomes audit evidence only when collection context is preserved.</p><p>A minimum evidence object should carry collector metadata, not only system facts:</p><pre><code><code>{
  "host_id": "apache-01",
  "collector": "ansible-readonly-http-collector",
  "collector_version": "0.1.0",
  "timestamp_utc": "2026-05-05T10:30:00Z",
  "evidence_type": "http_tls_configuration",
  "data": {}
}
</code></code></pre><p>These fields are not decoration. They answer later questions: which host produced this evidence, which collector shaped the output, which collector version was used, when the evidence was collected, and what system state the record describes.</p><p>Without those answers, evidence becomes easy to dispute and hard to replay.</p><h2>Integrity comes after observation</h2><p>Once evidence is collected, it should be sealed before interpretation.</p><p>That seal can be simple at the first stage: timestamp the evidence package, calculate a hash over the complete object, and verify the hash before policy evaluation.</p><p>The goal is not cryptographic theatre. The goal is audit discipline.</p><p>OPA belongs after this step. It can evaluate verified evidence against explicit rules. It should not be asked to compensate for weak collection design.</p><p>The order matters:</p><div class="callout-block" data-callout="true"><p>System State</p><p>&#8594; Read-Only Observation</p><p>&#8594; Timestamped Evidence</p><p>&#8594; Integrity Verification</p><p>&#8594; Policy Evaluation</p></div><p>Collection observes.</p><p>Integrity verification protects the observation.</p><p>Policy evaluation applies control logic.</p><p>Do not collapse these stages into one automation run and call it assurance.</p><h2>Remediation belongs elsewhere</h2><p>Read-only collection does not mean remediation is unimportant.</p><p>It means remediation needs its own workflow.</p><p>A change workflow should have its own approval record, execution trace, rollback path, and post-change verification. It may use Ansible. It may use a ticketing system. It may use CI/CD. It may use another control plane.</p><p>But it should not be hidden inside the evidence collector.</p><blockquote><p><strong>Collection is evidence work.</strong></p><p><strong>Remediation is change work.</strong></p></blockquote><p>Different evidence. Different accountability. Different audit story.</p><h2><strong>Related Reading</strong></h2><p>Read-only collection is one boundary in a larger evidence pipeline.</p><ul><li><p><a href="https://www.codeyourcompliance.com/p/can-your-audit-evidence-survive-replay">Can Your Audit Evidence Survive Replay?</a></p></li><li><p><a href="https://www.codeyourcompliance.com/p/compliance-automation-starts-at-evidence">Compliance Automation Starts at Evidence</a></p></li></ul><div><hr></div><h2><strong>Origin</strong></h2><p>CodeYourCompliance<br><br>Website: <a href="https://www.codeyourcompliance.com/">https://www.codeyourcompliance.com/</a><br><br>GitHub: <a href="https://github.com/codeyourcompliance">https://github.com/codeyourcompliance</a></p><h2><strong>Scope Boundary</strong></h2><p>MAS TRM-inspired means engineering interpretation.</p><p>This is not legal, regulatory, audit, certification, or compliance advice.</p>]]></content:encoded></item><item><title><![CDATA[Compliance Is Not Documentation. It Is Evidence That Can Be Replayed. ]]></title><description><![CDATA[A short architecture note on why MAS TRM compliance automation should begin with replayable, timestamped, verifiable evidence rather than static documentation.]]></description><link>https://www.codeyourcompliance.com/p/compliance-is-not-documentation-it-18e</link><guid isPermaLink="false">https://www.codeyourcompliance.com/p/compliance-is-not-documentation-it-18e</guid><dc:creator><![CDATA[CodeYourCompliance]]></dc:creator><pubDate>Wed, 29 Apr 2026 04:40:23 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!ZBrE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff57c9b43-d462-49ee-af64-26c64a474ce2_1672x941.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>A compliance report can be well written and still be weak evidence.</p><p>The question is not whether a control was documented. The question is whether the underlying system state can be verified, trusted, and replayed after the fact.</p><p>That is where CodeYourCompliance starts.</p><blockquote><p>Compliance is not documentation. It is evidence that can be replayed.</p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ZBrE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff57c9b43-d462-49ee-af64-26c64a474ce2_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZBrE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff57c9b43-d462-49ee-af64-26c64a474ce2_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!ZBrE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff57c9b43-d462-49ee-af64-26c64a474ce2_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!ZBrE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff57c9b43-d462-49ee-af64-26c64a474ce2_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!ZBrE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff57c9b43-d462-49ee-af64-26c64a474ce2_1672x941.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZBrE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff57c9b43-d462-49ee-af64-26c64a474ce2_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f57c9b43-d462-49ee-af64-26c64a474ce2_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1276306,&quot;alt&quot;:&quot;Diagram explaining why compliance must move beyond documentation toward verifiable evidence.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.codeyourcompliance.com/i/195828058?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff57c9b43-d462-49ee-af64-26c64a474ce2_1672x941.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Diagram explaining why compliance must move beyond documentation toward verifiable evidence." title="Diagram explaining why compliance must move beyond documentation toward verifiable evidence." srcset="https://substackcdn.com/image/fetch/$s_!ZBrE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff57c9b43-d462-49ee-af64-26c64a474ce2_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!ZBrE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff57c9b43-d462-49ee-af64-26c64a474ce2_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!ZBrE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff57c9b43-d462-49ee-af64-26c64a474ce2_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!ZBrE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff57c9b43-d462-49ee-af64-26c64a474ce2_1672x941.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Compliance evidence should be verifiable, not just documented.</figcaption></figure></div><p>Most compliance work still starts with documents.</p><p>Screenshots. Spreadsheets. Static reports. Manual attestations. These artifacts are useful, but they are often asked to do something they were not designed to do: prove that a technical control was actually true at a specific point in time.</p><p>In this article, compliance automation means converting regulatory expectations, such as MAS TRM[1]-inspired security controls, into verifiable system evidence that can be collected, timestamped, checked, evaluated, and replayed.</p><p>Documentation can describe a control.</p><p>It cannot, by itself, prove that the system was in a specific security state when evidence was collected.</p><p>That distinction matters.</p><h2>The Evidence Problem</h2><p>A static audit report usually tells us the conclusion.</p><p>It may say that TLS was enabled, that a certificate was present, or that a configuration was reviewed. But it often does not preserve the evidence chain behind that conclusion.</p><p>The harder questions are usually left open.</p><p>Was the evidence collected without changing the system?</p><p>Was it bound to a timestamp?</p><p>Was it modified after collection?</p><p>Was the policy decision based on verified facts?</p><p>Could another reviewer replay the same path and reach the same conclusion?</p><p>These questions matter in the context of MAS TRM expectations because technology risk management depends on control assurance, not just control description.</p><p>A report is useful.</p><p>But a report is not the same thing as verifiable compliance evidence.</p><h2>A Minimal Evidence Pipeline</h2><p><em>A note on &#8220;MAS TRM-inspired&#8221;: MAS TRM does not prescribe this pipeline, nor does it require Ansible, SHA256, Python, OPA, or Rego. The pipeline is an engineering interpretation of broader TRM expectations around control assurance, evidence protection, monitoring, and cryptographic lifecycle management. The TLS certificate example is used as a concrete control signal, not as a claim of MAS TRM compliance.</em></p><p>The first CodeYourCompliance experiment uses a deliberately narrow scenario.</p><p>A Rocky Linux 10 host acts as the Ansible controller. A Rocky Linux 9 host runs Apache HTTPD with TLS enabled. The Apache TLS certificate is intentionally configured to approach expiry within a short window, such as 48 hours.</p><p>The goal is not to prove full MAS TRM compliance.</p><p>The goal is to show how a technical audit conclusion can be traced back to timestamped, integrity-checked system evidence.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!g-2X!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60d45d1a-4a24-4624-836f-89c6e8eb8842_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!g-2X!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60d45d1a-4a24-4624-836f-89c6e8eb8842_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!g-2X!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60d45d1a-4a24-4624-836f-89c6e8eb8842_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!g-2X!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60d45d1a-4a24-4624-836f-89c6e8eb8842_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!g-2X!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60d45d1a-4a24-4624-836f-89c6e8eb8842_1672x941.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!g-2X!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60d45d1a-4a24-4624-836f-89c6e8eb8842_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/60d45d1a-4a24-4624-836f-89c6e8eb8842_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1058053,&quot;alt&quot;:&quot;Diagram showing a seven-stage evidence validation pipeline: system state, read-only collection, timestamped evidence package, integrity verification, derived facts, policy evaluation, and audit narrative.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.codeyourcompliance.com/i/195828058?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60d45d1a-4a24-4624-836f-89c6e8eb8842_1672x941.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Diagram showing a seven-stage evidence validation pipeline: system state, read-only collection, timestamped evidence package, integrity verification, derived facts, policy evaluation, and audit narrative." title="Diagram showing a seven-stage evidence validation pipeline: system state, read-only collection, timestamped evidence package, integrity verification, derived facts, policy evaluation, and audit narrative." srcset="https://substackcdn.com/image/fetch/$s_!g-2X!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60d45d1a-4a24-4624-836f-89c6e8eb8842_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!g-2X!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60d45d1a-4a24-4624-836f-89c6e8eb8842_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!g-2X!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60d45d1a-4a24-4624-836f-89c6e8eb8842_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!g-2X!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60d45d1a-4a24-4624-836f-89c6e8eb8842_1672x941.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">A minimal MAS TRM-inspired evidence validation pipeline, from system state to audit narrative.</figcaption></figure></div><p>The pipeline is intentionally small:</p><ol><li><p>Collect system state in read-only mode.</p></li><li><p>Package evidence with an ISO 8601 timestamp.</p></li><li><p>Generate a SHA256 integrity hash.</p></li><li><p>Verify the evidence before analysis.</p></li><li><p>Derive TLS facts such as certificate expiry and signature algorithm.</p></li><li><p>Evaluate verified facts using OPA/Rego[2] policy logic.</p></li><li><p>Generate a MAS TRM-aligned audit narrative.</p></li></ol><p>The important design choice is this:</p><p><strong>Policy evaluation should not run on unverified evidence.</strong></p><p>If the evidence hash does not match, the result should not be pass or fail. The correct result is <code>invalid_evidence</code>.</p><p>That boundary separates weak automation from defensible audit automation.</p><h2>What This Experiment Shows</h2><p>This experiment demonstrates a minimal replayable evidence path.</p><p>The audit conclusion is not based on a screenshot, a manual statement, or declared configuration alone.</p><p>It is based on collected system evidence, sealed at a point in time, verified for integrity, normalized into facts, evaluated by policy, and translated into an audit narrative.</p><p>For example:</p><blockquote><p>Based on cryptographically verified TLS certificate evidence collected at a specific time, the HTTPS service was operating with a certificate approaching expiry within the defined threshold. This condition weakens assurance over the TLS certificate lifecycle and does not align with MAS TRM-inspired expectations for maintaining strong cryptographic controls.</p></blockquote><p>That sentence is not just prose.</p><p>It has a chain behind it:</p><p>system state -&gt; timestamped evidence -&gt; integrity verification -&gt; derived facts -&gt; policy evaluation -&gt; audit narrative</p><p>That is the difference between a report and a replayable audit path.</p><h2>Scope and Limitations</h2><p>This is not legal, regulatory, audit, or certification advice.</p><p>It does not claim MAS TRM compliance.</p><p>It does not replace auditors, risk owners, governance teams, or formal regulatory interpretation.</p><p>It also does not claim that SHA256 alone is enough for enterprise-grade evidence assurance. Production systems may require signed manifests, trusted timestamping, immutable storage, key management, approval workflows, and independent validation.</p><p>The point is narrower:</p><p><strong>Where technical evidence exists, compliance conclusions should be replayable.</strong></p><h2>Companion Repository</h2><p>The public companion repository for this article is available here:</p><p><a href="https://github.com/codeyourcompliance/evidence-validation-pipeline">https://github.com/codeyourcompliance/evidence-validation-pipeline</a></p><p>It contains the sample evidence structure, sample report, and future reference implementation assets for the evidence validation pipeline.</p><p>Substack explains the problem language. GitHub stores the public technical artifacts.</p><h2>Closing</h2><p>Compliance automation should not begin with the report.</p><p>It should begin with the evidence.</p><p>If the evidence cannot be collected, verified, evaluated, and replayed, then the conclusion may still be useful as documentation. But it is weaker as compliance evidence.</p><p>That is the line CodeYourCompliance will keep exploring:</p><blockquote><p>from static documentation<br>to replayable evidence<br>to machine-evaluable compliance.</p></blockquote><h2>Continue the Series</h2><p>This article introduces the core thesis: compliance is replayable evidence, not documentation.</p><p>Continue with:</p><ul><li><p><a href="https://www.codeyourcompliance.com/p/read-only-collection-as-an-audit">Read-Only Collection as an Audit Boundary</a></p></li><li><p><a href="https://www.codeyourcompliance.com/p/compliance-automation-starts-at-evidence">Compliance Automation Starts at Evidence.</a></p></li><li><p><a href="https://www.codeyourcompliance.com/p/can-your-audit-evidence-survive-replay">Can Your Audit Evidence Survive Replay?</a></p></li><li><p><a href="https://www.codeyourcompliance.com/p/what-a-mas-trm-checklist-cannot-prove">What a MAS TRM Checklist Cannot Prove.</a></p></li></ul><div><hr></div><p>[1] <strong>MAS TRM</strong> refers to the <strong>Monetary Authority of Singapore Technology Risk Management Guidelines</strong>.<br>Official MAS page: <a href="https://www.mas.gov.sg/regulation/guidelines/technology-risk-management-guidelines">https://www.mas.gov.sg/regulation/guidelines/technology-risk-management-guidelines</a></p><p>[2] <strong>OPA/Rego</strong> refers to <strong>Open Policy Agent</strong> and its policy language <strong>Rego</strong>.<br>Official OPA documentation: <a href="https://www.openpolicyagent.org/docs">https://www.openpolicyagent.org/docs</a></p>]]></content:encoded></item></channel></rss>