diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 85c37a9..86808bf 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -9,17 +9,24 @@ # catch-all. # -# WHY THESE PATHS NAME TWO OWNERS AND NOT ONE. +# WHY THESE PATHS NAME TWO ACCOUNTS AND NOT ONE. # # They named only @0j0bit until 2026-09-12. That deadlocks: GitHub does not let # anyone approve their own pull request, and the branch ruleset grants no # bypass to administrators, so a pull request touching one of these paths and # authored by its sole code owner could never be merged by anyone. # -# Both named accounts have write access, which a code owner must have to count. -# These lines currently resolve to the same two people as the catch-all, so -# their present effect is documentary: they record which paths are authorities. -# If the catch-all ever widens, they narrow again on their own. +# @0j0bit and @sed-boi are two GitHub accounts controlled by the SAME project +# owner. Either account may satisfy the code-owner review requirement for a +# change it did not author -- in practice, changes proposed by the +# mcl-release-governor App and reviewed as @0j0bit. This is account redundancy, +# NOT independent two-person review, and nothing here claims separation of +# duties. +# +# Both accounts have write access, which a code owner must have to count. The +# path lines below name the same accounts as the catch-all, so their present +# effect is documentary: they record which paths are authorities. If the +# catch-all ever widens, they narrow again on their own. * @0j0bit @sed-boi diff --git a/README.md b/README.md index 7c36cbc..cc3210d 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,46 @@ -# MCL Wire +
+
+
The exact bytes. One canonical encoding for every MCL object, on every transport.
+ + + ++ Use the SDK instead · + Specifications · + mcl-link +
+ +--- + +> ### Most people should start with the SDK, not here +> +> This repository is a **specification**. If you are building a product, start +> with [**mcl-sdk**](https://github.com/machine-contact-layer/mcl-sdk): its quickstart runs two machines making +> contact, and the release ships a self-contained developer SDK — one CMake +> project, no sibling checkout. Come back here when you need to know exactly +> what a byte means, or when you are writing an independent implementation. + +## Why this exists + +Two machines can only agree on meaning if they first agree, byte for byte, on +representation. MCL Wire is that agreement: one canonical encoding, no +optional orderings, no implementation-defined padding, and the same result on a +microcontroller and a server. + +An encoder that produces different bytes for the same object is wrong, and the +conformance vectors in this repository are how you find out. + +**Wire major 1 is Stable.** Major 0 remains for experimental objects; a Stable +major carries only Stable semantics, and the encoder refuses anything else. The specification is language-neutral. The v1.0 reference implementation is **portable freestanding C99** so the same byte contract can be used on bare-metal microcontrollers, RTOS targets, larger embedded systems, and hosted systems.