30 unchanged lines
## 0. Core thesis
## 0. Core thesis
Progress updates are decision signals, not proof that an agent is busy. A good
Progress updates are decision signals, not proof that an agent is busy. A good
update helps the user understand what became true, what remains uncertain, and
update helps the user understand what became true, what remains uncertain, and
whether intervention is needed. Reassurance without changed evidence is noise.
whether intervention is needed. Reassurance without changed evidence is noise.
## 1. When progress reporting applies
## 1. When progress reporting applies
Use this method when work is expected to exceed 15 minutes, spans multiple
Use this method when work is expected to exceed 15 minutes, spans multiple
milestones, coordinates multiple agents, or has meaningful blockers between
milestones, coordinates multiple agents, or has meaningful blockers between
start and completion. Skip it for short answers, one-command changes, or work
start and completion. Skip it for short answers, one-command changes, or work
whose only honest states are started and finished.
whose only honest states are started and finished.
## 2. Establish the denominator
## 2. Establish the denominator
Before showing a percentage, identify 3–7 observable milestones. A milestone
Before showing a percentage, identify 3–7 observable milestones. A milestone
is complete only when its evidence exists: a passing check, committed artifact,
is complete only when its evidence exists: a passing check, committed artifact,
accepted review, accessible deployment, or another task-specific gate.
accepted review, accessible deployment, or another task-specific gate.
Weight milestones by expected work and risk. Do not divide them equally when
Weight milestones by expected work and risk. Do not divide them equally when
one milestone clearly dominates the task. Never derive progress from elapsed
one milestone clearly dominates the task. Never derive progress from elapsed
time, tool-call count, token use, or confidence.
time, tool-call count, token use, or confidence.
Rebaseline only when scope materially changes. State the scope change in the
Rebaseline only when scope materially changes. State the scope change in the
same update; do not silently move the percentage backward or inflate it.
same update; do not silently move the percentage backward or inflate it.
## 3. Cadence
## 3. Cadence
Send one baseline update after the scope and denominator are understood.
Send one baseline update after the scope and denominator are understood.
2. A completed milestone, at least 10 percentage points of verified progress,
2. A completed milestone, at least 10 percentage points of verified progress,
unchanged checks, agent polling, and repeated test runs do not.
unchanged checks, agent polling, and repeated test runs do not.
23 unchanged lines
Each update contains no more than three concise items:
Each update contains no more than three concise items:
1. What completed, with concrete evidence.
1. What completed, with concrete evidence.
2. What is active now.
2. What is active now.
3. The next step or blocker.
3. The next step or blocker.
End with one 20-cell overall bar styled as inline code on its own line:
End with one 20-cell overall bar styled as inline code on its own line:
`Performance rollout [██████████████████░░] 90%`
`Performance rollout [██████████████████░░] 90%`
Use one pair of backticks for inline-code styling. Do not indent the line by
Use one pair of backticks for inline-code styling. Do not indent the line by
four spaces and do not use a fenced code block. Those forms create a separate
four spaces and do not use a fenced code block. Those forms create a separate
code block that interfaces may label or make copyable.
code block that interfaces may label or make copyable.
Use `█` for completed cells and `░` for remaining cells. Each cell represents
Use `█` for completed cells and `░` for remaining cells. Each cell represents
5%. Round down to avoid overstating progress. Use 100% only when every required
5%. Round down to avoid overstating progress. Use 100% only when every required
gate is complete.
gate is complete.
Replace the label with a short task-specific label. Keep one overall bar even
Replace the label with a short task-specific label. Keep one overall bar even
when the work has batches or subagents. Subtask bars appear only when the user
when the work has batches or subagents. Subtask bars appear only when the user
asks for them. In coordinated work, the root agent owns the bar.
asks for them. In coordinated work, the root agent owns the bar.
note, recap, disclaimer, or closer beneath it.
note, recap, disclaimer, or closer beneath it.
8 unchanged lines
|---|---|---|
|---|---|---|
| Activity percentage | Measures motion, not completion | Tie each increase to evidence |
| Activity percentage | Measures motion, not completion | Tie each increase to evidence |
| Update spam | Hides meaningful changes | Apply both cadence gates |
| Update spam | Hides meaningful changes | Apply both cadence gates |
| Frozen repeated bar | Pretends to inform | Stay silent until state changes |
| Frozen repeated bar | Pretends to inform | Stay silent until state changes |
| Batch bar collection | Makes the user aggregate status | Show one overall bar |
| Batch bar collection | Makes the user aggregate status | Show one overall bar |
| Optimistic rounding | Overstates readiness | Round down to 5% |
| Optimistic rounding | Overstates readiness | Round down to 5% |
| Instant 90% | Leaves the risky tail invisible | Weight validation and delivery gates |
| Instant 90% | Leaves the risky tail invisible | Weight validation and delivery gates |
| Silent rebaseline | Breaks trust in the denominator | Name the scope change |
| Silent rebaseline | Breaks trust in the denominator | Name the scope change |