← All posts
For everyone evaluating CME
For GRC + Compliance leaders

Every finding cites a corpus chunk. Here's why that matters to auditors

March 20, 2026

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.

What auditors do with this: When the auditor asks for evidence on a control, we hand them the AWS API response + the framework paragraph in one click. No 'the engine says it's a finding' hand-wave.

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.