fleet-stage-progression
How PM monitors and advances task stage progression — detecting stalled tasks, verifying methodology checks pass, coordinating PO gates. The bridge between methodology and dispatch.
SKILL.md.claude/skills/fleet-stage-progression/SKILL.md
GitHubStage Progression Oversight — PM's Methodology Bridge
Tasks don't advance themselves. The PO sets readiness. The methodology defines what each stage requires. But YOU monitor whether tasks are actually progressing — and when they stall, you act.
The Stage Lifecycle
conversation (0-20) → analysis (20-50) → investigation (50-80) → reasoning (80-99) → work (99-100)
Each transition requires:
- The current stage's work is done (artifact exists, criteria met)
- PO reviewed and confirmed (readiness advanced)
- Required contributions exist (for stories/epics entering reasoning/work)
Your job: monitor all three conditions for every active task.
What to Check Each Heartbeat
1. Stalled Tasks
A task that hasn't changed stage or readiness in 2+ heartbeat cycles is stalling.
How to detect:
- Read your ASSIGNED TASKS section — check
task_readinessandtask_stage - Compare to what you remember from last cycle (or check trail events)
- If readiness hasn't moved and no trail events → stalled
Actions by cause:
| Cause | How You Know | What to Do |
|---|---|---|
| Agent waiting for PO | Artifact exists, readiness unchanged | Route to PO: fleet_gate_request or fleet_chat(mention="human") |
| Agent stuck on work | In-progress but no commits or progress reports | fleet_chat("Status on task X?", mention=agent) |
| Missing contribution | Task in reasoning, no required contribution | Call pm_contribution_check(task_id) → create missing contribution tasks |
| Unclear requirement | Agent asked questions, no PO response | Escalate: fleet_escalate(title="PO input needed for task X") |
| Agent offline | Agent in SLEEPING/OFFLINE state | Wait one cycle, then consider reassignment |
2. Ready to Advance
A task whose stage work is DONE but readiness hasn't been updated yet.
Indicators:
- Analysis stage: analysis_document artifact at 100% completeness → ready for investigation
- Investigation stage: investigation_document with options explored → ready for reasoning
- Reasoning stage: plan references verbatim, contributions received → ready for work
- Work stage:
fleet_task_completecalled → now in review (automatic)
What you do:
- Verify the artifact or deliverable exists
- Verify PO has seen it (check for PO comments or directive)
- If PO confirmed: advance readiness to next stage boundary
- If PO hasn't seen: route to PO with summary
3. Contribution Gates
Before any story/epic advances to work stage, contributions must be complete.
The mandatory check:
pm_contribution_check(task_id)
This returns:
all_received: true→ safe to advance to workmissing: ["design_input", "qa_test_definition"]→ create contribution tasks
Never advance to work without this check. The engineer needs contributions in their context.
4. The 90% Gate
When readiness reaches 90%, a PO gate fires:
fleet_gate_request(task_id, "readiness_90", summary)→ ntfy to PO- PO approves → readiness goes to 99 → dispatched for work
- PO rejects → readiness stays or regresses → task needs revision
Package the gate with context: pm_gate_route(task_id) gathers plan status, contribution completeness, and readiness for the PO's decision.
Stage-Specific Monitoring
Conversation → Analysis (readiness 20)
- Agent has understood requirements? (check for task comments with questions answered)
- Verbatim requirement populated?
- If vague after 2 cycles → escalate to PO
Analysis → Investigation (readiness 50)
- Analysis document exists with findings?
- PO reviewed findings?
- Implications for the task are clear?
Investigation → Reasoning (readiness 80)
- Investigation document has multiple options explored?
- PO reviewed options?
- Enough information to make a decision?
Reasoning → Work (readiness 99)
- Plan references verbatim requirement?
- All required contributions received? (
pm_contribution_check) - PO confirmed the plan?
- Gate approved?
Common Anti-Patterns
- Readiness inflation — PM sets readiness to 99 without contributions. Result: engineer works without design input, gets rejected.
- Stage skipping — Task goes from conversation to work because "it's clear enough." Result: no analysis, no investigation, weak implementation.
- Stale advancement — Task readiness was set 5 cycles ago but nobody's working on it. Result: context is stale when agent finally gets dispatched.
- PO bottleneck — Multiple tasks waiting for PO review. Result: fleet stalls. Batch PO gates together and escalate proactively.
The Dispatch Connection
When you advance readiness to 99%, the orchestrator's dispatch step picks it up:
- Orchestrator reads task with
task_readiness >= 99andtask_stage = work - Budget check → storm check → doctor check → router selects model
- Context refresh: writes task-context.md with stage instructions + contributions
- Agent wakes and sees the task with FULL context
Your readiness advancement IS the dispatch trigger. Setting it correctly — with contributions verified, plan confirmed, PO gate approved — is what makes dispatch work.