Originally created by: kumaakh
The PM workflow currently uses three living files in each project sandbox:
PLAN.md — sprint plan for the doerprogress.json — turn-by-turn statefeedback.md — reviewer notesThese files are committed and pushed to the working branch on every turn so that PM, doer, and reviewer stay in sync. That solves coordination, but it has real costs:
progress.json is the canonical conflict file.PLAN.md separately. There is no global view.PM already uses beads (bd CLI, persistent SQLite DB) as the source of truth for tasks, dependencies, status, assignees, and notes. Beads can do everything PLAN.md and progress.json do today — and more (cross-sprint queries, dependency graph, blocked/ready filters, search, audit trail).
Make beads the single source of truth for sprint state. Members (doer + reviewer) should have first-class access to the beads DB so PM can drop the markdown/JSON state files entirely.
bd CLI installed on every member. Already true today on local members; needs to be guaranteed on remote members during onboarding (similar to how the Claude/Gemini CLI is installed).bd update, bd close, bd create, bd remember, bd show from inside execute_command / execute_prompt. The doer needs to claim and close issues; the reviewer needs to file findings as new issues.Pick one — open question for the design discussion:
| Option | How it works | Tradeoffs |
|---|---|---|
| A. Sync via git | Commit .beads/issues.jsonl to the repo on a dedicated beads/ branch (or in a sidecar repo). Members bd dolt pull / push like PM does. |
Simple, uses existing beads sync. Adds one more push per turn (replaces the 3 state files, so net win). |
| B. Server-mediated | Fleet server proxies bd commands to PM's local DB on behalf of members. New MCP tools: beads_update, beads_close, etc. |
No git involvement. Centralised. Requires building MCP surface and handling concurrency. |
| C. Shared DB file over network | Members access a network-mounted SQLite file. | Fragile, locking issues, not viable for remote members. |
A and B are both reasonable. A is closer to how beads is meant to be used (it has built-in dolt push/pull); B gives PM more control over who can do what.
PLAN.md — replaced by bd list --epic <sprint-id> --treeprogress.json — replaced by bd show <task-id> + bd list --status=in_progressfeedback.md — replaced by bd create for each finding (already partially done — see PM skill's reviewer protocol)Sprint-specific requirements (requirements.md, design notes, technotes) stay in the project sandbox — those are documentation, not state.
bd available (verified during register_member onboarding).single-pair-sprint.md, simple-sprint.md, multi-pair-sprint.md, doer-reviewer.md no longer reference PLAN.md / progress.json / feedback.md as living state files.requirements.md or design notes — those are project documentation, not sprint state.The current model's coordination overhead grows with sprint count and pair count. Beads has matured enough that "PM uses beads, members use markdown" is now an avoidable inconsistency. Centralising on beads removes git noise, simplifies the PM skill, and makes cross-sprint observability free.