- Scoped to a project and a
periodStart/periodEndwindow (400 days maximum) - Hash-addressed — content-addressed by its own SHA-256, computed over the exact bytes stored, not over a re-serialized copy
- Immutable once generated — nothing about a completed pack is edited in place; generate a new one for a new period
- Never a compliance certification — see the honesty constraint below
The honesty constraint
Every generated document — Compliance Card or SOC 2 control evidence, in every format — carries this exact disclaimer, printed at both the top and the bottom of the document:“This document reports controls and evidence observed by Zespan for the stated scope and period. It is not a certification of compliance and does not constitute legal advice.”This isn’t boilerplate — it’s the feature’s design premise. A section with no matching records for a period renders the literal text “No evidence available for this period.” — never a suppressed section, never a silently-passing control. See Frameworks and controls for how an uncovered control is surfaced before you even generate a document.
The two document kinds
Compliance Card
Everything Zespan recorded about one agent (or all agents, if you leave the agent unset) for the period: profile, models used, guardrails in force, guardrail change history and outcomes, evaluation results with sample sizes, human approvals, known limitations, and change history.
SOC 2 control evidence
The same underlying facts, reorganized and namespaced under the three SOC 2 controls Zespan maps today — CC6.1, CC7.2, CC8.1. See Frameworks and controls for what each control draws on.
Generating a pack
1
Open Compliance
From the project sidebar, go to Monitor → Compliance. Requires the Pro plan.
2
Choose a document type
Compliance Card for one agent (or all agents), or SOC 2 control evidence for the framework mapping. Control evidence requires picking a framework — SOC 2 is the only one available today; see Not yet available.
3
Set the period
Pick
periodStart and periodEnd. The form defaults to the last full calendar month. Maximum period length is 400 days.4
Pick a format
HTML (default) or JSON — see Formats below.
5
Generate
Click Generate evidence pack. This returns immediately with the pack in
pending status — generation runs on a background worker, and the row updates to processing then completed (or failed) as it runs. The Compliance page polls automatically while any pack is in flight.6
Download or verify
Once
completed, use Download to get the document, or Verify to re-check it — see Verification.Formats
Downloading
GET /v1/projects/:id/evidence-packs/:packId?download=true returns a presigned download URL when packs are stored in object storage (Cloudflare R2), or the raw document content directly when running on local-disk storage (typically self-hosted or local dev). The dashboard’s Download button handles either case for you.
Permissions
A role without
compliance:generate can still list, download, and verify existing packs — it just can’t start a new generation.
Next steps
- Frameworks and controls — the SOC 2 CC6.1/CC7.2/CC8.1 mapping and what evidence each control draws on
- Verification — what
/verifyre-checks, and what it can’t - Compliance evidence limitations — the permanent data gaps this feature reports about itself
- Audit log — the record source behind access-control and change-history evidence

