-
Notifications
You must be signed in to change notification settings - Fork 0
Estimates and Capacity
handoff-mcp separates the raw human-effort estimate you record on a task from the AI-effort hours used in scheduling and metrics. You always enter the raw estimate; the server scales it when aggregating.
When settings.require_estimate_hours is true (the default),
handoff_update_task rejects creating or updating a leaf task (one with no
children) in todo / in_progress / review / done unless it has
schedule.estimate_hours > 0.
Exemptions:
- Parent tasks (tasks that have children) — their effort is the sum of their leaves.
-
blockedandskippedtasks. - A task that already carries an estimate satisfies the requirement on subsequent updates.
Set settings.require_estimate_hours = false (via handoff_update_config) to
opt out entirely.
Enter the raw human-effort estimate — the time the work would take a person. Never pre-multiply it yourself.
settings.ai_estimate_multiplier (default 0.2) models how much faster the work
goes when an AI agent does it. It is applied at aggregation time, never
written back onto the task, so raw estimates are preserved.
It surfaces in two places:
-
handoff_get_metricsreportsai_estimate_multiplier,total_adjusted_estimate_hours(the project's raw estimate total × the multiplier), and a per-milestoneadjusted_estimate_hours. -
handoff_get_capacitymultiplies each task's raw estimate by the multiplier when distributing effort across days.remaining_hours, which represents actual progress, is used as-is.
Negative multipliers are rejected by handoff_update_config. To change it:
{ "settings.ai_estimate_multiplier": 0.3 }A task estimated at 10 human-hours, with the default multiplier 0.2:
- The task keeps
estimate_hours = 10. -
handoff_get_metricscounts it as2adjusted hours toward the totals. -
handoff_get_capacityschedules2hours of work across the calendar.
- Use
handoff_log_timeto record hours worked — it atomically adds toactual_hoursand deducts fromremaining_hours. Prefer it over editingactual_hoursdirectly. - Use
handoff_get_capacitybefore scheduling to see available hours per day and per assignee, respecting the project calendar and per-assignee overrides. - Use
handoff_auto_scheduleto compute task dates from dependencies, estimates, and capacity. Run it withdry_run: truefirst to preview the changes.