I spent twenty minutes in Todoist this morning doing something I had been avoiding for months. I filtered to tasks that had moved more than three times. The list was embarrassing.
One of them had been rescheduled since May.
The reflex when you see that list is to feel bad about yourself. The honest read is different: a task you’ve bounced five times isn’t failing because you lack discipline. It’s failing because the task is the wrong shape, and no amount of “doing it tomorrow” is going to fix the shape.
Here are the three patterns I kept finding in my own list.
1. The task is blocked, but it’s not labeled blocked
The first zombie I found was something like “write landing-page copy for the port trip page.” I kept moving it to the next week. Every time it came up I thought I’ll do that when I have an hour.
I never did it. Not because I didn’t have an hour, but because I didn’t have the thing the task actually depended on: a decision about whether the port trip offering was still a product. Until that decision was made, no amount of writing was going to be real work.
The task wasn’t “write copy.” The task was “decide if this is still a thing.” But I had never written that task down, so I just stared at the copy task once a week and flinched.
2. Dead project, undead task
Another one: “finalize remote-port routes.” That task belongs to a project I had quietly stopped working on in July. I never officially killed the project — I just stopped opening the folder.
So the project sat there, zombified, and every weekly review it coughed up another task. I rescheduled the task because the project felt like it was still mine, like I still owed it something. But the project was already dead. I just hadn’t done it the courtesy of a funeral.
The fix is not to do the task. The fix is to delete the project, and the tasks with it. If one of them is genuinely important, it’ll come back on its own, in a different shape, when the context demands it.
A dead project doesn’t need discipline. It needs a death certificate.
— A thing I had to learn by watching myself
3. A wish disguised as a next action
The third pattern is the sneakiest. “Learn Rust.” “Read the Formance ledger paper.” “Set up a reading log.” These feel like real tasks because they’re verb phrases that start with action words. They are not tasks. They are wishes.
A real task has a definition of done you could point to with your eyes closed. “Learn Rust” doesn’t. “Read the Formance paper” sort of does but the real work is sitting down for forty minutes with a notebook, which is the actual task.
When I renamed the wishes into their underlying actions, something interesting happened: half of them revealed themselves as not that important. The wish version got rescheduled because the real work version was something I didn’t want to commit to. The vague wording was camouflage.
- [ ] Learn Rust
- [ ] Set up a reading log
- [ ] Think about the pricing model - [ ] Do rustlings exercises 01–20 (one morning, 90 min)
- [ ] Write 'what I read today' in daily note for 7 days
- [ ] Spend 30 min drafting the three pricing options Freebo could offer The rewrite isn’t just cosmetic. Every one of those “after” lines has a done condition. You could ask me at the end of the day whether I did it and I couldn’t lie to myself.
What I actually did
I didn’t do most of them. I deleted them.
The port-trip copy task, the dead project’s tasks, the “learn Rust” wish — they’re gone. Nothing bad happened. The system is a few lines lighter and my next-up queue is almost entirely tasks I’d actually recognize as mine if I woke up in the middle of them.
The things that didn’t get deleted got renamed into their real shape. The real shape is usually smaller, more specific, and slightly embarrassing in a way the wish version isn’t.
The signal, not the solution
I think the move is to treat the reschedule count as data. In Todoist I don’t have a native “how many times has this moved” counter, but you can feel it. If you reschedule something and your gut says again? — that’s the signal.
That signal doesn’t mean try harder. It means this task is wearing a disguise. Pull the mask off before you move it one more time. One of three things is underneath:
- A pre-task you never wrote down (fix: write it).
- A dead project (fix: bury it).
- A wish (fix: define it, or admit it’s a wish).

None of those fixes involve doing the task on the current list. All of them involve editing the list itself.
That’s the move I keep forgetting I’m allowed to make.