/decisions · 2026-08-17 · ops · audit-cron
Pattern. The nightly audit-newsletter-outputs.py cron runs with a ~1-day rolling --since. A file is only eligible when its date-prefix is >= since_date. A file that fails the audit and isn't repaired the same day permanently exits scope — never re-opened, and every later run truthfully reports Fail: 0. That clean signal is what /self-review step 1.5 was reading as "repaired."
Evidence (censused 2026-08-17, not sampled). A direct audit-newsletter-outputs.py --since 2026-06-01 run reports 55 live failures among files the daily cron currently shows as clean. The script itself is not broken — the false-negative hypothesis (Review 23's hypothesis a) was tested and disproven; a wide re-run behaves correctly. The defect is operating scope, not logic.
Already shipped this cycle, no approval needed. self-review/SKILL.md step 1.5 now carries a scope-shortcut guardrail: the pre-failure set is resolved per-file against the most recent run whose Since: covers that file, never against the newest run's fail count. That stops /self-review from reporting a false-clean, but it does not close the coverage hole itself.
Why this needs a click. Fixing the hole makes ~55 files appear as failures at once, and if this is ever wired to a --fix path that's a mass rewrite. Scope and whether --fix participates are founder-level calls, not silent-apply.
Acceptance criterion. A file that fails the audit and is not repaired within 24h still appears in a failure report on a later run, without anyone re-running the script by hand.
--since 60d, run weekly alongside the existing nightly narrow one. Simple, additive, doesn't touch the nightly cron's behavior. Failures surface on a ~weekly cadence instead of instantly, but nothing falls out of scope permanently again.Ray's recommendation: no — keep this read-only surfacing only, for now. Wiring either option to an automatic --fix path means a mass rewrite across up to 55 files the moment the coverage hole closes, with no human review in between. Surfacing the failures is the fix for the visibility gap; repair should stay a separate, reviewed step until there's a track record of the wider scope behaving predictably.
Pick a sub-option and confirm the --fix stance. e.g. "(a), weekly cron, no --fix" or "(b), carry-forward, no --fix".
Approve + sendKill it — the self-review guardrail already shipped is enough, not worth closing the coverage hole. One-line reason.
Archive + sendTake part of it now — e.g. ship (a) now, defer the --fix-wiring question, or vice versa.
Split + sendPush this out to a specific date — Ray will resurface then. 55 failures stay invisible to the nightly cron until then.
Defer + send