Task Tracking & Execution
Where intent becomes action
The Bridge
Valence mining crystallizes understanding. The memory bank stores it. But understanding without action is just contemplation. The task system is the bridge between knowing what you want and actually building it.
A task tracker for agentic LLM workflows needs to be:
- Simple enough that an LLM can operate it — No GUI-only interfaces. CLI-first. Text in, text out.
- Structured enough to encode dependencies — What blocks what. What order things happen in.
- Lightweight enough to not impose overhead — If the tool is heavier than the task, you've lost.
The Evolution: Beads → TD
Beads (The Conceptual Unlock)
The original insight: issues are linked beads. They have dependencies, sequence, hierarchy. An epic contains tasks. Tasks block other tasks. Completing one unblocks the next.
Beads was implemented as a full Go application — 180,000 lines, 3-5 second response times, complex architecture. It worked, but it was heavy.
TD (The Refined Implementation)
Same concept. Under 1,000 lines of Bash + SQLite. Instant response. Linear-style workflow states. Runs anywhere with a shell.
# Create a task
td create "Build landing page" -p high -t feature
# Create subtasks (epic pattern)
td sub 1 "Design header component"
td sub 1 "Implement contact form"
td sub 1 "Deploy to Cloudflare Pages"
# Move through workflow
td move 1.1 started
td close 1.1 "Header looks good"
td ready # What's unblocked? A simpler abstraction beats a heavier one. Every time. Beads proved the concept. TD proved that the concept survives compression. The 180,000 lines weren't the value — the mental model of linked, dependent, sequential issues was the value. The implementation is exhaust.
How It Works With LLMs
The task system is how you give an LLM a roadmap. Instead of one giant prompt, you break work into discrete steps with dependencies:
- Mine the context — Valence mine until you understand the full scope
- Create the epic — A parent task describing the goal
- Break into subtasks — Each one a discrete, completable unit
- Set dependencies — What blocks what
- Execute sequentially — Work through the
readyqueue one at a time
The LLM reads the task list, picks the next unblocked item, executes it, marks it done, and checks what's newly unblocked. The human reviews, redirects, and adds tasks as new understanding emerges.
Workflow States
| State | Type | Meaning |
|---|---|---|
| Backlog | backlog | Known but not scheduled |
| Todo | unstarted | Scheduled, waiting for dependencies |
| In Progress | started | Actively being worked |
| Done | completed | Finished |
| Canceled | canceled | No longer needed |
The Epic Pattern
Tasks nest naturally using dot notation:
1 Build user dashboard (epic)
1.1 ├── Design data model
1.2 ├── Create API endpoints
1.3 ├── Build frontend components
1.3.1│ ├── Header widget
1.3.2│ ├── Activity feed
1.3.3│ └── Settings panel
1.4 └── Deploy and test The LLM sees this hierarchy and understands: 1.1 must finish before 1.2 makes sense. 1.3's subtasks can run in parallel. 1.4 waits for everything.
Task Tracking as Transpilation Input
This is where it connects to semantic transpilation. The task list is structured intent. Each task is an issue. Issues are a specialized table. The LLM reads the issues plus the context (memory bank, docs, existing code) and transpiles them into working artifacts.
The flow:
Getting Started With TD
- Install TD (single script, SQLite database)
- Initialize in your project:
td init - Create your first epic:
td create "The thing you're building" -t epic - Break it down:
td sub 1 "First step" - Tell Claude about it: "Read
td listand work through the ready queue"
Understanding without action is contemplation. Action without understanding is flailing. The task system connects them: mine the context, structure the intent, execute step by step. Each completed task updates your understanding. The loop tightens.