jonnify·echd /echd/bus/one-bus/the-wire-fence

echd — Echo on Encore · E3.1 · dive

The Wire Fence

The protocol is the database's own wire behind one version fence — no broker, no library to bless — so any runtime that speaks it stands in the same consumer group as the BEAM.

Vision · real substrate

echd speaks in the present tense over a build ladder. Every module, verb, key, and port named on this page is real; the composition into one standing platform is the vision the ladder builds.

§1

The dive

docs/echo_mq/emq.streams.md:13-16 · specs/emq3/emq3.3.md

The bus has no broker. There is no EchoMQ process sitting between a client and the data, no bespoke wire format to serialize, no SDK to port to a new language. The protocol is Valkey commands and inline Lua, declared behind one version fence — echomq:3.0.0 — and that is the whole interface. A peer conforms to the fence, not to a client library, because there is no client library to conform to: there is the database's own wire, and a version number stamped on it.

That single fact is what makes the bus polyglot, and polyglot is not an aspiration here — it is a tested property. Because every runtime already ships a Valkey client, every runtime is a first-class peer the moment it issues the same commands against the same keys. A Go worker and a BEAM node are not bridged; they are equals on one group. The conformance suite makes the equality concrete: it stands a non-BEAM reader in the same consumer group as the BEAM consumers and drains the same pending-entries list — the seam demonstrated on the wire, not asserted in a doc.

§2

The fence and its peers

hover a part
One version fence, many peers, one group · hover to read
the wire — echomq:3.0.0 · Valkey commands + inline Lua · no runtime in the middle BEAM Go Python any client one consumer group · XREADGROUP · a non-BEAM reader drains the same pending list additive registration = a protocol minor · a wire break = a major speak Valkey + Lua behind the fence — you are a first-class peer
The fence. The protocol declares a version — echomq:3.0.0 — and speaks nothing but Valkey commands and inline Lua behind it. There is no broker process, no serialization format to agree on, no client library to port: the wire is the database's own wire.
The peers. Any runtime with a Valkey client is a first-class peer, not a second-class bridge. A Go worker, a Python consumer, and a BEAM node issue the same commands against the same keys — the bus has no privileged language.
The proof. The claim is tested, not asserted. The conformance suite stands a non-BEAM reader in the same consumer group as the BEAM consumers and drains the same pending-entries list — the polyglot seam, demonstrated on the wire.
Minor, or major. Registering a new command additively is a protocol minor — old peers keep working. Changing what a byte on the wire means is a major, and the fence is what makes the difference legible. The wire broke once; the version is how it never breaks silently again.

Hover or focus a part to read it; click to pin. Without scripting, all four read in sequence.

§3

Additive is minor, a wire break is major

docs/echo_mq/emq.design.md · emq.streams.md:13-16

The version on the fence is not decoration; it is a contract about change. Adding a command — a new verb inside one of the twelve families — is additive: old peers never issued it, so they keep working untouched. That is a protocol minor, and minors are cheap. Changing what an existing byte on the wire means — a key's shape, a field's order, a lease's encoding — is a major, because a peer built against the old meaning now reads the new bytes wrong. The fence makes the two kinds of change impossible to confuse: a peer checks the version and knows exactly which contract it is holding.

This is why a rung that re-drives a shipped script freezes the script's bytes to the last shipped version and proves it — a re-use rung is not allowed to quietly turn a minor into a major. The wire is hard-pinned because it broke once, and the lesson was not merely to fix that break; it was to make silent breaks structurally impossible. The polyglot promise depends on it: a Go peer trusts echomq:3.0.0 to mean today what it meant yesterday, and the fence is the mechanism that keeps that trust honest across every runtime on the group.

§4

The rule

one line to carry

The wire rule — the protocol is the database's own wire, so any runtime that speaks it is a peer. No broker to port, no library to bless: a peer conforms to the version fence, not an SDK. Additive change is a minor and old peers keep working; changing what a byte means is a major and the fence is what makes the difference impossible to miss.

§5

Doors

the seam, proven
§6

References

sources · related

Sources

Related