Skip to content

Every discovery observation converges into one bounded registry, deduplicated by node and runtime identity across sources, replay-protected per instance, and every surface projects that registry and holds no peers of its own

A node heard on multicast and handed back by a rendezvous is one record with two

declared statusdeclared status: guaranteed Declared deterministic and blocking, implemented, and naming the behavioural test that is to prove it. Whether a recorded run supports it is the evidence verdict, shown beside it.

recorded evidencerecorded evidence: not run Declared guaranteed, and not supported by a recorded run: the test is named, and no passing run of the current inputs is recorded. how evidence is recorded

tests/mesh.rs proves the convergence to one record over a real socket, and the registry unit tests prove multi-source deduplication, replay drops, restart handling and the eviction bound; test/cases/130_mesh.sh covers the operator's path without a network and carries no part of this claim; scripts/ci/mesh-check (gate mesh-check) refuses a UDP socket outside src/mesh/ and a second MeshRegistry construction site. Since discovery protocol 2 (ADR 0067) a record is one runtime of a node, so two worktrees of one machine are two records under one key.

What it means

A node heard on multicast and handed back by a rendezvous is one record with two sightings — never two rows with one truth each. The CLI, /api/v1/mesh/nodes, the MCP tools and the Cockpit's mesh page cannot disagree about who exists, because none of them holds a list: all of them render mesh::MeshRegistry. The registry is bounded (256 records; trusted nodes are never evicted for space, so a flood cannot flush a fleet), drops replays by per-instance sequence, decays presence after a minute of silence, and expires records entirely after fifteen minutes. A restart — the same key, a new instance — updates the record and increments restarts; it never duplicates.

How it works

Deduplication is by node id, which is a digest of the node's Ed25519 public key — never by address, so a machine that changes IP is still itself. Providers hand raw bytes to the manager (mesh::manager), which owns the one verification path — size, shape, version, bounds, staleness, signature — and only then touches the registry (apps/majordomus-cli/src/mesh/registry.rs). The registry unit tests prove convergence, replay drops, restart handling and the eviction bound; test/cases/130_mesh.sh proves the operator path; apps/majordomus-cli/tests/mesh.rs proves it over a real socket. scripts/ci/mesh-check (the mesh-check gate) refuses a UDP socket outside src/mesh/ and a second MeshRegistry construction site, so the one-registry property is machine-held, not remembered.

How to see it

majordomus mesh nodes                    # the registry, one row per node
curl http://127.0.0.1:8741/api/v1/mesh/nodes
scripts/ci/mesh-check                    # the structural half, as CI runs it
cargo test --manifest-path apps/majordomus-cli/Cargo.toml --lib mesh::registry

two_sources_converge_into_one_record and a_replay_is_dropped_and_counted are the named unit proofs; tests/mesh.rs shows one record surviving a restart over HTTP.

What it does not cover

The registry does not persist: a server restart forgets what was observed, by design. And it does not verify — verification happens in the manager before anything reaches the registry; the registry's own promise is convergence and bounds.

Why it exists

The characteristic defect of discovery subsystems is one peer list per transport until the surfaces disagree. One bounded registry, fed through one verification path, is the repair — and a gate holds it so the property survives contributors who never read the ADR.

Detail rendered from docs/claims/mesh-one-registry.md.

From the statement to the proof

  1. 1 · the public statement

    Every discovery observation converges into one bounded registry, deduplicated by node and runtime identity across sources, replay-protected per instance, and every surface projects that registry and holds no peers of its own

    Made on Mesh.

  2. 2 · the canonical claim

    mesh-one-registrydeclared status: guaranteed in docs/CLAIMS.yaml

    Defined in read it on this site · docs/MESH.md

  3. 3 · the implementation

    apps/majordomus-cli/src/mesh/registry.rs

  4. 4 · the test and the scenarios

    Test: apps/majordomus-cli/tests/mesh.rs

  5. 5 · the recorded runs

    recorded evidence: not run how evidence is recorded

Verify it yourself

The test runs in a disposable temporary repository and asserts the behaviour, not a string in the source.

from a clone of the repository
bash test/run.sh apps/majordomus-cli/tests/mesh.rs

Searches the titles and descriptions of every page this site publishes.