v0.121.1: 'nothing is due' must be AUDIBLE (R-86 + standing rule 3)
gates / gates (push) Successful in 6s
gates / gates (push) Successful in 6s
Before R-86 every tick ran a heavy restore-test, so the scheduler was audible by construction. After it, 'nothing is due' is the NORMAL outcome — and it was logged at DEBUG, which journald drops. An empty journal would then be equally consistent with a healthy loop and a dead goroutine: the shape the R-88 watcher was retired for, re-created by making the quiet path the common one. A not-due evaluation now logs one INFO line naming every tier's verdict (four lines a day at the 6h default), and an unlistable tier reads UNKNOWN with its error in that same line, so a lookup failure can never present as 'nothing due'. Red-proved through the scheduler's own tick, not the helper.
This commit is contained in:
@@ -1,3 +1,28 @@
|
||||
## v0.121.1 — "nothing is due" must be AUDIBLE (2026-08-03, R-86 + standing rule 3)
|
||||
|
||||
**Found while live-validating v0.121.0, and it is this project's own rule pointed at the change that
|
||||
had just shipped.** Before R-86 every tick ran a heavy restore-test, so the scheduler was audible by
|
||||
construction. After it, *"nothing is due"* is the NORMAL outcome — and it was logged at **DEBUG**,
|
||||
which journald drops. An empty journal would then have been equally consistent with a healthy loop
|
||||
and with a dead goroutine: the exact shape the R-88 watcher was retired for, re-created in a new
|
||||
place by making the quiet path the common one.
|
||||
|
||||
A not-due evaluation now logs one **INFO** line naming every tier's verdict:
|
||||
|
||||
```
|
||||
backup: restore-test evaluated — nothing due
|
||||
verdicts="felhom-pbs: newest settled archive (landed 2026-07-28T04:49:43Z) is already proven;
|
||||
felhom-backup: no settled archive yet — nothing to prove (newborn or still settling)"
|
||||
```
|
||||
|
||||
Four lines a day at the 6 h default, and the answer to *"why did nothing run last night?"* is in the
|
||||
log instead of being re-derived. A tier whose storage cannot be listed reads `UNKNOWN` with its error
|
||||
in the same line, so a lookup failure can never present as "nothing due".
|
||||
|
||||
Red-proved by reverting to the bare `Debug` line: the test asserts what the SCHEDULER emits on a real
|
||||
`tick`, not what the helper returns — a helper-level test would have passed against a tick that never
|
||||
called it.
|
||||
|
||||
## v0.121.0 — a restore-test proves each BACKUP, not the clock (2026-08-03, R-86)
|
||||
|
||||
**The trigger changed; the restore-test did not.** `Scheduler.Run` still has a ticker, but it is now
|
||||
|
||||
Reference in New Issue
Block a user