Skip to content
[bmdpat]
All writing
6 min read

A kill rule that expires is not a kill rule

I wrote a kill rule for a paid-path test. Zero orders landed. The card expired into an archive and the dashboard still said ACTIVE.

Share LinkedIn

On 2026-08-20 I approved a 14-day paid-path test. The pre-written rule was simple. Zero paid orders by 2026-09-03 and the sizing desk stops being the active Builder that day. One or more paid orders and we hold to the 2026-10-15 review. A paid order means money received.

Short answer: the date passed with 0 paid orders. The card expired into an archive folder. The dashboard still said ACTIVE. A loop can close every mechanical step and still produce no verdict. Canonical URL: https://bmdpat.com/blog/kill-rule-that-expires-is-not-a-kill-rule-2026

A kill rule that the archive swallowed

What did the test measure?

Stripe showed 0 subscriptions and $0 MRR. Checkout starts sat at 0. Affiliate commission events sat at 0. The verification report the card demanded was never written.

That last line matters. The test can prove nobody paid. It cannot prove the checkout worked, because nobody drove the three paid paths in a browser under the test. Absence of payment is not proof of a broken button. It is still 0 paid orders, and the rule scored on money received.

What did the vault do on the date?

On 2026-09-03 the kill rule fired. On 2026-09-04 a TTL sweep moved the card to an expired archive. Nothing in the daily log or the holdco page recorded that the rule had fired. The row stayed ACTIVE.

I reaffirmed the date on 2026-08-21: stands as written, no clock restart. The system's answer to that rule was to file it as expired.

A TTL sweep is an archiver. It is not a writer of verdicts. Expiry and firing are not the same event. I treated them as the same event, and that is why a GREEN-looking loop produced no decision.

Why does this match the software-factory critique?

PostHog asked on 2026-08-11 whether software factories can actually work. Dex Horthy at HumanLayer had just argued that better agent loops do not fix a deeper gap. Models get rewarded when tests pass. They do not get rewarded for a design that still holds six months later. His team tried lights-off work in July 2025. Horthy says they chose a manual rewrite in November 2025.

I am not reciting that essay. I already ran a smaller version of the same failure. My checks asked whether the expected artifact existed. They did not ask who writes the verdict when the date hits. The card looked handled. The Builder slot looked live. Both were false.

This is the same class as an agent batch that wrote 126 empty pages while every schema check passed. Structure is not substance. A closed loop is not a scored kill.

What rule do I use now?

A kill rule needs four things in the same place, before the date:

  1. The condition, in numbers a stranger can check.
  2. The date.
  3. The file that will hold the verdict.
  4. The named writer of that file. Not a sweep. A writer.

If any of those four is missing, you do not have a kill rule. You have a reminder that an archive folder will swallow.

I now poll dated gates from a commitments file so a date cannot lapse the way this one did. That is a fix for the watcher. It is not a fix for taste. Someone still has to write the verdict and live with it.

The same line holds for model promotion. Running is not the same as earning the job. A date passing is not the same as a decision.

Accompanying prompt

What the prompt does: It checks whether a dated kill rule can actually fire, or whether an archive step will swallow it.

Copy/paste this prompt:

Copy-ready prompt

Paste the exact block into your coding agent.

No article chrome, no footnotes, no formatting drift.

Role: You are auditing one dated kill rule in a repo or vault. Context: [Paste the rule, the date, the card or ticket, and the folder that archives stale work.] Task: 1. Name the condition in a number a stranger can check. 2. Name the date. 3. Name the file that must hold the verdict. 4. Name the writer of that file. A sweep, a TTL, or an archive job is not a writer. 5. Say what happens if the date passes and the writer is silent. Output: - Four lines: condition, date, verdict file, writer. - One line: fires, or expires. - If it expires, write the missing writer in one sentence. Constraints: - Keep it short. - Use exact paths and dates. - Do not invent a verdict that was never written. - Do not treat an archive move as a scored decision.
23 lines751 chars
Ready

This prompt and every other one we publish live in the free prompt library.

Copy the block above.

If you want the next receipts from this fleet, the list is here: https://bmdpat.com/5090-reports

Get the Local AI Field Kit

Four copy-ready tools now, then one evidence-backed Local AI Lab Note on Friday when there is something worth sharing.

Try the free agent run check first

Get the requested artifact now, then at most one evidence-backed Local AI Lab Note on Friday when there is something worth sharing. One-click unsubscribe. No sponsored placements. Privacy.

PH

Patrick Hughes

I build BMD and publish measured AI runs, failure reports, and reusable checks. Nashville, Tennessee.

More writing