The controller ended by its unassignment, so its lease key is absent for good and the healers stayed in shadow while nobody swept the artifact store (issue 1126, A4). Drop both gates and each manifest's read of mesh-controller.lease; the would bucket stays readable until its keys expire. Claude-Session: https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
47 lines
2.9 KiB
Markdown
47 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.
|
|
|
|
**They act, and no lease turns it** (issue 1126): the controller ended by its unassignment. While it ran, each act a
|
|
healer would take was written to `would`, never to `attempts`; nothing writes `would` any more.
|
|
|
|
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`. 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.
|
|
|
|
S15: it hears the seat mesh-hand-acts' `act-recorded` and 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 ran, each key
|
|
kept a week; nothing writes it any more.
|
|
- `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`: records a drill in the hand-act log of the seat `mesh-hand-acts` as `hand-act drill`; with
|
|
no holder of that seat it is refused. S15 never counts a drill.
|
|
- `healers_findings`, `healers_would`, `healers_wakes`: the reads of its buckets.
|