Reference & examples

Run it in fifteen minutes.

A single zero-dependency file does the whole pattern — verify the signed manifest, verify an artifact's hash against it, resolve one framework obligation to its addressing controls, and render the evidence each requires. Then see the same idea as data: one autonomous action on the wire.

The runnable reference implementation.

Node 18+ only (global fetch + node:crypto). No install, no dependencies.

$ curl -sO https://apeiris.ai/examples/prove-obligation.mjs
$ node prove-obligation.mjs

Full source: prove-obligation.mjs. Set OBLIGATION=EU-AIA-ART09-01 to try another obligation, or APEIRIS_BASE=<your-mirror-url>/integration to run against a local or private mirror.

 manifest signature verifies against ed25519-1b2d2270ebb2b50d — corpus release 2026.07.16
 proofmap.json integrity — sha256 c225275b89eec290… matches the signed pin

Obligation  EU AI Act · Art. 5(1)(a) — Prohibited AI — subliminal manipulation
Coverage    direct · 4 addressing control(s)

  EF-05 · EU AI Act Prohibited Practices Governance (Art. 5)   [fit:direct · basis:anchored]
  objective  Every AI system … must have an Art. 5 screening record …
  evidence   • prohibited_practices_register version-controlled with last_updated_date …
  …

mapped ≠ satisfied — this is the evidence you would need to PRODUCE; it does not assert you hold it.

One action, on the wire.

The same mapped ≠ satisfied idea as three JSON artifacts: the action an autonomous workload took, one control's attestation about it, and the composed verdict. Scenario — an accounts-payable agent issues an $18,500 payment to a newly-added payee: identity and scope are satisfied, the delegated approval limit fails, and the human-approval evidence is missing, so the verdict is requires_review, not a silent approval.

action-event.json

The action on the wire — actor, intent, operation, resource, and the evidence the workload presents.

illustrates the request shape
evidence-packet.json

One control's attestation about that action — a single, self-contained evidence record.

strict-valid vs evidence.schema.json
decision.json

The composed verdict — coverage (mapped) vs evidence (satisfied), and what's missing.

illustrates the response shape

What validates, precisely: evidence-packet.json validates strictly (additionalProperties:false) against the published evidence.schema.json. action-event.json and decision.json illustrate the platform prototype's request/response shape — the composer's on-the-wire contract — and are not claimed to validate against a published schema. The integrity.hash/signature values in the examples are illustrative placeholders, not real signatures; what is real is the structure.

Two ideas these make concrete. mapped ≠ satisfied — every control that governs the action is present and maps to it (coverage), which is not the same as the evidence being there (satisfaction); the decision reports both, separately. And evidence, not a decision — Apeiris reports what is proven and what is missing; whether to release, hold, or escalate stays the enterprise's gate to operate. See the same idea in the browser at Prove an obligation and the Evidence Proof Map.