Skip to content

IEEE register generated

Valence Protocol Specification#

This tier is generated. Edit the specification, not these pages.

Every page under Specification is produced from spec/SPEC.md by docs-site/tools/gen_spec_pages.py. That file is the normative source and the only place to make a change. A hand edit here is overwritten by the next build, and --check fails the build before that happens.

There is deliberately no second copy of the normative text on this site. An implementer trusts a specification absolutely, so a specification that can drift from its source is a defect, not a convenience.

Protocol: valence/1
Document version: v1.0-draft (public, not yet pinned — see Freeze state)
Status: Normative in content; the numbers are NOT frozen.
Registry of record: registry/registry.yaml — Appendices A, B and G are generated views of it. On any conflict between this document and the registry, the registry wins (§5.7).
Companion normative artifacts: schema/catalog.cddl (Appendix C), vectors/manifest.yaml (Appendix F), RENDERING.md (client-rendering conformance, §19).
Non-normative companions: RFC-QUEUE.md (change history and rationale), V1-READINESS.md, examples/session-traces.md (Appendix E).

FREEZE STATE — read this before building against any number here. Clauses throughout this document and RENDERING.md bind "from the v1.0 tag forward": the never-reuse/never-renumber rule (§5.7), the conformance fixture freeze (§16), and RENDERING.md's enumerable-vocabulary freeze (§14). That event has not occurred. It is the release pin — one commit the operator locks once the protocol has been put through its paces, after which only documentation, clients, and tools move. Until the pin exists, every one of those clauses describes a future state and binds nothing: numbers, frozen fixtures, and vocabularies MAY still change, and a registry regeneration is explicitly planned to happen at the pin (RFC-QUEUE.md). Implement against this document freely — that is what it is for — but treat no number as stable yet, and pin by commit sha, never by this document's version string. This notice is deleted at the pin, and its deletion is the announcement.

0. Reading this document#

Clause numbering is §<section>.<subsection>. Every section header carries *(normative)* or *(informative)*; where a section is mixed, the exception is named in its header. Numbered lists inside a normative section are normative. Tables are normative unless the section says otherwise.

Honesty clauses are normative statements about what this protocol does not protect against or does not guarantee. They are marked HONESTY CLAUSE inline and indexed in §1.5. They are requirements, not caveats: an implementation that presents a protected-sounding UI over one of them is non-conformant.

The clause pages#

The document is split by concern. Clause numbering is unchanged: §6.4 is §6.4 wherever it is published.

Page Clauses
Foundations §1 Introduction · §2 Terminology, Roles, and State Machines · §3 Architecture Overview · §4 Versioning and Compatibility Model
Wire format §5 Wire Format
Session layer §6 Session Layer
Time and sequencing §7 Time and Sequencing
Catalog §8 Catalog
Channel classes §9 Channel Classes
QoS and congestion §10 QoS, Flow Control, Congestion
Safety §11 Safety
Security and trust §12 Security and Trust
Transports and relays §13 Transport Bindings · §14 Relay Role
Legacy interop §15 Legacy Interop
Errors and diagnostics §16 Errors and Diagnostics
Conformance §17 Conformance
Known limitations §18 Known Limitations at v1.0
Rendering §19 Rendering
Appendices A-G Appendix A — Frame type table · Appendix B — CBOR key registry · Appendix C — Catalog schema · Appendix D — Worked catalog sketch · Appendix E — Worked traces · Appendix F — Golden vector index · Appendix G — Limits and defaults
Rationale and history Appendix H — Design rationale and rejected alternatives · Appendix I — Design-review gap closure map · Appendix J — What changed since v1-draft
Worked session traces Appendix E, in full
Catalog schema (CDDL) Appendix C, in full

Citing a clause#

Anchors are derived from clause numbers, never from heading text. A reworded heading therefore cannot break a citation made from a bug report or another repository.

Clause Anchor Example
Section §n #sn §11
Subsection §n.m #sn-m §6.4
Appendix X #appendix-x Appendix G
Trace En #en E4

Numbered items and lettered paragraphs inside a clause — §5.8-4, §12.3a — resolve to their parent clause, which is where they are read from.

Companion artifacts#

The specification's companions live beside it in the source repository. Three of them are published on this site, generated the same way these pages are:

Artifact Where
registry/registry.yaml — every wire number Registry reference, generated
examples/session-traces.md — Appendix E Worked session traces, generated
schema/catalog.cddl — Appendix C, the normative catalog encoding Catalog schema (CDDL), generated
vectors/manifest.yaml — Appendix F, golden-vector coverage source repository
RFC-QUEUE.md, V1-READINESS.md — change history and rationale source repository

The register#

This tier is written in the IEEE and RFC normative register. Numbered clauses. RFC 2119 keywords. Exact cross-references. It is permitted to be dense: implementers need exactness more than approachability.

Glossary tooltips are stripped from every page in this tier. In a normative document every word is normative or visibly marked otherwise, so a hover definition over a term inside a MUST clause would be a second, invisible source of meaning. The Dictionary stays one click away.

Everything outside this tier is written in the STE register. See Contributing.