Conformance & pins
The conformance family ships as callable rows of the npm package: run the advisory suite, hand the evidence bundle to a counterparty, let them rejudge it offline, and diff the pinned normative artefacts the whole exercise is judged against. Every row here is npx epcis.dev away — no key, no account.
A run from this tool is advisory. It is unsigned, carries no attestation weight, and can never back a ConformanceAttestation. That sentence is printed by the tool itself at the top of every run.
conformance run
| contract | value | |
|---|---|---|
| Verb | `conformance run --self\ | --target d.json [--out o]` |
| Price class | free | |
| --self | the 18-check suite against the built-in hermetic reference implementation (deterministic, loopback) — proves the suite, not any external system | |
| --target | an advisory run against the EPCIS 2.0 endpoint the descriptor names; the only network the CLI ever touches | |
| --out o | writes the full evidence bundle — a hash tree over complete HTTP transcripts (auth headers redacted at record time) | |
| --json | { mode: "advisory", notice, record } | |
| Exit codes | 0 ok · 1 fail · 2 usage · 3 not-found · 4 internal | |
| Library twin | runSuite, ALL_CHECKS, buildEvidenceBundle, createReferenceTarget, REFERENCE_TARGET_DESCRIPTOR |
Target descriptor: { "name", "vendor", "version", "captureURL"?, "queryURL"?, "auth"?, "declared"? } — at least one URL required. Undeclared capabilities yield reasoned not-applicable rows, never silent skips.
conformance rejudge
| contract | value |
|---|---|
| Verb | conformance rejudge <run.json> [--signing-key b64] |
| Price class | free |
| Input | a --out run file or evidence bundle |
| What it does | offline verify + replay: checks the hash tree, replays every check from the recorded transcripts, reports identical or FAILED — a tampered bundle fails the tree |
| --json | { signature, replayed, identical, missingChecks, flips, ok } |
| Exit codes | 0 ok · 1 fail (rejudge mismatch) · 2 usage · 3 not-found · 4 internal |
| Library twin | rejudgeEvidenceBundle, verifyEvidenceBundle |
pins
| contract | value |
|---|---|
| Verb | pins |
| Price class | free |
| Output | one pin line per vendored official GS1 artefact: name, sha256, source URL |
| --json | the vendor/gs1/PINS.json record verbatim |
| Exit codes | 0 ok · 4 internal |
| Library twin | PINS, getPin, ARTEFACT_NAMES |
Every verdict in the suite — and every /validate answer — is judged against these pinned bytes, not against a URL that can drift. The pins page at /conformance/ renders the same table from the same source.
Proof — the suite, executed
Against the published npm package, epcis.dev@0.1.0:
$ npx epcis.dev conformance run --self --out run.json
advisory ADVISORY — this run was produced locally and is unsigned.
It carries no attestation weight and can never back a
ConformanceAttestation. Attestation requires an Ed25519-signed
run executed by a signing conformance service; this tool never
signs.
run advisory-bc1c86ed-2d6f-415e-bae0-f642ed96f990 suite=0.4.0
target=epcis.dev reference implementation
pass TCR-43.1
pass TCR-43.2
pass TCR-43.3
pass TCR-43.4
pass TCR-53.1
pass TCR-53.2
pass TCR-53.3
pass TCR-53.4
pass TCR-53.5
pass TCR-53.6
pass TCR-53.7
pass TCR-53.8
pass TCR-53.9
pass TCR-53.10
pass TCR-53.11
pass TCR-54
pass M121
pass M122
state passed passed=18 failed=0 total=18
wrote run.json
$ echo $?
0
(The advisory and run lines are single TSV lines on the wire; wrapped here for the page.) The written run.json is the evidence bundle the rejudge walkthrough replays offline.
We answer in writing. We take at most five conversations a month, only when you ask for one, and only after you already have the written read.