All notes
Agent-native

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.