# The Gate Reaper
Half the tasks on your list are already done. You just never closed them — so they pile up, and the few tasks that actually matter get buried under paperwork that finished itself weeks ago.
The Gate Reaper is a small, zero-dependency Node script that fixes that at the source. It walks your backlog, reads each item for hard proof that it's finished, closes the dead ones with a receipt stamped on them, and — this is the part that makes it safe to run unattended — it never touches an item it can't prove is done.
What it actually does
- Reads each open item for mechanical evidence. A cron you asked to delete is already gone from
crontab -l. A cron you asked to move is already at that time. A "build X" item names a file that now exists on disk and is non-empty. Any of those = proof. - Closes it at the source, with a receipt. The evidence line is written straight back into your file (
"cron matching <tok> absent from live crontab — the requested deletion is already done"), and the original entry is archived so every close is reversible:reaper.js --restore <id>. - Leaves everything else standing. No proof, no close. Revenue items, decisions, anything a human must judge — untouched. When in doubt, it does nothing. The cost of a missed close is one stale line; the cost of a wrong close is losing a real task, so it errs the safe way every time.
The result on a real backlog
On the backlog this was built for: 60 open items. 43 were already dead (untouched for a week or more). When the reaper actually checked the 12 marked "pending," all 12 had been finished weeks ago. What was left after the sweep: 17 tasks that actually mattered.
Install in under 5 minutes
- Drop
reaper.json the machine that holds your backlog (Node 18+, no npm install). - Point it at your list — set three path constants at the top of the file to your backlog / flags / reminders (or all three at one
~/todo/backlog.md). - The one-line run:
node reaper.js --dry # prints exactly what it would close — touches nothing
Drop --dry when the plan looks right. Undo anything with node reaper.js --restore <id>.
4. Optional — one cron line keeps your list honest every morning:
30 6 * * * node /path/to/reaper.js >> reaper.log 2>&1
The kit is the real engine (reaper.js), the safety laws it obeys (who may be auto-closed, what counts as proof, the reversibility guarantees), and the 1-line setup. Free.
On Instagram? Comment REAPER on the reel and the bot DMs you the whole kit.
