Both are one shape: something the box already knows, drawn as its opposite. R-259 — A DISK WE FAILED TO READ WAS DRAWN AS A HEALTHY EMPTY DISK. readDiskUsage (internal/system/info_linux.go) logged a statfs failure at DEBUG and returned, leaving the caller's TotalGB/UsedGB/AvailGB/Percent at zero — and usageColor(0) is "nominal". The dashboard's most-looked-at meter therefore rendered "0.0 GB / 0.0 GB (0%)" with a 0%-wide bar in the healthy colour. "We could not look" and "there is plenty of room" were the same picture. readDiskUsage now returns whether the measurement succeeded; SystemInfo gains DiskKnown and HDDKnown (HDDConfigured is not a substitute: it says a path was configured, not that reading it worked); and the template draws NO figure, NO percentage and NO meter fill when unknown, saying "A tarhely merete most nem olvashato ki." instead. A healthy box is byte-identical, colour band included. This session rules the convention (felhom.eu CONTEXT.md S-39): an explicit `...Known bool` companion beside the figures, checked in the template — the shape Offbox.StatsKnown already uses, whose own comment says "a 0%-wide bar over an unread store is a picture of emptiness, and a picture is a claim". Pointers and separate error fields are both legitimate Go, but a codebase with three dialects cannot be gated (ROADMAP G-3 was blocked on exactly this). Existing call sites NOT converted. R-258 — THE PER-APP BACKUP TICK WAS GREEN ON PRESENCE, AND RED ONLY ON A GLOBAL CONDITION. buildAppBackupRows set Tier1LastStatus from status.LastDBDump.Success, which is the box's single most recent dump RUN, whichever app it belonged to. An app whose own dump failed showed a tick as long as some other app dumped successfully afterwards; an app with no database took the nil branch and went green on the mere existence of a restore point. appDumpVerdict now reads THIS app's own entries in DBDumpStatus.Results (matched on DumpResult.DB.StackName, failure = non-nil Error). Three states: any failing database -> error; all clean -> ok; no result recorded -> NO verdict and no icon, titled "Errol a mentesrol nincs eredmenyunk." The recovery unit carries no per-run outcome of its own, so green cannot honestly be derived from presence. The global tier1DBStatus label is untouched — it is correct as a global. RECENCY IS DELIBERATELY NOT ADDED. A tick over a three-week-old restore point is a real weakness, but an age threshold means inventing a number and the time is already printed beside the icon. Recorded as an observation, not changed. AN EXISTING TEST WAS ASSERTING THE DEFECT AND WAS CORRECTED, NOT DELETED: TestBuildAppBackupRows_Tier1FromRestorePoints expected "ok" for a status with no LastDBDump at all — green from nothing but a file's existence. It now expects no verdict; its real subject, the Tier1LastRun time, is unchanged. The dashboard test EXTRACTS the meter block from the shipped template rather than copying it: a copied block drifts, and a drifted copy passes while the page it claims to cover has changed — the fixture-is-not-the-wire mistake this project has now hit twice. Six red-proofs across both parts, each with the mutation asserted applied. No new tag on any declared wire — report/builder.go maps into its own types and is untouched; wire_contract_gate.py confirmed green. go build / go vet / go test ./... green (28 packages), controller_gates --fast all OK, both run separately from this commit.
This commit is contained in:
@@ -1,3 +1,52 @@
|
||||
## v0.210.0 — two pictures that were not true (2026-08-08, R-259 / R-258) — MinAgent 0.127.0
|
||||
|
||||
Both are the same shape: something the box already knows, drawn as its opposite.
|
||||
|
||||
**R-259 — a disk we failed to read was drawn as a healthy empty disk.** `readDiskUsage`
|
||||
(`internal/system/info_linux.go`) logged a `statfs` failure at DEBUG and returned, leaving the
|
||||
caller's `TotalGB/UsedGB/AvailGB/Percent` at zero — and `usageColor(0)` is `"nominal"`. The
|
||||
dashboard's most-looked-at meter therefore rendered „0.0 GB / 0.0 GB (0%)" with a 0%-wide bar in the
|
||||
healthy colour. **"We could not look" and "there is plenty of room" were the same picture.**
|
||||
|
||||
`readDiskUsage` now returns whether the measurement succeeded; `SystemInfo` gains `DiskKnown` and
|
||||
`HDDKnown`; and the template draws **no figure, no percentage and no meter fill** when unknown,
|
||||
saying „A tárhely mérete most nem olvasható ki." instead. A healthy box is byte-identical to before,
|
||||
colour band included.
|
||||
|
||||
**This session rules the convention** (`felhom.eu/CONTEXT.md` S-39): an explicit `…Known bool`
|
||||
companion beside the figures, checked in the template — the shape `Offbox.StatsKnown` already uses,
|
||||
whose own comment says *"a 0%-wide bar over an unread store is a picture of emptiness, and a picture
|
||||
is a claim"*. Pointers and separate error fields are both legitimate Go, but a codebase with three
|
||||
dialects cannot be gated. Existing call sites were **not** converted.
|
||||
|
||||
**R-258 — the per-app backup tick was green on presence, and red only on a global condition.**
|
||||
`buildAppBackupRows` set `Tier1LastStatus` from `status.LastDBDump.Success`, which is the box's
|
||||
single most recent dump **run, whichever app it belonged to**. An app whose own dump failed showed a
|
||||
tick as long as some other app dumped successfully afterwards, and an app with no database took the
|
||||
`nil` branch and went green on the mere existence of a restore point.
|
||||
|
||||
Now `appDumpVerdict` reads THIS app's own entries in `DBDumpStatus.Results` (matched on
|
||||
`DumpResult.DB.StackName`, failure = non-nil `Error`). **Three states:** any failing database →
|
||||
`error`; all clean → `ok`; **no result recorded → no verdict and no icon**, with the title
|
||||
„Erről a mentésről nincs eredményünk." The recovery unit carries no per-run outcome of its own, so
|
||||
green cannot honestly be derived from presence. The global `tier1DBStatus` label is untouched.
|
||||
|
||||
**RECENCY IS DELIBERATELY NOT ADDED.** A tick over a three-week-old restore point is a real
|
||||
weakness, but an age threshold means inventing a number and the time is already printed beside the
|
||||
icon. Recorded as an observation.
|
||||
|
||||
**An existing test was asserting the defect and was corrected, not deleted:**
|
||||
`TestBuildAppBackupRows_Tier1FromRestorePoints` expected `"ok"` for a status with no `LastDBDump` at
|
||||
all — green from nothing but a file's existence. It now expects no verdict; its real subject, the
|
||||
`Tier1LastRun` time, is unchanged.
|
||||
|
||||
Four red-proofs, each with the mutation asserted applied: reverting to the global field returns app
|
||||
X's false green; mapping "no result" to `ok` returns green-on-presence; ignoring the known-flag
|
||||
returns „0.0 GB / 0.0 GB (0%)"; forcing the flag false shows a healthy box losing its numbers.
|
||||
|
||||
**No new tag on any declared wire** — `report/builder.go` maps into its own types and is untouched;
|
||||
`wire_contract_gate.py` confirmed green.
|
||||
|
||||
## v0.209.0 — the box stops saying a false thing about its own recovery package (2026-08-08, R-247 / R-260) — MinAgent 0.127.0
|
||||
|
||||
**R-247, and it is the third instance of one shape: the answer was on the wire and was discarded at
|
||||
|
||||
Reference in New Issue
Block a user