Compatibility: Pactmark 0.1.x.
An EvidenceRecord summarises selected events and claims after redaction. It is the artefact you hand to someone who was not there. It is explicitly not a hidden chain of thought, not a transcript, and not a compliance certificate.

Anatomy

Figure 1. supports and doesNotProve are both required arrays with a minimum length of one. A record that cannot articulate its own boundary fails schema validation. That constraint is the most opinionated thing in the framework. It is there because the failure mode of evidence systems is not missing data — it is a true statement being read as a broader one.

The fields, and what they are for

{ statement, claimType, scope }
required
One claim, in words, with a type and an explicit scope. Not a list of everything that happened.
string[]
required
What this record actually backs up. Minimum one entry.
string[]
required
What a reader must not conclude from it. Minimum one entry.
{ roleFamily, workflowId, riskClass, purposeCode }
required
The operating context, so the claim can be interpreted correctly later.
{ ai, human, description }
required
How the work divided between automation and people. Each metric is either a numeric value with a unit, or an explicit unavailable with a reason — not_collected, not_permitted, not_applicable or unknown.
Ref[]
References carried by digest. eventRefs requires at least one entry — evidence with no events behind it is not evidence.
The unavailable shape is worth copying in your own systems. “We did not measure this” and “this was zero” look identical in most dashboards, and they are completely different claims.

Redaction happens before export

Redaction is enforced at the boundary, not left to whoever configures the viewer. Prompts, completions, workspace bodies, tool arguments and results, credentials, challenge proofs, protected context and hidden reasoning do not enter evidence. The test suites run secret canaries across evidence, telemetry, events, artifacts, logs and HTTP responses. A canary appearing anywhere is a build failure.

Exporting

evidence verify re-checks the record’s internal references. KAF_EVIDENCE_INVALID_REFERENCE means the record points at something missing or incompatible — which is exactly the failure you want surfaced before the record travels somewhere important.

Pattern maturity is evidence about a pattern

A related mechanism: reusable patterns start as local observations and can be promoted only after repeated use, compatible agent and verifier identities, acceptable outcomes, explicit review, and no open high-risk finding.
A model cannot promote its own behaviour. Promotion with insufficient support raises KAF_PATTERN_INSUFFICIENT_EVIDENCE. Maturity is a statement about a bounded pattern version — new tool, policy, schema or environment digests require new evidence.

What evidence proves

Exactly this: the named checks, over the named bytes, in the named environment, at the named time. It does not prove truth, security, regulatory compliance, or fitness for any purpose outside that scope — and the record is required to say so itself.

What Pactmark does not prove

The complete list, at framework level.

Retention, deletion and audit

Keeping evidence as a distinct record with its own lifecycle.