Split out from the #370 "Ideas" parking lot (Task estimation).
Idea
Estimate how long a requested task graph will take before / during a run, using timing data recorded from previous runs.
Motivation
Nadle already records per-task durations (the profiling summary, critical-path, and cache-miss hotspots in --summary prove timing data is captured). That data could feed a forward estimate so a user knows roughly what they are about to wait for.
Possible shape (to refine)
- Persist per-task duration history alongside the cache (e.g. a rolling average per task id).
- Before a run, sum the estimated durations across the resolved DAG (respecting parallelism / worker count) to produce a total estimate.
- Surface it: e.g. a line at run start, and/or in
--dry-run.
- Tasks predicted to hit cache contribute ~0; only cache-miss tasks add to the estimate.
Open questions
- Where to store history (cache dir? separate file?) and how much to keep.
- How to handle first-ever runs (no history) — omit the estimate vs show "unknown".
- Interaction with
--parallel / worker count for a realistic wall-clock estimate.
Notes
- Spec-first per CLAUDE.md if this changes observable behavior/output.
- Relates to existing profiling output (
--summary).
🤖 Generated with Claude Code
Split out from the #370 "Ideas" parking lot (Task estimation).
Idea
Estimate how long a requested task graph will take before / during a run, using timing data recorded from previous runs.
Motivation
Nadle already records per-task durations (the profiling summary, critical-path, and cache-miss hotspots in
--summaryprove timing data is captured). That data could feed a forward estimate so a user knows roughly what they are about to wait for.Possible shape (to refine)
--dry-run.Open questions
--parallel/ worker count for a realistic wall-clock estimate.Notes
--summary).🤖 Generated with Claude Code