Skip to content
All guides
Craft2026-05-257 min read

SA#18 — The Cadence About Cadences: Why the Ritual Itself Needs a Ratchet

Every disciplined product has rituals. Quality reviews. Trust audits. Bet reviews. Each ritual is a class-of-bug detector — surface the drift before users do. But there’s a meta-failure that bit us in May: the ritual itself drifted. 16 days of cadence-data went missing — a single class-of-bug that hides every other class. Sacred Accident #18 names this: the cure is meta-cadence — a ratchet that checks the checks are running.

The accident

SongForgeAI operates five running disciplines, each with a documented cadence:

  • Quality Council — every 3 days. Synthesizes the last 50 commits + top 3 user issues + top 3 internal regressions.
  • Trust Decay Audit — every 14 days. Walks public claims (homepage, /scoring/standard, /the-receipts, reproducibility seal) against verified implementation facts.
  • Bet Review — every 45 days. Lists 5 builds shipped 45 days ago + marks each as moved-the-metric / didn’t / killed.
  • External Audit Prep — every 45 days. Briefs an external engineer + songwriter + AI safety researcher.
  • Sacred Accidents log — opportunistic; ratified at the close of WAR Room arcs.

In May 2026 a Deep Audit discovered the Quality Council’s last entry was 16 days stale — more than 2× the 7-day overdue threshold. During those 16 days the codebase shipped 44 builds, including a public RFC, an npm package, and three nightly ratchet hardenings. None of it was synthesized; none of the across-build patterns were named.

The Quality Council’s entire purpose is to catch drift across N builds. When the council itself drifts, the drift-detection function silently fails. 16 days of unanalyzed velocity is exactly the window in which the system’s gravity fights the user’s intent (SA#17) without anyone naming it.

The accident SA#18 names: "The cadence ritual catches silent drift; the cadence ritual itself drifting cascades."

Why this class-of-bug hides every other class

Most class-of-bug detectors are single-axis. A linter catches syntax errors. A type checker catches shape mismatches. A ratchet catches LOC accretion past a ceiling. Each detector has a clear failure mode: it either fires or it doesn’t. Easy to verify.

Cadence rituals are meta-detectors. The Quality Council’s job is to detect when a class-of-bug detector has accumulated work without being processed. When the linter has been running but no one is reading the output, the council catches it. When the type-check is green but a structural mismatch is silently passing because the type was too permissive, the council catches it.

When the council itself isn’t running, every other detector’s output is going unread. The drift accumulates silently across detectors. By the time an external audit catches it, you’re recovering from 16-day-deep technical debt instead of 1-build-deep drift.

This is what makes SA#18 structurally different from every prior Sacred Accident. SA#11 governs strategy theater. SA#12 governs marketing copy. SA#17 governs the gap between quality and brief-adherence. SA#18 governs the discipline that produces the disciplines.

The three-wave cure

SA#18 was discovered alongside its three-wave cure, because the discovery itself was the missed Quality Council entry catching up.

Wave 1 (immediate): write the missing Quality Council entry. Name SA#18 in the source-of-truth log + the typed mirror + the canonical phrasing constant. Get the principle on the public record before the next velocity wave starts.

Wave 2 (operational): promote check:cadence-health from a warn-only script to a CI-blocking ratchet. Add an overdue badge to /admin/system-health so the operator sees ritual freshness on the dashboard they already check daily. The cadence rituals stop relying on memory; the tooling enforces them.

Wave 3 (structural): lower the activation barrier. The 16-day Quality Council skip happened because the ritual’s default form (synthesize last 50 builds) was heavy enough that an operator preferring "do it Sunday" deferred indefinitely. Wave 3 ships a 15-minute variant that synthesizes the last 5 commits — small enough to never get deferred. The ratchet stays at 7 days, but now the cheap-completion path is always available.

How this session proved it

The 2026-05-24 Deep Audit caught the Quality Council 16 days stale + the Trust Decay Audit 21 days stale + the External Audit cadence at "reviewers TBD" (theater). The same audit shipped a 17-build response sequence over the following ~24 hours that operationalized SA#18 in three places:

  • Build 3269: ran the Trust Decay Audit. 33/33 trust claims verified green. Drift queue refreshed with new 7-day fix-or-reclaim deadlines for two newly-flagged drifts.
  • Build 3270: shipped check-claude-md-prose-drift.ts as the 58th ratchet. CLAUDE.md cited 25 blog posts / 27 guides / 10 vs-pages; actual: 59 / 62 / 12. Future drift can’t reach the next audit cycle without surfacing at PR time.
  • Build 3271: shipped the pre-push hook installer. Every local git push now runs the 58-gate check:all stack before reaching the remote. The "ratchet silently red for N builds" class (which bit B1666, B2715, B2865 across three separate audits) is structurally closed for installed-hook operators.

The pattern: each cadence ritual SHOULD catch class-X drift. SA#18’s cure ensures each cadence ritual itself has a ratchet catching its OWN drift. The discipline becomes its own ground truth.

What this means for songwriters

If you’re a working songwriter using SongForgeAI, SA#18 affects you indirectly but materially. The reason: rubrics drift. Standards drift. The 12-metric Lyric Scoring Standard published in April could quietly diverge from the deployed eval prompt across the 100+ builds since then if nothing is actively checking the alignment.

The Trust Decay Audit cadence ritual was built specifically to catch that drift. 33 trust claims, verified every 14 days against actual implementation facts. Did the rubric version in the public spec match the version in the model card? Does the homepage say "12 metrics" while the eval prompt accidentally references 13? When you submit a song to the eval and read the score, you’re relying on this discipline being current.

SA#18 codified the principle: without meta-cadence, the standard could drift silently for weeks before anyone noticed. The CI ratchet now enforces that the Trust Decay Audit ran in the last 22 days. If it didn’t, the build fails until a fresh audit lands. Your score in the dashboard is anchored to a rubric that’s actively verified, not assumed.

The principle, generalized

SA#18 is one of the few Sacred Accidents that ports cleanly outside the songwriting domain. Any team that runs disciplined rituals (sprint retros, security audits, contract renewals, key-rotation cadences, vendor reviews) faces the same meta-failure mode. The drift catches drift; what catches the drift of the ritual itself?

The pattern that works: the ritual’s next-due date is a load-bearing field in the same tooling the team already checks. Not in a calendar invite, not in a personal todo list, not in a shared Notion page no one opens. In the same dashboard the team uses to verify deploys, or the same CI surface that blocks the merge, or the same standup template that gets read every morning. Surface where they look. Fail where they ship.

The 7-day overdue threshold is calibrated to the cadence interval. A weekly ritual fails at 10 days. A monthly ritual fails at 45 days. The threshold is always loose enough to absorb a single skip + tight enough that two skips never compound silently.

And the activation-barrier variant matters. If the standard form takes 90 minutes, ship a 15-minute variant whose ratchet is the same. Operators in a hurry pick the cheap variant; they don’t skip entirely. The cadence-data stays current.

The public log

SA#18 lives on the public Sacred Accidents page at /sacred-accidents. Every Sacred Accident named there is a discipline the codebase operates under. The page is the public commitment log — readers can cite specific Sacred Accidents back to us when our behavior diverges from a stated principle, and the discipline holds because the receipts are public.

The companion meta-doc lives in the codebase itself: docs/SACRED-ACCIDENTS.md carries the canonical long-form entries; src/lib/sacred-accidents/data.ts is the typed mirror that the public page renders from; src/lib/brand.ts carries the canonical one-line phrasing as BRAND.sacredAccident18 for any surface that wants to quote it verbatim.

Modesty as moat: every Sacred Accident is a discipline ratchet we shipped after we discovered we needed it. The list grows whenever a WAR Room or a Deep Audit names a new class. The list does not shrink — entries are never removed, only refined. The accumulated log IS the audit trail.

Related rubric metrics

Every craft directive on this page maps to one or more metrics in the Lyric Scoring Standard. If you want the measurable side:

Related guides