Skip to content
Jun '266 min read

The two hard parts of a repeating deadline

Recurrence looks trivial and isn't. The difficulty hides at the edges, in the months that are too short and the occurrences you miss.

Conrad
ConradOn deadlines and the design of working instruments

“Repeats monthly” is the kind of feature that looks like an afternoon of work and turns into a week. The happy path is genuinely easy. A thing is due the fifteenth, it repeats every month, so generate the next one for the fifteenth of next month. Done. The trouble is that the happy path is not where deadlines live. Deadlines live at the edges, and recurrence has two edges that most tools fall off.

The first edge, the short months

Set a deadline for the thirty-first and repeat it monthly. What happens in February?

The lazy answer, and the one a surprising number of tools ship, is to step forward a month from each occurrence and clamp to the end when the month is too short. January 31, step a month, February has no 31st, clamp to February 28. So far so reasonable. But now the next step starts from February 28. March, step a month, lands on March 28. The deadline has silently moved. It was the last day of the month, and now it is the twenty-eighth, and it will stay the twenty-eighth for the rest of the year because each step measures from the last one. A “last day of the month” filing has quietly become a “twenty-eighth of the month” filing, and nobody told you.

The right answer is to never let the date drift. Deadlinewatch stores a fixed anchor day for the series and clamps from that anchor every single month, not from the previous occurrence. The thirty-first means the thirty-first. January 31, then the true last day of February, then back to March 31, then April 30, holding the anchor the whole way. An anchor of the thirtieth recovers to the thirtieth after February instead of getting stuck a day early. And if what you actually mean is “the last day, whatever it is,” there is a checkbox that says exactly that, so the deadline lands on the real end of every month, twenty-eight, twenty-nine, thirty, or thirty-one, every time.

This is a small thing that is not a small thing. The gap between “the 31st” and “the 28th” is three days, and three days is the gap between on time and late for the kind of work where the last day of the month is a hard line.

The second edge, the one you miss

The other place recurrence breaks is completion. Most tools tie the next occurrence to finishing the current one. You complete this month’s, and that is what spawns next month’s. It is a tidy model, and it has a hole you can drive a truck through. What happens the month you do not complete it?

If the next occurrence only appears when you finish the last, then a month you miss takes the whole future of the series down with it. You forget to close out March, and April never appears, and May never appears, and the repeating deadline you set up specifically so you would not have to remember it has quietly stopped reminding you. The one time the safety net mattered, it was not there.

Deadlinewatch’s answer is to remove the machinery entirely. When you set up a repeating deadline, the whole series is created on the spot. Pick the cadence, say how many times it should run, and every occurrence becomes a real deadline with a real date. You see the full list of dates before anything is created, and you can trim one out or add an odd one in. Nothing spawns the next occurrence, because there is no next occurrence to spawn. The future of the series does not depend on a job firing, a trigger triggering, or you remembering to complete March. The dates are already there. A series runs two years out at a time and tells you when it is running low, because a date two years from now is far more likely to shift than the next one. That bound is one of several the tool states rather than leaves open.

And the occurrence you missed does not disappear to keep the books tidy. It stays in your list as its own overdue row, in plain sight, because a missed deadline is a fact and the tool does not get to hide facts to make itself look neat. You end up with exactly what is true. The missed one sitting there overdue, and the rest of the series exactly where it always was.

There is a trade in building it this way, and it is worth being plain about. A series created up front is finite. You decide how far it runs, and one day it runs out. But the end is never a surprise. The card shows the series’ last date the whole time, “Monthly, through July 6, 2026,” and extending it is a matter of adding dates to the set. A visible end you extend on purpose beats an invisible engine you have to trust.

It buys something the engine version can’t offer, too. Because every occurrence is real from the day you create it, the weight of a monthly filing shows in the Forecast for every month ahead. A series is not an IOU the tool redeems each cycle. It is on the calendar, all of it, from the start.

Why this is worth a week

A repeating deadline is a promise the tool makes to your future self. The promise is that you set this up once, and from now on you do not have to remember it. Every place recurrence cuts a corner is a place that promise breaks. Drift breaks it quietly, by moving the date out from under you. Completion-coupling breaks it loudly, by going silent the month you needed it most.

Most tools treat recurrence as a checkbox. It is closer to a contract. The version worth building holds the date against the short months and puts every occurrence on the calendar from the start, so nothing has to fire, spawn, or advance for the promise to hold. The whole point was to be the thing that does not break.

Common questions

If I set a monthly deadline for the 31st, what happens in February? It lands on the last day of February, then returns to the 31st in March. The date is clamped from a fixed anchor day every month, not stepped from the previous occurrence, so it never drifts permanently to the 28th. There is also a “last day of the month” option if that is what you mean.

Do I have to complete one occurrence for the next to appear? No. The whole series is created when you set it up, and every occurrence is its own deadline with its own date. Nothing waits on you finishing the previous one. A month you miss stays overdue, and the rest of the series stays exactly where it was.

What happens to an occurrence I miss? It stays in your list as its own overdue row. Missed occurrences are not hidden or rolled forward. You see the missed one overdue and the next one upcoming at the same time, which is the honest picture.

What cadences are there? Weekly, monthly, quarterly, and yearly, or hand-picked dates for a series that doesn’t follow a clean rhythm. You see the full list of dates before the series is created and can trim or add to it. Monthly and yearly series hold a fixed anchor day so the date stays put across the short months.

Can I end a series early? Yes. From the deadline itself you can delete this occurrence and all future ones, or the whole series at once. Or open the set and remove individual dates. Ending a series is an ordinary edit, not a fight with an engine.