The operator's boundary of 2026-10-08, recorded: what hardware a machine has is a node-engine fact; a module holding a generic role reads and provides it; a vendor module adds only vendor extras.
ADR 0256: a sensors module reads temperatures (against the hardware's own thresholds), fans, drive health (NVMe health log, SATA SMART) and the kernel's error counts on every machine. It claims no seat: nothing asks for the role yet, and a new seat would be a controller change first (ADR 0246). A hardware fault is said through ADR 0240's health (smartd by its unit, the module's root watch by the sensors_health tool), with the cost recorded: the condition names the module, and a standing fault holds the module's own builds at their gate. The machine judging its own hardware, as it judges its network, is the follow-up.
To-be 48 gains §11 (the machine under the modules: its hardware) and phase G.
Evidence: one of 116 catalogue modules read a temperature (the laptop's vendor module); none read a drive's health; the machines hold 20 drives, 15 spinning.
Checks: records.py, index.py, cycle.py, words.py and merge-check.sh pass locally.
The operator's boundary of 2026-10-08, recorded: what hardware a machine has is a node-engine fact; a module holding a generic role reads and provides it; a vendor module adds only vendor extras.
- **ADR 0256**: a `sensors` module reads temperatures (against the hardware's own thresholds), fans, drive health (NVMe health log, SATA SMART) and the kernel's error counts on every machine. It claims **no seat**: nothing asks for the role yet, and a new seat would be a controller change first (ADR 0246). A hardware fault is said through ADR 0240's health (smartd by its unit, the module's root watch by the `sensors_health` tool), with the cost recorded: the condition names the module, and a standing fault holds the module's own builds at their gate. The machine judging its own hardware, as it judges its network, is the follow-up.
- **To-be 48** gains §11 (the machine under the modules: its hardware) and phase G.
Evidence: one of 116 catalogue modules read a temperature (the laptop's vendor module); none read a drive's health; the machines hold 20 drives, 15 spinning.
Checks: records.py, index.py, cycle.py, words.py and merge-check.sh pass locally.
Implementation: novox/mesh-catalog `feat/sensors` (modules/sensors).
A machine's temperatures, fans and drive health were read by the laptop's vendor module only; the
machines' 20 drives were watched by nothing. The sensors module reads them on every machine, holds no
seat until a caller must reach it by role, and says a hardware fault through ADR 0240's health until the
machine judges its own hardware. To-be 48 gains §11 and phase G.
Deliverynovox/hq@df41dfff38b4 — delivered since 2026-10-08T13:21:10Z
Delivery plan — builds nothing: the change touches no module of the mesh's graph
Transitions
2026-10-08 13:04 (new) → proposed (announced): novox/hq#206's head announced
2026-10-08 13:04 proposed → checked (checked): the verdict names this commit
2026-10-08 13:04 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
2026-10-08 13:21 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
2026-10-08 13:21 published → delivered (done): nothing for a walk to move
The commit's note under refs/notes/mesh-plan keeps every transition: git log --notes=mesh-plan.
<!-- mesh-delivery:view -->
**Delivery** `novox/hq@df41dfff38b4` — **delivered** since 2026-10-08T13:21:10Z
**Delivery plan** — builds nothing: the change touches no module of the mesh's graph
**Transitions**
- 2026-10-08 13:04 (new) → proposed (announced): novox/hq#206's head announced
- 2026-10-08 13:04 proposed → checked (checked): the verdict names this commit
- 2026-10-08 13:04 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
- 2026-10-08 13:21 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
- 2026-10-08 13:21 published → delivered (done): nothing for a walk to move
The commit's note under `refs/notes/mesh-plan` keeps every transition: `git log --notes=mesh-plan`.
Rule 4 now matches the module after review: the NVMe temperature bit, old-age attributes, a fan's minimum
or alarm and a board chip's limits raise nothing; a stale watch does. The standby caveat is recorded: no
mesh tool sees a drive's spin-down timer, so spinning drives are read hourly.
After the second review: smartd is dropped as a second reader that could wake or keep awake the drives,
a stuck read or a drive not looked at is unhealthy, a drive asleep for a day is HIGH and never unhealthy,
and a board chip's maximum says nothing of a fan. The never-woken and hourly claims now say exactly what
holds.
The SAS sentence now holds for modes with spaces, a hung read is unhealthy in two to three minutes, not
one, every USB drive is told sat, and the limits of a stuck read are recorded.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
The operator's boundary of 2026-10-08, recorded: what hardware a machine has is a node-engine fact; a module holding a generic role reads and provides it; a vendor module adds only vendor extras.
sensorsmodule reads temperatures (against the hardware's own thresholds), fans, drive health (NVMe health log, SATA SMART) and the kernel's error counts on every machine. It claims no seat: nothing asks for the role yet, and a new seat would be a controller change first (ADR 0246). A hardware fault is said through ADR 0240's health (smartd by its unit, the module's root watch by thesensors_healthtool), with the cost recorded: the condition names the module, and a standing fault holds the module's own builds at their gate. The machine judging its own hardware, as it judges its network, is the follow-up.Evidence: one of 116 catalogue modules read a temperature (the laptop's vendor module); none read a drive's health; the machines hold 20 drives, 15 spinning.
Checks: records.py, index.py, cycle.py, words.py and merge-check.sh pass locally.
Implementation: novox/mesh-catalog
feat/sensors(modules/sensors).Delivery
novox/hq@df41dfff38b4— delivered since 2026-10-08T13:21:10ZDelivery plan — builds nothing: the change touches no module of the mesh's graph
Transitions
The commit's note under
refs/notes/mesh-plankeeps every transition:git log --notes=mesh-plan.