How to read this matrix
The status words are the records' own words:
- conformant: the implementation passed the conformance vectors named in its recorded result.
- parity-checked: the implementation was compared against its author's own verifier logic in large comparison runs. The record states this basis plainly: parity comparisons, not runs of the conformance kit. The matrix keeps that distinction visible instead of upgrading the claim.
- reference: the conformance kit itself, maintained with the draft.
One boundary applies to every row. A verifiable receipt proves the saved record was not changed since it was saved. Conformance results show that an implementation reads and checks those records the way the draft specifies. Neither proves the underlying work was correct.
Independent implementations
| Implementation | Implementer | Language | Draft revision | Recorded result | Status |
|---|---|---|---|---|---|
| ARION's AER-1 verifier | ARION | Node.js (stdlib-only) | draft-zambo-aer1-08 | 165/165 (full suite) | conformant |
| ARION's AER-1 Java verifier | ARION | Java 11+ | draft-zambo-aer1-10 | 186/186 | conformant |
| aer1-perl | ColonistOne | Perl (core modules only) | draft-zambo-aer1-09 | 68/68, zero disagreements against the Python and Node reference runners | conformant |
| MasterD AER-1 verifier | MasterD (Arkie AI) | Python (stdlib only) | not recorded | 84/84 | conformant |
| ARION's AER-1 Ruby verifier | ARION | Ruby | not recorded | 24,834/24,834 parity comparisons, 0 divergences | parity-checked |
| ARION's AER-1 Swift verifier | ARION | Swift | not recorded | 19,615/19,615 parity comparisons, 0 divergences | parity-checked |
| ARION's AER-1 PHP verifier | ARION | PHP | not recorded | 11,529 runs, 0 verdict divergences | parity-checked |
Source records: implementations.json in the kit (updated 2026-10-03) and the external entries of registry.json (updated 2026-10-08). ARION's Node.js verifier was written from the draft -08 text alone, with no kit access; the record notes it was independently reproduced twice against the reference kit. The Perl verifier's record notes three spec findings it filed that were adopted by draft -10.
Reference implementation and bundled ports
| Implementation | Implementer | Language | Draft revision | Recorded result | Status |
|---|---|---|---|---|---|
| Zambo reference implementation (conformance kit) | Brennan Zambo | Python / JavaScript | draft-zambo-aer1-21 | Corpus: 119 vectors, 122 checks per runner, including 9 Merkle vectors | reference |
The kit also ships bundled ports, each recorded in registry.json at 45/45 against the frozen v1.3.2 corpus (45 vectors), tracking draft revision -10:
| Bundled port | Language | Recorded result |
|---|---|---|
| aer1-implementations/rust | Rust | 45/45 |
| aer1-implementations/go | Go | 45/45 |
| aer1-implementations/typescript | TypeScript | 45/45 |
| aer1-implementations/python | Python | 45/45 |
| aer1-implementations/java | Java | 45/45 |
| aer1-implementations/csharp | C# | 45/45 |
| aer1-implementations/swift | Swift | 45/45 |
Interop runs
| Run | Date | Recorded result | Record |
|---|---|---|---|
| AER-1 x Tanilo: two-party receipt chain | 2026-10-08 | Chain verified end to end, each receipt checked under its own rules. Chain run by Joe Krausz (Tanilo): aer1_verify.py on the AER-1 example PASS, 15/15. Interop receipt anchored on GOAT mainnet, block 15948054. | Interop page and kit record |
| AER-1 x FlyThink: physical completion claims | 2026-10-08 | 4/4 cases replay PASS, including the case where a valid AER-1 receipt coexists with invalid physical evidence binding: binding never causes claim inheritance. | Interop page |
Worked agreement: the one-step Merkle root
The strongest row in this matrix is a single value computed three independent ways. Workflow 6b6952a5-ab1f-4596-a0b3-a352c137cb41 has one step, receipt 4028dabb-3d12-4960-855c-639ce37f14cc. Under Section 8.1 of draft-zambo-aer1-21, the Merkle leaf is the SHA-256 digest of the receipt_id's UTF-8 bytes, and for a one-step workflow that leaf digest is itself the root.
| Source | Root |
|---|---|
| Spec computation: SHA-256 over the UTF-8 bytes of the receipt_id | 7c90f65aeccd214f8bb583bec76878d5f463d65b9b26c11e07c51dd59be814d5 |
Conformance corpus: the one-step vector's expected_root in merkle-vectors.json | 7c90f65aeccd214f8bb583bec76878d5f463d65b9b26c11e07c51dd59be814d5 |
Hosted server: merkle_root returned by the workflow's API record | 7c90f65aeccd214f8bb583bec76878d5f463d65b9b26c11e07c51dd59be814d5 |
Recompute the spec side yourself in one line:
printf '%s' '4028dabb-3d12-4960-855c-639ce37f14cc' | sha256sum 7c90f65aeccd214f8bb583bec76878d5f463d65b9b26c11e07c51dd59be814d5
62780c8f..., the output-hash root, for this workflow. The kit record for the vector documents both values.Check any of this yourself
- The draft: draft-zambo-aer1-23 on Datatracker (full text at the IETF archive).
- The kit: conformance corpus, runners, and records. Run
python3 aer-1/conformance.pyornode aer-1/conformance.js. - The registry: the public registry of AER-1 implementations, with its machine-readable data.
- The implementation report: AER-1 Implementation Report, the narrative companion to this matrix: the kit, the independent implementations, the independent verifications, and the production deployment.
- Verify a receipt: how to verify an AER-1 receipt, or the hosted checker at zambo.dev/verify.
- Implement it: IMPLEMENTING.md, the one-prompt guide with starter kits.
See it live: zambo.dev/demo mints a verifiable receipt in about 10 seconds, no signup. Keep the receipt link and share it where the work gets reviewed. For a full day of receipt coverage, see the Day Pass.