External auditors don't accept 'because the model said so.' Neither do we. Every finding CME emits is gated by a critic that rejects uncited claims and verifies that the cited evidence actually says what the finding says it says.
What 'cited' actually means in our system
Two pieces of evidence per finding:
- A corpus chunk — the exact paragraph from the framework PDF (NIST, AWS WAR, SOC 2 TSC) that the finding maps to. Stored verbatim with provenance back to the source document.
- An AWS observation — the boto3 API call output (or Prowler check, or Access Analyzer finding) that produced the trigger. Stored content-addressed in S3 with the request parameters.
The agent CAN'T emit a finding without both. The critic gate at report.append rejects it. That's not a guideline — it's a control-flow constraint.
And the trail itself is hash-chained
Every line of audit_trail.jsonl includes a SHA-256 of the previous line. The terminal hash is published in the report. Anyone can re-download the JSONL, recompute the chain, and verify nothing's been altered post-completion.
That's not a feature we ship for theatre. It's the answer to 'how do we know this report wasn't edited?' that external auditors started asking once AI-generated outputs got common.