# summary

Compute actual delivery time vs. declared estimates for completed workflow runs.

# description

Joins declared estimates (from `sf setup-agents workflow estimate`) with
completed workflow run records to compute actual cycle time, savings percentage
vs. solo delivery, and savings percentage vs. unguided AI delivery.

Actual cycle time is derived automatically from the run's phase timestamps —
no manual input required after the estimate is declared.

# flags.story.summary

Story id to benchmark.

# flags.story.description

Single story report. Prints sizing, estimates, actual days, savings percentages,
QA iterations, and evidence count.

# flags.summary.summary

Print summary table for all stories with estimates.

# flags.summary.description

Prints a sorted table of every story that has a declared estimate, with aggregate
averages at the bottom. Stories without a completed run show status `pending`.

# examples

- Benchmark a single completed story:

  <%= config.bin %> <%= command.id %> --story US-42

- Summary table of all stories:

  <%= config.bin %> <%= command.id %> --summary

# info.story-header

Benchmark: %s

# info.sizing

Sizing: %s

# info.solo

Solo estimate: %sd

# info.ai-unguided

AI unguided: %sd

# info.actual

Actual: %s

# info.vs-solo

vs Solo: %s

# info.vs-ai

vs AI unguided: %s

# info.qa-iterations

QA iterations: %d

# info.evidence

Evidence items: %d

# info.actual-source

Source: %s

# info.status

Status: %s

# info.summary-header

%d story(ies) with estimates (%d completed):

# info.summary-averages

Averages (completed runs): vs Solo %s vs AI unguided %s

# info.empty

No estimates recorded yet. Run: sf setup-agents workflow estimate --story <id> ...

# errors.no-estimate

No estimate found for story '%s'. Record one first with sf setup-agents workflow estimate.
