# Agent estimates in minutes

Ask a coding agent how long a story takes and it often answers like a human developer: "2–3 days". That doesn't help you plan when the agent gets it done in an hour, or gets stuck on an unclear card. In Slicemap the agent estimates in minutes of its own work, and later records how many minutes it actually worked. The two numbers are in the same unit, so you can compare them.

## The plan

Before the first line of code, ideally as soon as the acceptance criteria are written, your agent estimates the story with `slicemap_estimate_story`. The plan has:

- **Minutes**: how long the agent expects the work to take, with a range from low to high. The expected minutes sit inside the range.
- **Complexity** from 1 to 5: how big and risky the work is, from one place in the code to a new table, rights and many screens.
- **Clarity** from 1 to 5: how well the card lets the agent build without guessing. Below 5, the agent has to say in one line what the card is missing.
- **Model**: the name of the model or agent that made the estimate.

Low clarity is the useful part. It tells you the card is raw before any code is written, and what to add to it.

Only the agent writes the plan. You see it but can't edit it; if you disagree, ask the agent to estimate again. A story without a plan can still go into work.

## The plan freezes when work starts

Until a story goes into work, a new estimate replaces the old one. A story in the done stage (Production by default) is frozen too, even if it never went through development. The first time the story enters the stage with the `in-progress` code (In Development in the default stages), Slicemap stamps the time and freezes the plan. It stays frozen even if the story moves back, so it can be compared honestly with what happened. A new estimate after that is refused with `estimate_frozen`.

## The actual minutes

When the agent hands a story over to review or done, it records the minutes of its own work in this pass with `slicemap_record_work`. Time spent waiting for your answers doesn't count. If the story comes back from review, the next handover adds its minutes on top and counts one more pass. The plan stays as it was, and a recorded number can't be corrected later.

Slicemap also shows the calendar time: from the first move into work to the last recorded pass. It tells you how long the story took on the calendar, but it doesn't go into the comparison of plan and actual.

## Where you see it

- **On the story**: the **Agent estimate** block shows the plan with its range, complexity, clarity, what is missing, the model, the actual minutes with the number of passes, and the calendar time.
- **On cards, Outline rows and in the Table**: the **Estimate** field shows planned and actual minutes. It is off by default; turn it on in **Display**.
- **By the public link**: guests see the planned minutes with their range and the actual minutes, nothing else.

## The Statistics page

Open the project and click **Statistics**. The page counts across all maps of the project, and your agent gets the same numbers from `slicemap_project_stats`. It shows:

- **Open stories estimated**: the share of open stories that have a plan. A story is open while its stage isn't marked Closed.
- **Plan / actual**: planned and actual hours over stories that have both.
- **Actual within range**: how often the actual minutes fell inside the agent's range.
- **Usually off by**: how many times the agent is typically off, and whether it tends to underestimate or overestimate. It is a median, so one runaway story doesn't spoil it.
- **Left in the active release**: the planned time of its open stories, and how many of them have no estimate yet.
- **By release**: estimates and plan against actual for each release and for the backlog.
- **Story clarity**: the average clarity of open stories and the list of raw ones, with clarity 1 or 2 and what they miss. Click one to open it on the map, and fill in the card before the agent starts.

Everyone in the workspace sees the page, viewers too. Guests on the public link don't.
