admin
90f2545679
gates / gates (push) Successful in 9s
fix(disk-health): one physical disk must be evaluated once per run (R-335)
...
Found on live hardware two hours after the v0.215.0 deploy, by noticing the
release's own positive observable disagreed with its own persisted artefact:
the check logged '3 disk(s) evaluated' while disk-health-state.json held two
records. demo-hp's c11-scratch and felhom-backup are the same NVMe and share
a durable id, so one disk was walked twice per run.
Not cosmetic. The loop writes a disk's record before the next entry reads it,
so the second copy of an aliased disk consumed the FIRST copy's write as its
prior: the disk sustained against ITSELF and reached Hiba on a first sighting,
defeating truth-table row 6 — the rule that separates a one-hour benign
excursion from a false critical. It would also have emitted two identical
events for one drive. Latent on demo-hp only because all counters are zero.
Each diskKey is now evaluated once per run. Both entries stay marked seen so
neither looks like a disappeared disk, and the card still renders both rows —
the dedup is about state and alerts, not display.
Red-proof run and reverted: deleting the guard makes the first sighting emit
Kind:2 (Hiba-from-sectors) at 8 sectors.
2026-08-14 10:30:22 +02:00
..
2026-07-02 14:05:41 +02:00
2026-08-12 15:27:29 +02:00
2026-08-12 15:27:29 +02:00
2026-06-22 17:19:24 +02:00
2026-08-10 13:41:32 +02:00
2026-07-26 09:13:52 +02:00
2026-08-08 16:29:52 +02:00
2026-07-25 07:37:02 +02:00
2026-08-07 21:20:26 +02:00
2026-07-24 09:16:28 +02:00
2026-07-26 08:12:57 +02:00
2026-08-10 13:41:32 +02:00
2026-08-10 13:41:32 +02:00
2026-08-07 12:01:30 +02:00
2026-07-24 20:55:44 +02:00
2026-08-08 16:29:52 +02:00
2026-07-12 12:26:30 +02:00
2026-07-29 19:21:32 +02:00
2026-07-29 08:30:36 +02:00
2026-07-29 09:13:13 +02:00
2026-07-29 19:21:32 +02:00
2026-07-29 19:21:32 +02:00
2026-07-24 20:55:44 +02:00
2026-07-23 12:54:59 +02:00
2026-08-06 08:17:48 +02:00
2026-08-06 16:44:05 +02:00
2026-07-11 16:45:57 +02:00
2026-08-10 13:53:21 +02:00
2026-08-05 07:17:13 +02:00
2026-07-13 08:05:07 +02:00
2026-07-12 18:42:39 +02:00
2026-08-10 13:53:21 +02:00
2026-07-24 12:08:43 +02:00
2026-07-25 07:44:08 +02:00
2026-08-08 16:29:52 +02:00
2026-07-26 08:12:57 +02:00
2026-07-26 08:12:57 +02:00
2026-07-12 10:08:39 +02:00
2026-08-07 21:20:26 +02:00
2026-08-14 08:10:59 +02:00
2026-08-14 10:30:22 +02:00
2026-08-14 10:30:22 +02:00
2026-07-13 14:13:05 +02:00
2026-07-02 14:05:41 +02:00
2026-07-25 07:37:02 +02:00
2026-07-16 18:44:13 +02:00
2026-07-14 09:52:11 +02:00
2026-07-25 07:37:02 +02:00
2026-08-04 18:17:05 +02:00
2026-07-25 07:37:02 +02:00
2026-07-26 08:12:57 +02:00
2026-07-26 08:12:57 +02:00
2026-07-26 08:12:57 +02:00
2026-07-02 14:38:51 +02:00
2026-07-02 14:22:27 +02:00
2026-08-05 12:45:48 +02:00
2026-08-03 13:46:14 +02:00
2026-07-15 11:28:40 +02:00
2026-07-20 13:55:03 +02:00
2026-07-13 21:09:20 +02:00
2026-07-20 09:42:24 +02:00
2026-08-12 15:27:29 +02:00
2026-07-26 08:12:57 +02:00
2026-07-13 11:31:38 +02:00
2026-07-24 09:16:28 +02:00
2026-08-02 19:56:20 +02:00
2026-08-02 19:56:20 +02:00
2026-07-24 10:14:25 +02:00
2026-07-24 12:43:14 +02:00
2026-07-24 09:16:28 +02:00
2026-07-11 16:45:57 +02:00
2026-07-25 07:37:02 +02:00
2026-07-12 10:09:22 +02:00
2026-07-12 10:21:34 +02:00
2026-07-21 16:19:58 +02:00
2026-07-25 07:37:02 +02:00
2026-07-18 20:57:39 +02:00
2026-07-11 21:12:48 +02:00
2026-07-11 21:12:48 +02:00
2026-07-11 21:12:48 +02:00
2026-07-11 21:12:48 +02:00
2026-07-12 09:37:12 +02:00
2026-07-25 07:37:02 +02:00
2026-06-30 14:40:47 +02:00
2026-07-22 14:12:43 +02:00
2026-07-11 21:15:48 +02:00
2026-07-22 14:12:43 +02:00
2026-07-14 15:28:24 +02:00
2026-07-30 14:10:20 +02:00
2026-07-22 13:49:57 +02:00
2026-07-11 21:12:48 +02:00
2026-07-15 19:40:01 +02:00
2026-07-11 16:45:57 +02:00
2026-07-17 10:47:30 +02:00
2026-08-06 21:58:21 +02:00
2026-07-28 13:12:37 +02:00
2026-08-05 07:17:20 +02:00
2026-08-06 16:44:05 +02:00
2026-08-06 21:58:21 +02:00
2026-07-13 11:37:47 +02:00
2026-08-07 18:04:26 +02:00
2026-08-06 16:44:05 +02:00
2026-08-12 13:49:15 +02:00
2026-07-14 09:52:11 +02:00
2026-08-12 18:42:02 +02:00
2026-08-06 08:06:57 +02:00
2026-08-12 18:42:02 +02:00
2026-08-12 18:42:02 +02:00
2026-08-07 12:01:30 +02:00
2026-08-12 18:42:02 +02:00
2026-08-05 12:45:48 +02:00
2026-08-02 19:56:20 +02:00
2026-07-16 19:31:19 +02:00
2026-08-07 18:04:26 +02:00
2026-08-06 16:44:05 +02:00
2026-08-06 16:44:05 +02:00
2026-08-07 18:04:26 +02:00
2026-07-25 07:44:08 +02:00
2026-07-19 09:30:30 +02:00
2026-07-20 10:46:21 +02:00
2026-08-14 08:10:59 +02:00
2026-07-02 21:29:14 +02:00
2026-07-24 12:08:43 +02:00
2026-07-24 12:08:43 +02:00
2026-07-24 12:08:43 +02:00
2026-07-20 13:38:07 +02:00
2026-07-18 11:54:35 +02:00
2026-07-26 08:12:57 +02:00
2026-07-20 10:46:21 +02:00
2026-07-13 21:40:37 +02:00
2026-07-25 07:37:02 +02:00
2026-08-10 13:41:32 +02:00
2026-07-25 07:37:02 +02:00
2026-07-25 07:37:02 +02:00
2026-07-13 13:51:19 +02:00
2026-07-17 19:10:00 +02:00
2026-07-17 19:10:00 +02:00
2026-07-24 13:48:08 +02:00
2026-06-29 08:45:04 +02:00
2026-07-28 18:53:56 +02:00
2026-07-28 16:36:47 +02:00
2026-07-28 16:36:47 +02:00
2026-07-05 13:20:56 +02:00
2026-06-22 23:34:33 +02:00
2026-06-22 23:34:33 +02:00