ADR 0074 — the wire is specified; an SDK is what passes the suite
ADR 0039 settles what belongs in an SDK. It does not say what happens when there is more than one, and there already is: the contracts are expressed as Go types in the control plane and host and as TypeScript types in the SDK, and nobody has felt it because both live in one repository. They already disagree. The provision's field is "resource" in one and "Provision" in the other; "consumer" means the module in one and the node in the other; the envelope declares six headers on one side and emits four on both — the missing two being x-causation-id and x-schema, the second of which is exactly what a body needs in order to change shape without silent misreads. That class of failure does not announce itself. Two implementations disagreeing about an envelope do not fail to compile — they ignore each other's messages, and a mesh where a module stops reacting looks like a mesh where nothing happened. So the decision is to specify the wire rather than share the types, because the shapes are the easy half. What two implementations actually disagree about is behaviour: queue naming and durability, which headers are required and what an unknown one means, taking identity from the sealed credential rather than the environment, dedup on an id only the emitter can make, pinning a fingerprint rather than trusting an authority. And the suite is executable rather than prose, because a specification nobody can run is a document two implementations drift from while both believe they conform. The two existing implementations are the first made to pass it — a suite only new SDKs must satisfy would certify every future language against a disagreement that is already here. Claude-Session: https://claude.ai/code/session_01D6qtiYU3P9jk3pnAXyAFyx
This commit is contained in:
@@ -106,6 +106,7 @@ python3 00-META/checks/index.py fail if stale
|
||||
- **0071** — [Genesis clones from a mesh, and checks what it got](0071-where-genesis-gets-its-source.md)
|
||||
- **0072** — [Two graphs, and a build chain that orders itself](0072-two-graphs-and-the-build-chain.md)
|
||||
- **0073** — [The installer carries a builder, and the registry stays where it is](0073-the-installer-carries-a-builder.md)
|
||||
- **0074** — [The wire is specified; an SDK is whatever passes the conformance suite](0074-the-wire-is-specified-not-the-types.md) *(proposed)*
|
||||
|
||||
### What runs on them, and how it gets there
|
||||
|
||||
|
||||
Reference in New Issue
Block a user