Skip to content

Commit 743913b

Browse files
committed
editorial: link the canonical-encoding rules from spec and vectors
Wire the name-link from the Q33 resolution and the vectors README intro to canonical-encoding.md, the companion-doc convention (named link, not a section number). Signed-off-by: Chris Raynor <chris@raynor.tech>
1 parent 79e1b10 commit 743913b

2 files changed

Lines changed: 2 additions & 2 deletions

File tree

spec.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -568,7 +568,7 @@ These forks are decided. Each keeps its frozen number and states both the questi
568568

569569
**Question:** Which binary form do contract definitions, grants, and attestations compile to, and how are they signed, under three load-bearing requirements: canonical encoding for byte-identical verification, embeddability on a constrained device without a heavy toolchain or transitive dependencies (the compute floor, question 28), and field inspectability (the legibility budget, question 21)? The candidates were Protobuf, CBOR with or without COSE, and canonical JSON.
570570

571-
**Resolution:** Deterministic CBOR, mandated as the single universal artifact encoding, with a minimal owned signed envelope rather than COSE. The form is versioned by a monotonically increasing integer, and its hash and signature algorithms are tagged for agility. Protobuf was declined as non-canonical by default, opaque, and heavy to embed, and because a libp2p substrate would drag it in (question 11). COSE was declined as heavier than the requirement and not self-enforcing of the exactly-one-encoding rule. Canonical JSON was declined as too verbose. The precise canonical ruleset and the envelope header layout are pinned by the conformance vectors and the canonical-encoding rules, not here.
571+
**Resolution:** Deterministic CBOR, mandated as the single universal artifact encoding, with a minimal owned signed envelope rather than COSE. The form is versioned by a monotonically increasing integer, and its hash and signature algorithms are tagged for agility. Protobuf was declined as non-canonical by default, opaque, and heavy to embed, and because a libp2p substrate would drag it in (question 11). COSE was declined as heavier than the requirement and not self-enforcing of the exactly-one-encoding rule. Canonical JSON was declined as too verbose. The precise canonical ruleset and the envelope header layout are pinned by the conformance vectors and the [canonical-encoding rules](canonical-encoding.md), not here.
572572

573573
### 15.2 Deliberately out of model
574574

vectors/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
The vectors are the normative, language-neutral definition of the Murmur byte contract (Section 6.3). They live with the specification, not with any implementation, because a canonical encoding proven by a single implementation is unfalsifiable: it only ever agrees with itself. Two implementations checking the same vectors, each verifying artifacts the other signed, is what makes the contract real.
44

5-
These are the core encoding vectors: canonical CBOR, content-addressing, and the signed envelope (Section 7.2). Per-profile vectors, such as the carried-content round trip and fencing-token pass-through, are a profile's own conformance unit and live with the profile, not here.
5+
These are the core encoding vectors: canonical CBOR, content-addressing, and the signed envelope (Section 7.2). The prose rules these vectors make executable are the [canonical-encoding rules](../canonical-encoding.md). Per-profile vectors, such as the carried-content round trip and fencing-token pass-through, are a profile's own conformance unit and live with the profile, not here.
66

77
## Layout
88

0 commit comments

Comments
 (0)