promptdojo_

Auto-run or named approval — the checklist automation that never forges a signature — step 2 of 8

The schedule is data

Run it. Four recurring duties, one computation, and the whole lesson's argument in the output: the machine decided what's due; it decided nothing about what's done.

The fields carry the policy:

  • every + last_done — the cadence and the last completion, both as day numbers. "Due" is arithmetic: TODAY - last_done >= every. No one remembers the vendor scorecards are monthly; the data does. (Day numbers instead of datetimes keep the drill deterministic — the arithmetic is identical when you swap in real dates. And a negative last_done, like the 300A's -200, just means the last completion was last year, counted back past day zero — which is how an annual item ever manages to come due.)
  • approval — the line from the last step, as a field. "auto" means the machine may run it end to end. A name means the machine's authority ends at routing: compute that it's due, put it in front of miguel, stop. Note what the field's type buys you: there is no way to write "approved by somebody." It's "auto" or it's a person.
  • anchorwhy the sign-off exists, written where the next person can find it. "29 CFR 1904" on the 300A item means the approval isn't a formality someone can optimize away in next quarter's efficiency push. An unanchored sign-off eventually gets deleted by someone reasonable; an anchored one survives, because deleting it means arguing with the anchor.

What the run just showed

Three items came up due. The low-stock report routes to auto-run — it's a draft over an export; if it's wrong, you regenerate it. The forklift inspection and the 300A both route to named humans, and look at who: the item's own owner. The person who holds the duty is the person the automation asks. Meanwhile vendor-scorecards — fifteen days since last done, cadence thirty — correctly stays quiet. A checklist that computes "not due" is as valuable as one that computes "due": it's the difference between a system and a nag.

One thing this loop deliberately cannot do: write last_done. Completing an item is what updates last_done, and for named-approval items completion happens when the named human says so — which means the machine can never make an item stop being due by itself. That property is the entire fix for the checklist that lied, and you're about to enforce it against code that breaks it.