diff --git a/REPORT.md b/REPORT.md index 770a73a..52806a0 100644 --- a/REPORT.md +++ b/REPORT.md @@ -1,3 +1,42 @@ +# REPORT — v0.169.0/.1: Disk-health card + degradation notification ("Lemezek állapota") + +Part of the disk-health train (agent v0.94.0 + controller v0.169.0/.1 + hub v0.73.1). Appended above +the previous report (kept below). + +**Baselines:** controller `e164fef` (v0.168.0) → `c97975c` (v0.169.0) → `dbf6313` (v0.169.1). Clean at start. + +**What shipped:** +- `agentapi`: `SmartSummary` extended to the full counter set; `DiskInfo.Smart *SmartSummary`; pure + `DiskVerdictFor` (shared by card + check) + `Label` + `DegradedAttributes`. Verdicts: FAILING→Hiba; + PASSED+any(reallocated/pending/offline/critical/media >0 or percentage_used ≥90)→Figyelmeztetés; + PASSED clean→Rendben; nil/UNKNOWN→Nincs adat (never alarms). +- `web`: dashboard "Lemezek állapota" card (physical disks only — pbs/lvm/nfs/cifs excluded in v0.169.1) + via a 60s /disks TTL cache; unreachable agent → "Nincs adat", page never blocks. 6h `disk-health-check` + emits `disk_health_degraded` on a degradation only (in-memory baseline; first run silent; recovery/ + UNKNOWN never notify; multi-attr → one event). `notify.NotifyDiskHealthDegraded` (warn/critical). + **No global banner** (deliberate). + +**Tests + red-proofs (all recorded):** verdict table (red-proof: ≥90→>90 → boundary FAIL); notifier +emit (type/severity/subject); check first-run-silent (red-proof: disable the guard → first run notifies +FAIL); degradation-once; recovery-silent; UNKNOWN-excluded; FAILING→critical; nil-smart card graceful; +TTL cache. Full controller suite: 27 packages pass, 0 fail; build + vet clean; template/emoji/mojibake +gates OK. + +**Deploy + live validation (guest 9201):** built + deployed 0.169.0 → Up (healthy); dashboard rendered +the card. **§13(2):** first render showed 4 rows (pbs/lvm carried a default UNKNOWN SMART) → shipped +**v0.169.1** to exclude logical/network types; re-verified the card now shows exactly **2 physical rows** +(`local`, USB), both "Nincs adat" — the correct real verdict on the virtualized demo hardware. +**§13(3) notification path** (proven with the hub, see hub REPORT): a `disk_health_degraded` POST — the +exact wire call `notify.PushEvent` makes — was **400-rejected by hub v0.73.0** and **200-accepted + +emailed by hub v0.73.1**. Method: direct endpoint POST via curl (no fixture code committed → nothing to +revert; the demo's real disks stay "Nincs adat" so normal operation is quiet). + +**Awaiting operator:** browser visual check of the card layout (rendered HTML strings confirmed). A real +FAILING/Figyelmeztetés verdict can't occur on the virtualized demo hardware (no real SMART) — the verdict +logic + transitions are covered by unit tests + the live event-pipeline proof. + +--- + # REPORT — v0.168.0: Customer-configurable backup window ("Mentési időablak") **Date:** 2026-07-24 · **Deployed & verified live on guest 9201; box left configured at 02:30.**