A settle and the fortnight end are keys of wakes whose time to live is the wait, heard on expiry; attempts and would keep each key a week by its own time to live. Rearm stays only for a settle that expired while no instance watched. Pins mesh-sdk bc6c8a6.
46 lines
2.9 KiB
Markdown
46 lines
2.9 KiB
Markdown
# mesh-healers
|
|
|
|
Holds the seat `mesh-healers` (novox/hq ADR 0564 §7, §8): the mesh's healers, moved out of the controller. Go, one
|
|
binary (`cmd/mesh-healers`), served by a runtime of its own on its own bus account (`runs-as`).
|
|
|
|
## What it does
|
|
|
|
It hears the condition keeper's `condition-raised` and `condition-changed` (seat `mesh-conditions`) on a durable
|
|
consumer. A condition whose kind a healer answers is acted on within the healer's budget, its settle and the mesh-wide
|
|
brake (twelve acts an hour). A repair is a call of the seat or tool that owns the act: H3 asks the grants part's
|
|
`grants_assert` for the module whose consumer is gone. H4 (the controller's own consumer) and H5 (the provider's own
|
|
repair) are registered and run elsewhere.
|
|
|
|
Each act is begun by a create of its key in `attempts` before it is made and finished after, so a holder that dies
|
|
mid-act has spent it and a second instance cannot begin it again. The condition keeper writes the condition's
|
|
`tried`, resolver and escalation from `attempts`; a healer writes no condition.
|
|
|
|
**Only once the controller's lease names no controller.** Until the write that hands the lease away, each act it would
|
|
take is written to `would`, never to `attempts`: it counts for no budget, settle or brake and reaches no condition.
|
|
|
|
Each key of `attempts` and `would` lives a week from its last write, its own time to live (the buckets are declared
|
|
`key-ttl`): nothing else deletes `would`, and once the lease is handed away nothing is written there. The healers' waits
|
|
are keys of `wakes` whose time to live is the wait: `settle.<condition key>` ends with a settle and judges the condition
|
|
again, `fortnight` ends when S15's oldest counted act leaves the fortnight and counts again. The watch of `wakes` hears
|
|
each expiry; no timer runs in the process. A wait still running is on the bus across a restart; one that expired while
|
|
no instance watched is judged at the start, once the lease is first read.
|
|
|
|
S15: it watches the controller's hand-act log and writes `healer-wanted` for a cause repaired by hand twice within a
|
|
fortnight; a drill and a person's decision by design never count.
|
|
|
|
## What it keeps
|
|
|
|
- `mesh-healers_attempts`: every act and escalation, each key kept a week.
|
|
- `mesh-healers_would`: the newest act it would take per healer and condition while the controller holds the lease,
|
|
each key kept a week.
|
|
- `mesh-healers_findings`: the brake, its own blindness, and S15.
|
|
- `mesh-healers_wakes`: the waits, each key living as long as it waits.
|
|
|
|
## Its verbs and tools
|
|
|
|
- `mesh-healers.healers`: the registry, the acts of the last days, the would-acts, the brake, whether it acts and why;
|
|
`recount=true` counts the hand-act log again.
|
|
- `mesh-healers.heal`: one act now on an open condition, by key and why.
|
|
- `mesh-healers.drill`: refused until the hand-act log's home is delivered (issue 1953), naming `mesh-controller.drill`.
|
|
- `healers_findings`, `healers_would`, `healers_wakes`: the reads of its buckets.
|