Overview
Draft’s Planner (autopilot) runs on periodic ticks and autonomously manages the ticket pipeline:- Picks the highest-priority
PLANNEDticket and executes it - Proposes follow-up tickets when tickets become
BLOCKED - Generates reflections for completed tickets
- Manages ticket dependencies and unblocking
Enabling Autopilot
Autopilot is controlled indraft.yaml:
What the Planner Does
Every 2 Seconds
The planner tick runs and checks:- Are there
PLANNEDtickets? → Pick the highest priority one and execute - Are there
BLOCKEDtickets? → Analyze the failure and propose follow-ups - Are there
DONEtickets? → Generate reflections for learning - Are dependencies resolved? → Auto-unblock tickets whose blockers are done
Safety Boundaries
The planner is intentionally limited:Rate Limits
Concurrency Control
The planner uses aplanner_locks table to ensure only one planner instance runs at a time. This prevents race conditions when multiple processes might try to plan simultaneously.
Monitoring
Watch the planner’s decisions in real-time:- Ticket Events — Every planner action is logged as a ticket event
- Job Logs — Execution and verification logs stream in the UI
- API — Query planner status via
/planner/status
Best Practices
- Set cost budgets on goals to prevent runaway spending
- Review
PROPOSEDtickets before they execute - Monitor the first few automated runs closely
- Use verification commands to catch issues early