The probes whose facts are on the bus run with their assertions unchanged (D6, D7, D15, DW, H-bus); the rest answer deferred, naming what they lack, never a pass. Findings go to its own bucket for the condition keeper; each run is kept a week and said as checked. The finding layout is a copy of mesh-sdk's S3 until that lands.
34 lines
1.9 KiB
Markdown
34 lines
1.9 KiB
Markdown
# 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.
|