3. Conventions

Draft protocolSource at 169cbd2 ↗Excerpt SHA-256 c4f77db…018

This chapter fixes how the rest of the document is read: which words carry a requirement, which chapters are normative, what the notation means, how rules and invariants are numbered, and which other documents are part of the normative set. It defines no protocol behaviour of its own.

3.1 Requirement keywords and normative scope

The key words MUST, MUST NOT, SHOULD, SHOULD NOT, and MAY are to be interpreted as described in RFC 2119.

Chapters 3 to 20 are normative. Chapters 1 and 2 and Appendix A are informative. A subsection titled "Rationale" is informative and imposes no requirement.

R-3.1. A declarative statement in a normative chapter is a requirement: "a command whose sequence does not exceed the mark is invalid" means a conforming validator MUST reject it.

3.2 Notation

  • BLAKE3(x) is the 32-byte BLAKE3 digest of x. BLAKE3("domain" || x) prefixes the ASCII domain string, and every domain string is listed in one registry (chapter 6 and encoding section 11).
  • Keccak256(x) is the 32-byte Keccak-256 digest of x. It is used only on the proof path defined in chapter 6 and in the three pinned Tempo formulas of chapter 7.
  • || is byte concatenation.
  • u64(x) is a fixed-width big-endian encoding.
  • Sizes are in bytes.
  • canonical(T) is the canonical encoding of a value of type T under chapter 6.
  • A height is a block number from genesis.
  • Under DynamicReshareV1, an epoch is a fixed number of heights. FixedEpochZeroV1 admits only epoch zero (chapters 5 and 13).
  • A chainspec value is fixed by the genesis chainspec (chapter 5) and may be governed (chapter 18).
  • A calibration item is a value this document names but does not fix (chapter 19). A calibration item is never stated as a measured fact.
  • Identifiers in code are protocol names. Names taken from the underlying library refer to the pinned library version (chapter 2).

3.3 Rule and invariant numbering

Each rule carries the identifier R-<chapter>.<n>, written in bold at the start of the sentence it labels. A sentence that carries no rule number states a definition, a consequence, or a pointer, and adds no requirement of its own.

A rule identifier is unique within this document and is stable from revision 9 onward: a rule that changes is rewritten under its own number, a new rule takes the next free number in its chapter even where that breaks reading order, and a retired rule keeps its number and reads "retired" with a pointer to what replaces it. An identifier is never reused for a different rule.

Invariants are numbered INV-<group>-<n>, and an invariant identifier is never renumbered and never reused. An invariant appears once, in the subsection that defines the thing it constrains, as a quoted block:

> **INV-<group>-<n>.** <the invariant sentence, verbatim>

Chapter 20 indexes every invariant with its defining section.

3.4 The spec/ boundary and the normative companions

The normative set is this document together with the three companions under spec/, each a normative refinement subordinate to this document.

Companion Defines
encoding contract canonical field order, types, tags, domains, and proof framing
state machine command transitions and bounded execution
settlement interface the dedicated contract and proof boundary

Documents under docs/ are informative and carry no validity rule:

Document Records
../docs/architecture.md the library primitive map, the storage decision table, and the ownership boundary
../docs/client-api.md preparation, submission, reconciliation, and publication receipts
../docs/operations.md mesh topology, readiness and observability, sync and recovery procedure, admission and mempool policy
../docs/validation.md assurance layers and qualification gates
../docs/release-process.md the release lifecycle, rehearsals, and release assurance
../docs/history-query.md the history query tier, tables, manifests, and facade
../docs/availability-profile.md per-project availability-layer obligations, selective disclosure, and off-chain discovery
../docs/off-chain-signed-messages.md the off-chain signed message format and the service obligations that keep links, reactions, profile data, verifications, and layer announcements attributable without becoming commands (section 8.7)

Two artifacts sit outside every document. Literal conformance vectors pin byte equality, and the calibration report fixes the values of chapter 19. Prose and transport sketches do not substitute for either.


What every later chapter is built on.