# What ships today — epcis.dev

This page exists so the landing page can be read as a description rather than as marketing. The rest of the site is written in the release tense; this page carries the delta, dated, and it is the ledger the rest of the site is checked against.

**Ledger date: 15 August 2026.** This build could not verify the gateway's test suite green, so no sentence on this page claims a passing run — the last verified run is recorded in the repository's own CI, not here. Live on this origin, no key required: POST /translate · POST /validate · POST /hash. The stateful spine is live at api.epcis.dev — POST /capture, GET /events and POST /mcp, capture key required. No conformance attestation has ever been issued. Every open entry below closes by shipping its mechanism — never by softening a sentence.

## Shipped

- Hosted on this origin: POST /translate, POST /validate and POST /hash — the stateless engine doors, no key required
- EPCIS 2.0 capture and query interfaces, against the pinned official OpenAPI — hosted at api.epcis.dev since 2026-08-05, capture key required
- Validation against the official GS1 EPCIS 2.0 JSON schema, on every capture
- RFC 7807 errors carrying the standard's exception types
- The CBV 2.0 §8.9 event hash, checked against pinned reference vectors
- Gateway stamping, with caller-supplied values stripped
- Append-only storage law, minimally scoped reads
- EPCIS 1.1 / 1.2 / 2.0 XML → 2.0 JSON-LD translation, with fidelity reports
- An MCP door: capture / query / get_event / translate as tools
- The automated conformance suite over the GS1 test requirements (TCRs)
- GS1's normative artifacts vendored and pinned by digest, re-verified in CI
- The business-transaction layer beside this gateway: npx transactions.dev (bin biztx) — X12 parse/emit/validate/ack, the API-native JSON intake, pinned self-authored grammars and a license-papered corpus; published, 0.1.0

## Open in the launch ledger

- Issued capture keys — the key list is open and the hosted door now answers it; issuance waits on the notify path and a named sender (P0-18)
- The public repository host — the clone URL ships on this site the day the publication ruling lands (P0-24)
- The Iceberg write path (Pipelines → R2 Data Catalog, R2 SQL reads) — the hosted spine writes the same rows, on the same daily partitions, straight to R2 today; the stream that would carry them is refused by the account's Pipelines quota (code 1017, 20 of 20 streams used), so the cutover is a backfill behind a limit increase (P0-14)
- Identity resolution and attestation — the resolve tool refuses rather than fakes while this row is open
- Bound price terms — the price itself is published: $0, machine-readable at /pricing on this door and all three siblings, declared binding: false so an agent reads it as stated intent and not as terms. What is open is the binding — $0/event capture stays intent until a terms page binds it (P0-15)
- A hosted conformance registrar and a named human Registrar — no conformance attestation has ever been issued (P0-16)
- Users. There are none, and there are no logos, quotes or numbers on this site
- The business-transaction layer’s EDIFACT track — parse of EDIFACT answers a typed SYNTAX_UNSUPPORTED refusal while this row is open (biztx ledger, EDIFACT P6)
- UNTDID directory vendoring — the committed ledger (vendor/untdid/PINS.json) records status vendored-license-read, 4 artifacts pinned; the owner license reading and browser download close it (BT-3)
- The biztx translate and join verbs — typed NOT_IMPLEMENTED refusals, never a fabricated event, while their P3/P4 gates are open (BT-5)
- The /reference/ EDIFACT deep pages — held out of the build by the BT-3 gate (fail-closed); they publish from the committed pin ledger the day the gate clears (BT-3/BT-7)

## How to read the two columns

The left column is shipped and checkable: code that passes its tests against GS1's normative artifacts — vendored, pinned by digest, re-verified in continuous integration — and the doors that answer on this origin right now. The right column is the open half of the launch ledger: each entry names its P0 number, closes by shipping the mechanism, and is dated when it closes.

epcis.dev conforms to EPCIS 2.0 and CBV 2.0 and claims nothing above them. GS1 has not reviewed, certified or endorsed this project.
