Learn · ~6 min

Loops rot: maintenance is part of the design

Working loops decay silently. Maintenance is a design requirement, not an ops chore.

A loop that worked last month proves nothing about today. APIs change, models drift, docs go stale, credentials expire, state files bloat, and task boards fill with duplicates. Maintenance is not an operational afterthought — it is a design requirement that belongs in the manifest, the cadence, and the audit trail. This guide is the "who watches the watcher" question, and it ends on Loopmaster's own maintenance roster as the worked example, which is the brand claim made concrete.

For agents: - When you install a loop, you also own its maintenance — schedule its maintenance.freshness_cadence, monitor state file growth, and re-run verification after any upstream change. - Read this site's own maintenance evidence in loops/log/ (linked from the homepage) as the reference implementation. - A green run from last month is not evidence; re-verify against current sources and schema before reporting a loop as healthy. - If a loop's checks keep passing trivially, suspect rot, not health — surface it as a maintenance finding.

Loops rot silently

Rot is silent by default. An RSS source moves and returns empty results, so the watchdog quietly stops reporting changes. A model is updated and a previously reliable extraction starts drifting. A credential expires and a loop exits "successfully" on an empty run. A state file grows until the loop reads only the tail. Last month's green run is evidence of last month, not of now.

The defining property of loop rot is that it fails safe from the loop's perspective and unsafe from the operator's: the loop is still "running," it just isn't doing anything useful. Without a freshness signal, the first time a human notices is when a real event should have fired and didn't — which is the worst time to discover the loop was dead.

Maintenance loops for loops

Maintenance is itself a set of loops, each declared like any other. Validation runs in CI on every change; link and source audits sweep for dead references on a schedule; freshness audits rank pages by staleness; usability re-runs exercise docs in clean environments; governance reviews audit permissions and gates. Each is a loop with its own scope, cadence, and gates — not a human remembering to check.

This is the recurse-on-the-pattern move: loops maintain artifacts, and loops maintain loops. The maintenance roster is not a list of chores; it is a set of declared systems that watch the systems that watch the product.

Freshness cadences and decay

Every maintained artifact gets a cadence and a last_verified stamp. Statuses decay automatically — verified becomes stale, active becomes stale or dead — rather than waiting for a human to notice and downgrade them. The decay is the signal: a template that was verified ninety days ago and has had no green run since is not "verified, pending," it is stale, and its status should say so.

This is the antidote to verification theater: a status that never ages out is a status that certifies nothing. Honest status means a date and an auto-decay rule, both derived from evidence files rather than hand-set. If the freshness loop hasn't run, the status reflects that — it doesn't silently hold its last good value.

The audit trail is a product surface

Dated, evidence-linked, public run logs — the run notes a loop publishes — are what make "maintained" a checkable claim instead of a vibe. Every maintenance run emits the five-part report — what changed, evidence, recommended action, confidence and risk, autonomous or gated — and those reports live where a reader (human or agent) can fetch them.

A loop with no public run notes is a loop asking to be trusted on faith. The audit trail is what lets a reader answer "is this still alive?" without pinging a maintainer. That makes it a product surface, not a debug log: it is part of what the loop ships.

Worked example: how this site maintains itself

Loopmaster's own roster is the reference implementation for everything this guide teaches. The maintenance loops — manifest validation in CI, link and source audits, landscape watch, resource discovery, and clean-room verification — are each declared loops with a cadence, an autonomous scope, and a gate. Publishing findings is autonomous; changing recommendations or publishing picked resources waits for approval.

The evidence is the homepage proof strip and loops/log/: dated run reports linked from the front page. When this site claims to be self-maintaining, that claim is checkable by fetching the logs. If the logs are stale, the claim is stale, and the homepage should reflect that rather than paper over it.

Where to go next

research-watch template declares its maintenance.freshness_cadence and audit log path.

  • How you know it worked covers verification, whose status flags and decay rules this guide relies on.
  • The homepage proof strip links to live maintenance evidence in loops/log/.

Sources

— the landscape report behind the maintenance and rot risks.

— the autonomy and self-maintenance requirements that drive the maintenance design.