Eformogi
The Record: protocol draft 0.1 (CC BY 4.0; verifier Apache-2.0)

The Record: protocol specification

Status: Draft 0.1, licensed 2026-09-07. This directory is a working draft extracted from the reference implementation in this repository. Chapters 01 to 10, the licensing ruling, and the reference verifier with its twenty-two conformance vectors are all published at eformogi.com/spec, so a receiver can obtain and run the whole standard without cloning anything and without an account. The specification is licensed CC BY 4.0; everything under verifier/ is licensed Apache-2.0; the name and the marks are not licensed by either. See LICENSING.md for the split, the trademark line, and the conformance policy. SECURITY.md is not published and stays under the repository root license. This standard defines the Record, the general term for everything a family holds, and the receipts it produces, chief among them the Witness Transcript™ (ruled 2026-09-12), the receipt (tr_) a family issues to a receiver. See "The name" below.

Purpose

The Record is a learner-owned learning record: a set of entries (courses, projects, work samples, notes) held by the learner's family, witnessed by adults who put their name on specific claims, sealed into content-addressed receipts, signed, committed to a public append-only log, and verifiable by anyone with the receipt and the artifact, online or offline, without an account and without asking the operator whether the receipt is real.

This specification exists so that four readers can check the same claims from the same text:

Scope

In scope: the data model of a Record and its entries; the receipt grammar and canonical hashing; the witness ceremony and its tiers; family and organization keys and their custody; the transparency log and its anchoring; the verification algorithm and its error semantics; export mappings; the interface a jurisdiction plugin must satisfy; the threat model; conformance vectors and the reference verifier.

Out of scope: the operator's product surfaces (dashboards, pricing, marketing), the consent-intake product for institutions except where its ecr_ receipt touches the grammar, any claim about acceptance by any receiver, and GDPR (this draft is US-first; see chapter 09).

What the Record is not. It is not a credential issued by a school on the learner's behalf. It is not a claim that any receiver accepts it. It is not zero-knowledge storage except for the individual families that have completed the key-custody ceremony described in chapter 04, and even then only for the private vault, not for the published receipts, which are public by design.

The name

Witness Transcript is a mark of Eformogi, Inc., not a description any implementation may claim by default. An implementation whose records pass the conformance suite in chapter 10 may call the resulting artifact a Witness Transcript and use the name in its own prose; an implementation that has not passed may not. The mark may not appear in a company name or a product name. Course rows and other entries a Record contains are not themselves Witness Transcripts; they are part of one. The full trademark text is in LICENSING.md; the conformance rule is in 10-conformance.md.

Conventions

Chapters

ChapterFileWhat it specifies
0101-record-model.mdPersons, entries, courses; the family as records office of record; the issuer concept
0202-receipts-and-canonicalization.mdThe receipt grammar tr_ cr_ ecr_ att_ ws_ wn_ wl_ tl_ kb_, canonical JSON, id derivation, the Kantara and FDEP receipt shapes
0303-witness-attestation.mdWitness request, token, signing, captured fields, tiers, revocation and dispute, identity levels 0 to 3
0404-keys-and-custody.mdEd25519 family and organization keys, the kb_ binding, escrow versus family-held custody, rotation and recovery
0505-transparency-log.mdThe Merkle log, signed tree heads, anchoring, inclusion proofs, cadence
0606-verification.mdThe verification algorithm step by step, online versus offline, exact error semantics
0707-exports.mdThe existing Verifiable Credential shape; mapping tables to Open Badges 3.0 and CLR v2.0
0808-jurisdiction-plugins.mdThe renderer interface for jurisdiction rule sets and compliance artifacts
0909-threat-model.mdThreats, controls, and their status, each citing the implementing file
1010-conformance.mdVector structure, the vector list, how conformance is claimed
verifier/README.mdThe reference verifier: what it checks, how to run it offline, the conformance suite
LICENSING.mdLicensing (CC BY 4.0 for the chapters, Apache-2.0 for the verifier), trademark, and conformance policy
TRUST_REPORT.mdTrust report v0: anchoring history, gate count, red-team history, external review status

Running the reference verifier

The verifier is a single Node file with no dependencies and no network access. Every file it needs is published alongside these chapters at /spec/verifier; nothing here requires a clone.

# every conformance vector (exits non-zero on any mismatch)
sh spec/verifier/run-vectors.sh

# one vector, with each step printed
node spec/verifier/verify-offline.js spec/verifier/vectors/v18-proof-four-steps-valid.json

# a real proof, downloaded from a /verify page or fetched from /api/receipt-proof?id=<receipt id>
node spec/verifier/verify-offline.js proof.json [--jwk pub.jwk] [--sha256 <hash of the artifact you hold>]

Exit codes: 0 verified or verdict matched, 1 failed or verdict mismatched, 2 usage or unreadable input. Node 18 or newer.

Relationship to the reference implementation

This draft documents what the code does today, including its gaps, and marks each gap as planned with the missing piece named. It does not describe a system that does not exist yet. Where the code is flag-gated (family signing under EFG_SIGNED_RECEIPTS, key custody under VITE_ZK_CUSTODY), the text says so.