v0.124.1: the repair record must survive the probe that did NOT feed the hub (R-190)
gates / gates (push) Successful in 6s
gates / gates (push) Successful in 6s
v0.124.0's transition record never reached the hub, and only the live run showed it. The capability reported degraded for "one cycle" — the probe call that did the repair. But probeAll is invoked independently by the self-check log and by the collector building a host report. On the demo box the repairing call was the log's (09:39:34, journal shows the self-repair and degraded=1) and the report three seconds later found the grant present and sent ok. The agent's journal had the record; the hub had nothing. That is the silence R-190 is about, re-created inside its own mitigation, with every unit test green. Fixed with a latch on TIME, not call count: a confirmed repair reports for 20 minutes, which exceeds the 900s report interval, so at least one report must carry it. It clears on its own and is per tier. Two hollow tests caught and fixed on the way — one asserting a value it built itself, one asserting the latch helper rather than the path consuming it (its red-proof duly passed). The decisions now live in storeGrantHealthyVerdict and storeGrantRepairedVerdict and the tests call those.
This commit is contained in:
@@ -1,3 +1,26 @@
|
||||
## v0.124.1 — the repair record must survive the probe that did NOT feed the hub (2026-08-04, R-190)
|
||||
|
||||
**v0.124.0's transition record did not reach the hub, and the live run is what showed it.** The
|
||||
capability reported degraded for "one cycle" — meaning the probe call that performed the repair. But
|
||||
`probeAll` is invoked **independently** by the periodic self-check log and by the collector building a
|
||||
host-report. On the demo box the repairing call was the log's (`09:39:34`, journal shows
|
||||
`GRANT WAS MISSING AND HAS BEEN SELF-REPAIRED` and `degraded=1`), and the host-report built three
|
||||
seconds later found the grant present and sent **`ok`**. The agent's journal had the record; the hub
|
||||
had nothing; the operator would have learned nothing.
|
||||
|
||||
That is the exact silence R-190 is about, re-created inside its own mitigation — and every unit test
|
||||
passed while it was true.
|
||||
|
||||
**The fix is a latch on TIME rather than on call count.** A confirmed repair is reported for
|
||||
`storeGrantRepairReportWindow` (20 minutes), which comfortably exceeds the 900 s host-report interval,
|
||||
so at least one report must carry the transition. It clears on its own — a permanently degraded
|
||||
capability would be its own false alarm — and it is per tier.
|
||||
|
||||
**Two hollow tests were caught and fixed on the way**, both the same shape this repo keeps finding: a
|
||||
test asserting a value it constructed itself, and a test asserting the latch HELPER rather than the
|
||||
path that consumes it — whose red-proof duly passed. The decisions now live in
|
||||
`storeGrantHealthyVerdict` and `storeGrantRepairedVerdict`, and the tests call those.
|
||||
|
||||
## v0.124.0 — a lost storage grant repairs itself, and says that it was lost (2026-08-04, R-190)
|
||||
|
||||
**R-190 is a grant that demonstrably worked at 04:44 on 2026-08-03 and was gone by 09:24** — with a
|
||||
|
||||
Reference in New Issue
Block a user