Sampled Assurance — Layer 1
Your internal AI auditor. Hand Trinitite a sample of your production AI chat logs and a policy. Get back a signed, externally-anchored compliance opinion — without ever touching your production traffic.
The annual checkup. The vehicle inspection. The pre-audit cleanup. Layer 1 of the Trinitite four-layer assurance stack.
What it is
Sampled Assurance is an offline, deterministic, signed audit service. You POST a batch of historical AI logs (up to 1,024 per batch) together with a policy reference. Within 72 hours you receive a signed compliance report: per-row pass | fail verdicts cited to specific policy clauses and framework controls, severity-calibrated dollar exposure, a Merkle-rooted verify bundle a third party can reproduce in a browser, and an RFC 3161 + Sigstore Rekor anchor that proves the report existed at the moment it was issued.
No production-traffic routing. No proxy install. No agent. You send logs.
Why it matters
- You have logs, not evidence. Tens of millions of rows with timestamps and free-text — no verdicts, no severity, no policy citation. Sampled Assurance converts logs into evidence.
- Your auditor wants a statistical sample with provenance, per-row verdicts cited to controls, dollar exposure, and cryptographic proof the verdict wasn't fabricated. Sampled Assurance ships all of it.
- Reproducibility. Same logs + same policy + same auditor version = same bytes, every time. The auditor can re-run the audit next month and get the identical answer.
- It's the wedge. Standalone, low-touch, reuses your existing logs. The signed report identifies the gaps; Continuous Assurance watches the live stream; Guardians step in inline.
How it works
- You POST a batch (up to 1,024 logs) with a format hint (
openai,anthropic,bedrock,vertex,canonical,raw_text). Submission returns{ job_id, status: "queued" }in milliseconds. - The auditor SLM scores each log — the same deterministic kernel as the runtime Guardian, with a
pass | failverdict surface, framework control citations, long-form rationale, and severity-calibrated violations. - Every per-item verdict is signed and hash-chained (SHA-256 over the canonical envelope; KMS HMAC over the hash). The chain is scoped per-job so a third party can prove inclusion without leaking sibling items.
- The job's Merkle root is anchored externally (RFC 3161 timestamp + Sigstore Rekor entry). Nobody — including Trinitite — can backdate the report.
- You receive a signed report + verify bundle. Hand it to your auditor; they verify it in a browser, without Trinitite.
What you get
| Artifact | What it shows |
|---|---|
| Signed compliance report (JSON) | Job-level summary + per-item verdicts, failed-count, total dollar exposure, top-3 violated controls, audit window. |
| Executive summary (markdown) | One-page narrative of the job, its hash pinned to the signed envelope. Regeneratable with your auditor's own instructions without invalidating the attestation. |
| Verify bundle (JSON) | Per-item attestation + chain hashes, recomputed Merkle root, KMS signature, anchor receipt id. Self-contained — verifiable without Trinitite. |
| Per-item DLIR cross-link | Each verdict carries a dlir_receipt_id pointing at the kernel attestation block for full reproducibility. |
| Webhook on completion | audit.assurance.sample.completed fires the moment the report is signed. |
Get started
- Run a paid 90-day Pilot: a policy working session maps your rules, then a signed pre-audit runs against a sample of your real production logs in 72 hours.
- Submit a batch via the Sampled Assurance API.
- Hand the verify bundle to your auditor — they reproduce the Merkle root and signatures in a browser.
The Pilot ships on the same deterministic kernel as the runtime Guardian, so the verdict your auditor signs off on in the pre-audit is the same byte-stable opinion that blocks in production later.
→ Sampled Assurance API — ingest, job status, report & verify bundle retrieval. → Continuous Assurance — the live-stream sequel (Layer 2). → Architecture — the deterministic kernel shared across all layers.