Unreleased documentation. These pages follow the main branch and can change before the next release. For supported guidance, use v0.46.0.
Prove a Registry Evidence project
For the assertion provider and operator
You are in adult-status, the project from
Your first assertion. Before anyone packages it for a real host,
prove that every assertion definition gives the answer it should, including at the edges where a
wrong answer would hurt. Fixtures run offline, so the source and Registry Evidence can keep running
in the background; nothing here uses them.
Find each definition’s fixture
Section titled “Find each definition’s fixture”Each assertion definition in evidence.yaml names its fixture, the file of synthetic cases that
proves it. The project holds one fixture for each of its four definitions:
ls fixturesadult-status.yamllegal-parent-relationship.yamlprofessional-licence-status.yamlresidence-region.yamlThe adult-status definition ends by naming its fixture:
observationTimezone: Asia/Bangkokfixtures: fixtures/adult-status.yamlA case intercepts the pack’s register endpoint, supplies the synthetic exchange it answers
with, and states the result it must produce. These two cases hold the same birth date and sit one second apart, on either side of midnight in Bangkok on the
eighteenth birthday:
expectedValue: false expectedLookup: match derivationRuns: true signedSuccess: true observedAt: '2026-10-13T16:59:59Z'- id: boundary-at-bangkok-midnight source: intercepts: - type: endpoint endpoint: register exchanges: - request: endpoint: register method: GET path: "/people/adult" response: status: 200 body: total: 1 record: record_id: adult birth_date: '2008-10-14'The first expects false, the second true. A definition that compared dates in UTC would fail
one of them. A fixture states inputs and expected outcomes only; the definition keeps its source,
function, outputs, and grant ceiling.
Run every fixture
Section titled “Run every fixture”Run all four fixtures, and treat a warning as a failure, the way a build should:
rstack evidence test . --target local-target.yaml --deny-warningsPASS: checkPASS: fixtures/adult-status.yaml (10 cases)PASS: fixtures/legal-parent-relationship.yaml (9 cases)PASS: fixtures/professional-licence-status.yaml (10 cases)PASS: fixtures/residence-region.yaml (9 cases)5 passed, 0 failed (38 cases evaluated)Proof: offline synthetic fixture evaluation; no live dependency readiness was checkedEach case runs through the matching evidence binary, from source extraction to an
offline-verified signature. The Proof: line states what passing means: every case supplies its
own source response, so no live source, credential, or token issuer took part. Whether the real
source and issuer answer is a separate check, made on the host that serves.
The fixture grammar is closed, so an unknown key, an unsupported expectation, or a real-data
marker refuses evaluation; the
fixture contract
lists the case forms. Treat a failed case, warning, or unknown field as a failed build input, and
never turn a real failure into an ignored case. For CI, --format json prints the same report as
one JSON document.
Explain one case
Section titled “Explain one case”When a case fails, the trace shows where. Ask for the trace of the midnight case:
rstack evidence test . --target local-target.yaml \ --fixture fixtures/adult-status.yaml \ --case boundary-at-bangkok-midnight \ --explain --deny-warningsThe trace lists every stage the case reached. Two of them read:
{ "note": "fact keys [\"birth-date\", \"residence-region\"]", "stage": "extract", "status": "ok"},{ "note": "the derivation script produced 1 value(s)", "stage": "derive", "status": "ok"},The trace names fact keys and counts, never a response, fact, derived value, or selector value. A failed case stops at the stage that ended it and adds its finding codes, so read the last stage first.
Cookies on Registry Stack
We use optional cookies to understand how you use the main Registry Stack website and this documentation. If you contact us, we may link this activity to your enquiry. You can change your choice at any time. Read the privacy policy.
Your browser asks sites not to track you, so optional tracking stays off.
We could not use or save that choice. Optional tracking remains off.