// outputs
Reports and certificates.
The difference is deliberate.
Not every analysis is a certificate, and treating them as the same thing would empty the word. Arcifact issues two things, and keeps them apart on purpose.
01
Evidence report
A reproducible analysis bound to exact source bytes, with a verifier that recomputes it. Unsigned. The honest description of most work, including every Gate finding disclosed so far.
02
Issued certificate
A report that additionally meets the full signed issuance profile: an out-of-band issuer signature, a live expiry, a signed revocation entry and a complete manifest set with member bytes verified.
A verifier told to require the issued profile treats it as a floor, never a downgrade: an unsigned report asked to meet it fails rather than quietly passing at a weaker grade.
// § 01 · one envelope
The same structure, whichever instrument produced it.
Every record carries the fields below. They are the ones a recipient needs in order to disbelieve it efficiently: what was examined, what it is bound to, what was claimed, what was excluded, what was assumed, and how to check the lot without trusting the issuer.
A
Bound
Every input digested. If your copy differs, the verifier reports a source mismatch instead of a stale result.
B
Bounded
The envelope must name what was out of scope. A record that declares nothing out of scope is rejected by the schema, because every result has a boundary.
C
Unresolved is a verdict
A claim the evidence does not settle is marked unresolved and must name the observation that would settle it. Omitting that is a validation failure, not a stylistic lapse.
D
Assumed, and said so
Anything taken as given is listed. If it is unverified, the record must say how you would verify it yourself.
// FIG. 04 · sample · gate-ci/1
A Gate record.
A synthetic example. The payload for a merge-gate finding. Note that enforcement is a separate field from the gate's name: a job called required is a naming convention, and only a required-check list settles whether it is enforced.
"instrument": "gate",
"profile": "report",
"source_bindings": [
{ "path": ".github/workflows/ci.yml",
"sha256": "9f2c...a41e" } ],
"claims": [
{ "id": "closure.contract_tests", "verdict": "holds" },
{ "id": "policy.should_block", "verdict": "unresolved",
"settled_by": "a statement of intent, or the job being
made a required context" } ],
"payload": {
"payload_schema": "gate-ci/1",
"gate": { "display_name": "all checks passed",
"mechanism": "collective",
"enforcement": "unverified" },
"covered_jobs": [ "unit-tests", "lint" ],
"uncovered_jobs": [
{ "job": "contract-tests",
"gap_type": "parallel_uncovered",
"severity": "latent" } ] }
// FIG. 05 · sample · model-evidence/1
A Model Evidence record.
Same envelope, different payload. The thresholds field records that the bar was registered before the run. Without that, a rate is just a number someone chose to publish.
"instrument": "model-evidence",
"profile": "report",
"claims": [
{ "id": "fabrication.rate", "verdict": "holds" },
{ "id": "generalisation.heldout", "verdict": "unresolved",
"settled_by": "a scored run against the held-out bank" } ],
"payload": {
"payload_schema": "model-evidence/1",
"banks": [ { "name": "diamonds_zero_shot", "n": 150,
"sha256": "..." } ],
"fabrication_rate": 0.0,
"stance": { "answered": 118, "refused_entitled": 32,
"unwarranted": 0 },
"thresholds": { "fabrication_rate_max": 0.02,
"registered_before_run": true },
"scorer_strict": true }
// § 02 · what it is not
A record is a statement about specific bytes under a declared boundary. It is not a warranty, not a safety guarantee, and not a claim about behaviour outside the envelope it names. A Gate record proves a job sits outside a gate's closure; it does not decide whether it ought to. A Model Evidence record reports a rate on named banks; it says nothing about prompts those banks do not contain. Where a record cannot establish something, it is required to say so, and the verifier fails records that do not.