Found by the #614 cold-start walkthrough on a clean container, following only the README. Priority P0.32 — severity critical, category correctness. Blocks the beta conversion path.
Problem
cf tasks generate does not decompose the PRD into tasks. It emits PRD bullet points verbatim as "tasks" — including user-persona traits, user goals, and requirement fragments with the markdown still in them. Not one of the 20 generated items is an actionable task.
This is the THINK → BUILD handoff. Everything downstream (cf work start, cf work batch run, PROOF9) then operates on non-tasks.
Reproduction
Clean python:3.11-slim container, source install of main, valid ANTHROPIC_API_KEY. PRD generated by cf prd generate itself (a coherent "Self-Hosted Todo Management REST API" PRD), then:
$ cf tasks generate
Generating tasks from PRD: Self-Hosted Todo Management REST API
Using LLM for task generation...
$ cf tasks list
┃ ID ┃ Status ┃ Pri ┃ Deps ┃ Title ┃
│ 7ed42345 │ BACKLOG │ 0 │ - │ Todos scattered across different notes and │
│ │ │ │ │ systems make... │
│ 1269b291 │ BACKLOG │ 1 │ - │ Existing SaaS tools add unwanted │
│ │ │ │ │ subscriptions and exte... │
│ e0cac14a │ BACKLOG │ 2 │ - │ No simple, self-hostable solution that │
│ │ │ │ │ developers can d... │
│ 735ba25c │ BACKLOG │ 3 │ - │ Lack of focus when completed items clutter │
│ 78865699 │ BACKLOG │ 4 │ - │ Comfortable with REST APIs and │
│ │ │ │ │ command-line tools │
│ 70666e98 │ BACKLOG │ 5 │ - │ Prefers self-hosted solutions over SaaS │
│ │ │ │ │ subscriptions │
│ f018d8d8 │ BACKLOG │ 6 │ - │ Works on multiple projects simultaneously │
│ 03219cef │ BACKLOG │ 7 │ - │ Values simplicity and performance over │
│ │ │ │ │ feature bloat │
│ 98caaa2f │ BACKLOG │ 12 │ - │ Has access to a laptop or small VPS for │
│ │ │ │ │ hosting │
│ e1294a29 │ BACKLOG │ 15 │ - │ **Requirement:** Fast, lightweight │
│ │ │ │ │ endpoint to create n... │
│ 906c283d │ BACKLOG │ 16 │ - │ **Fields:** Description (required), │
│ │ │ │ │ priority (optional)... │
│ 5a60af26 │ BACKLOG │ 17 │ - │ **Performance:** Sub-50ms response time │
│ │ │ │ │ for single todo... │
Total: 20 | BACKLOG: 20
What is wrong with each class of output
- Items 0–3 are the PRD's problem statement bullets. "Todos scattered across different notes and systems make…" is a problem, not a task.
- Items 4–7 and 12–14 are user-persona traits. "Comfortable with REST APIs and command-line tools" and "Has access to a laptop or small VPS for hosting" describe the user. There is nothing to implement.
- Items 8–11 are user goals ("Centralize task management in a single, reliable system").
- Items 15–19 are requirement fragments with markdown markers intact —
**Requirement:**, **Fields:**, **Performance:**, **Validation:**. Literal ** in a task title is proof the text was sliced out of the PRD rather than composed.
Not a single item names a file, an endpoint, or a unit of work. There is no "Implement POST /todos", no "Define the Todo SQLAlchemy model", no "Add pytest fixtures".
Secondary defects visible in the same output
- No dependencies are inferred. The
Deps column is - for all 20. The README advertises "Decompose PRD into atomic tasks with dependencies" and "dependency graphs"; GOLDEN_PATH §3 requires "Automatically detects and assigns task dependencies". --strategy auto has nothing to work with.
- The command claims LLM decomposition (
Using LLM for task generation...) while producing output that looks like a markdown bullet split. Either the LLM path silently fell back to a splitter, or the prompt is asking for the wrong thing. Worth confirming which before fixing.
Downstream impact
cf work start <id> --execute was then run on task 7ed42345 — "Todos scattered across different notes and systems make…". The agent proceeded to act on it, emitting status=SKIPPED for every file it considered (todo_api/database.py, todo_api/models.py, todo_api/crud.py, tests/conftest.py). An unimplementable task consumed a full agent run.
Acceptance criteria
Evidence
Problem
cf tasks generatedoes not decompose the PRD into tasks. It emits PRD bullet points verbatim as "tasks" — including user-persona traits, user goals, and requirement fragments with the markdown still in them. Not one of the 20 generated items is an actionable task.This is the THINK → BUILD handoff. Everything downstream (
cf work start,cf work batch run, PROOF9) then operates on non-tasks.Reproduction
Clean
python:3.11-slimcontainer, source install ofmain, validANTHROPIC_API_KEY. PRD generated bycf prd generateitself (a coherent "Self-Hosted Todo Management REST API" PRD), then:What is wrong with each class of output
**Requirement:**,**Fields:**,**Performance:**,**Validation:**. Literal**in a task title is proof the text was sliced out of the PRD rather than composed.Not a single item names a file, an endpoint, or a unit of work. There is no "Implement POST /todos", no "Define the Todo SQLAlchemy model", no "Add pytest fixtures".
Secondary defects visible in the same output
Depscolumn is-for all 20. The README advertises "Decompose PRD into atomic tasks with dependencies" and "dependency graphs"; GOLDEN_PATH §3 requires "Automatically detects and assigns task dependencies".--strategy autohas nothing to work with.Using LLM for task generation...) while producing output that looks like a markdown bullet split. Either the LLM path silently fell back to a splitter, or the prompt is asking for the wrong thing. Worth confirming which before fixing.Downstream impact
cf work start <id> --executewas then run on task7ed42345— "Todos scattered across different notes and systems make…". The agent proceeded to act on it, emittingstatus=SKIPPEDfor every file it considered (todo_api/database.py,todo_api/models.py,todo_api/crud.py,tests/conftest.py). An unimplementable task consumed a full agent run.Acceptance criteria
cf tasks generateon the PRD in this report produces tasks that name concrete units of work (endpoint, model, module, test), not PRD prose**, leading-,#)**in titles, and every task title starts with a verbEvidence
scripts/quickstart-cleanroom/artifacts-source-main/transcript.txtscripts/quickstart-cleanroom/(added by Launch: validate the 15-minute quick start from a clean machine + recorded demo #614)codeframe-state/)