← Blog
·5 min read

Why your agent’s to-do list keeps rotting

Markdown task lists bitrot because agents don’t update them. Steve Yegge’s fix — and why an AI to-do list needs to be a structured, queryable store, not a text file.

If you’ve had an AI agent work on a multi-step project, you’ve probably seen this: it writes a tidy six-phase plan in a markdown file, does phase one, and then… the plan just sits there, frozen at “Phase 1 complete,” while the agent quietly moves on and forgets it ever existed. A week later you’ve got a folder full of orphaned PLAN.md files, none of them true.

Steve Yegge hit this wall hard enough to build a tool about it. After a year of agentic coding he argued that markdown to-do lists are “text, not structured data” — high cognitive load, impossible to query, and prone to bitrot because agents rarely update a plan as they work. His fix, an open-source tool called Beads, replaces the text file with a git-backed, dependency-aware issue graph that agents query for their next ready piece of work. It hit 18,000+ GitHub stars fast, which tells you how many people felt the same pain.

Why a text file fails an agent

A markdown checklist is written for a human who holds the whole thing in their head. An agent doesn’t. It starts most sessions with no memory of the last one, so it needs to ask: what’s unblocked, what’s highest priority, what depends on what? You can’t ask a text file that. You can ask a structured store.

That’s the real shift. The to-do list stops being a document you read and becomes a small database the agent interrogates: “give me the next ready task,” “mark this blocked,” “what’s left in this project.” Once tasks are structured and queryable, an agent can actually navigate them across sessions instead of re-reading a stale plan and guessing.

You probably don’t want a second system for this

Beads and projects like it are great for codebases. But most people don’t want a separate, developer-only task tracker bolted next to the to-do app they already use for everything else. The grocery list and the “refactor the billing webhook” task want to live in the same place — and that place should be queryable by an agent without you maintaining a parallel store.

That’s the bet behind Lume: the same clean list you use for personal to-dos is also a structured store your AI can reach over an MCP server and a REST API. An agent can ask it for open tasks by project, assignee, or status — the “what’s ready?” query Yegge had to build from scratch — without you ever leaving a normal to-do app.

The lesson under the tool

You don’t need to adopt Beads to take the point. The point is that an agent’s to-do list has to be structured data, not prose, or it rots the moment the agent stops narrating its own plan. If you’re going to hand work to agents, the queue they pull from matters more than the prompt you give them — and a queryable, dependency-aware list is the difference between an agent that picks up where it left off and one that re-reads a lie.

Lume is built to be that queue while still being a to-do app you’d actually enjoy using. See how the MCP server exposes it, or how you assign tasks to agents from it.

Want a list your agents can pull from?

Lume gives every task an API, an MCP server, and an assignee. Free to start.