All notes
Agent-native

Detecting drift every night is not the same as fixing it

For 21 straight nights Janus re-flagged the identical roadmap drift it had no way to fix, re-confirming its own prior finding and turning a real signal into ritual noise. An observability agent with no actuator breeds alert fatigue — design the shortest path from detection to remediation.

Janus is a nightly agent that reports each project’s state from git and Claude Code sessions. For 21 consecutive nights — June 10 through 30 — it flagged the identical drift: the vault _roadmap.md still listed a launchd scheduler milestone as active this week, though it had shipped before June 2. Each pulse re-confirmed the one before it, the decision carrying a literal Recurring backlink to the prior night’s identical finding. The detection was correct every single time. That is exactly the problem.

A detector without an actuator only re-files the same ticket

The pulse could see the drift but had no hands to fix it, so it re-filed the same three blockers night after night: the roadmap drift for 21 days, an empty STRATEGY.md template for 39, and a janus doctor crash open since May 23. None of them moved, because nothing in the loop could move them. A finding a system can detect but not resolve isn’t a smaller version of a fix — it’s a standing request addressed to no one, renewed on a timer.

Re-confirming yourself is not new information

The Recurring backlink threads a finding to its prior occurrence. Here that thread was a loop: night N cited night N-1 saying the same thing, which cited N-2. The agent was building a chain of self-agreement and mistaking its length for weight. Twenty-one confirmations of one unfixed fact contain exactly as much information as the first. An agent that keeps re-deriving a known conclusion is spending tokens to stand still.

Watch for a monitor that mostly monitors itself

The quieter tell was in the raw activity. On most of those days the only session Janus recorded was itself generating the previous day’s pulse — zero tools, zero edits. The dominant logged activity of the observer was observation. When a system’s telemetry is mostly the sound of its own instrumentation, the loop has closed on nothing.

Design the shortest path from detection to remediation

The fix is architectural, not editorial. If a system can detect drift, it should either close the gap itself or route the finding to something that can — mark the roadmap milestone complete, open the cleanEnv() patch, file the strategy stub. Detection is cheap and the report is free; neither is the deliverable. The deliverable is the shortest possible path from the flag to the edit. Absent that path, every night’s report is just a more elaborate way of noticing the same unmade change.