Files
mesh-catalog/modules/mesh-self-check
jschoubben 1ba6c0de27 mesh-self-check: D8 reads placement's addresses and endpoints and asks each heard holder's ban list, so the probe moves off the controller with its kind, key and words (issue 1952, ADR 0564 §6)
The mesh's own addresses come from placement (each node's private address and its endpoint); who holds
node-intrusion-prevention, from seat-holders; who is heard, from the watchman's presence. Each heard holder is asked
seat:node-intrusion-prevention.banned@<node>, all at once. The finding is the controller's: machine.<node>.bans-the-mesh,
urgent, the same summary and words. A heard holder that does not answer makes the probe fail to run, never pass.
Rows in TestTheBusProbes; the manifest reads and invokes what the code does.
2026-10-29 23:44:35 +01:00
..

mesh-self-check

Holds the seat mesh-self-check (novox/hq ADR 0564 §6): the mesh's self-check, moved out of the controller. Go, one binary (cmd/mesh-self-check), served by a runtime of its own on its own bus account (runs-as), so that its account alone writes its buckets.

What it does

Every five minutes (the first run a minute after it starts) it runs its registry of probes, each within thirty seconds. A probe is one live invariant of a design, with its assertion as the controller had it, reading its facts on the bus (the bus module's tools for the bus's own state). A probe whose facts have no home on the bus yet answers deferred, naming them: never a pass. A probe that cannot run is said in the verdict at once, and written as a finding of its own (probe.<id>.failed) when the next run cannot run it either.

What a probe finds is written as a finding, one key <scope>.<id>.<kind> per fault, only when what it says changes, and deleted when a run no longer sees it. The condition keeper (mesh-conditions) raises and clears conditions from them. A finding one look can be wrong about (a consumer behind after a burst) is written when two runs in a row see it.

Every run ends with the event checked, the body of the controller's doctor-heartbeat, which the watchman (S10) and mesh-watcher on another machine hear: a self-check that stops checking is said through a path that does not pass through it.

What it keeps

  • mesh-self-check_findings: what it finds wrong now.
  • mesh-self-check_verdict: the key last, the last run whole.
  • mesh-self-check_verdicts: every run (each probe's findings at most twenty), kept a week by the bucket's age.

Its verbs and tools

  • mesh-self-check.doctor: the last verdict; run=true runs now; probe=<id> one probe whole.
  • mesh-self-check.probes: the registry, with what each deferred probe lacks.
  • self_check_findings, self_check_verdicts: the reads of its buckets.