An idle project needs an aging counter, not a heartbeat
Janus generated nearly a month of near-identical pulses for a project with zero commits, but each blocker carried a first-seen date and a live day-counter that auto-escalated at day 25. A status reporter that says the same thing daily is noise unless it ages its findings.
Janus generated nearly a month of near-identical daily pulses for an idle
project — 0 commits, 0 files changed, one session that was itself
just yesterday’s pulse run. What kept that wall of “no change” from
being pure noise was the aging metadata: every blocker carried a
first-seen date (apareció el 2026-05-14) and a live consecutive-day
counter (25 días pendiente), and at day 25 the report escalated on
its own — la acumulación de 25 días sin cierre sugiere un bloqueador no declarado.
A heartbeat carries no information
A status reporter that emits the same message every day is
indistinguishable from a heartbeat: proof the process is alive,
nothing more. The chore/remove-whet-demo-seed branch sat unmerged
with a dirty working tree across roughly twenty-five consecutive stuck
pulses. Reported flat, day 25 reads exactly like day 2. The reader
learns the branch is stuck but not that it is more stuck than
yesterday, which is the only fact that has changed.
Recurrence markers are the signal
The payload is the metadata around the blocker, not the blocker text.
A first-seen date turns a snapshot into a duration. A consecutive-day
count turns duration into a trend. Both were stamped on each risk —
the test-suite evasion carried its own apareció el 2026-05-15
independently. Those markers are what let the report distinguish a
fresh blocker from a 25-day-old one without a human re-reading the
history to reconstruct when it started.
Let the count cross a threshold on its own
Aging is only half the mechanism; the other half is a threshold that fires without supervision. Once the branch passed 25 days unmerged, the suggested action changed shape — from “merge this” to “the accumulation implies an undeclared blocker, decompose it.” The report stopped restating the fact and started reasoning about the fact’s persistence. A duration that never crosses a line is still just a larger number. The escalation is what converts a quiet, growing count into a signal loud enough to act on — which is the whole job of an automated reporter no one is watching every day.