What is normative
This directory holds the normative definition of the Makechain protocol, and nothing else.
A document belongs here if and only if two independent implementations must agree on it to agree
on the chain: block validity, state transitions, proof verification, settlement validity, release
activation, and the outputs a verifier re-derives from certified inputs, such as a finalized event
batch. Plans, operations guidance, client behaviour, derived views, availability profiles, evidence,
and rationale at length live under docs/ and are not normative.
There is a second normative category, deployment obligations: rules a conforming deployment MUST
meet that do not affect whether two implementations agree on the chain, such as keeping history in
two copies, running an exporter and its standby, and checking the store against certified headers.
They are normative because a deployment that ignores them loses history that no rule of the first
category can restore. Chapter 17 of SPECIFICATION.md is their home and names them as such; the
few that sit elsewhere stay with the subject they constrain, such as share custody in chapter 13.
The procedure for meeting any of them is in docs/operations.md.
| Document | Defines |
|---|---|
SPECIFICATION.md |
The protocol: identity, authorization, commands, state, blocks, consensus, proofs, settlement, releases, parameters, and invariants. Read this first. |
encoding.md |
The canonical wire contract: primitive encodings, tags, schemas, digest domains, and limits. |
state-machine.md |
The application transition tables: per-command guards, record access, accounting, and effects. |
settlement-interface.md |
The settlement source interface: contract layout, proof shape, and the values a credit import binds. |
Where two documents overlap, SPECIFICATION.md states the rule and the companion states its exact
bytes or table. A conflict between them is a defect in both until resolved. This file is the only
non-normative file in the directory.