11 KiB
Task Lifecycle
This document describes all task states, valid transitions, and workflow enforcement in the RoboCo system.
Task States
Tasks follow a defined lifecycle from creation to completion. Each state represents a specific phase of work.
State Definitions
| State | Description |
|---|---|
backlog |
PM setup phase - task with dependencies or needs session setup |
pending |
Ready for work - orchestrator can spawn agents |
claimed |
Agent has taken ownership but not started |
in_progress |
Active work being performed |
blocked |
Waiting on another task or external dependency |
paused |
Temporarily suspended by the assigned agent |
verifying |
Self-verification by the developer |
needs_revision |
QA or CEO has requested changes |
awaiting_qa |
Ready for QA review |
awaiting_documentation |
Docs + Developer PR creation in parallel |
awaiting_pm_review |
After docs + PR ready, PM reviews |
awaiting_ceo_approval |
PMs approved, CEO makes final decision |
completed |
Task finished successfully (terminal) |
cancelled |
Task cancelled (terminal) |
quarantined |
Special state for problematic tasks |
State Categories
# Terminal states - cannot transition out
TERMINAL_STATES = ["completed", "cancelled"]
# Waiting states - agent can work on other tasks
WAITING_STATES = [
"blocked",
"paused",
"awaiting_qa",
"awaiting_documentation",
"awaiting_pm_review",
"awaiting_ceo_approval",
]
# Active states - agent is actively working
ACTIVE_STATES = ["claimed", "in_progress", "verifying", "needs_revision"]
State Transition Diagram
+-----------+
| quarantined|
+-----+-----+
|
v
+--------+ +----------+ +---------+ +-------------+
| backlog| --> | pending | --> | claimed | --> | in_progress |
+---+----+ +----+-----+ +----+----+ +------+------+
| | | |
v v v |
+---------+ +---------+ +-----------+ |
|cancelled| |cancelled| | pending | |
+---------+ +---------+ |(unclaim) | |
+-----------+ |
|
+-----------------------------------+
| | | |
v v v v
+----------+ +----------+ +---------+
| blocked | | paused | |verifying|
+----+-----+ +----+-----+ +----+----+
| | |
v v |
in_progress in_progress |
|
+-----------------------------+
| | |
v v v
+-------------+ +---------------+ +---------------------+
| awaiting_qa | |needs_revision | |awaiting_documentation|
+------+------+ +-------+-------+ +----------+----------+
| | |
| v |
| claimed/in_progress |
| |
+-----------------+---------------------+
|
v
+------------------+
|awaiting_pm_review|
+--------+---------+
|
+-------------------------+-------------------------+
| | |
v v v
+-----------+ +--------------------+ +-----------+
| completed | |awaiting_ceo_approval| | cancelled |
+-----------+ +---------+----------+ +-----------+
|
+-------------------------+-------------------------+
| | |
v v v
+-----------+ +---------------+ +-----------+
| completed | | needs_revision| | cancelled |
+-----------+ +---------------+ +-----------+
Valid Transitions
The following table shows all valid state transitions:
| From State | To States |
|---|---|
backlog |
pending, cancelled |
pending |
claimed, cancelled |
claimed |
in_progress, pending, cancelled |
in_progress |
blocked, paused, verifying, awaiting_pm_review, awaiting_documentation, needs_revision, completed, cancelled |
blocked |
in_progress, cancelled |
paused |
in_progress, cancelled |
verifying |
awaiting_qa, needs_revision, awaiting_documentation, cancelled |
needs_revision |
claimed, in_progress, cancelled |
awaiting_qa |
claimed, awaiting_documentation, needs_revision, blocked, cancelled |
awaiting_documentation |
claimed, awaiting_pm_review, cancelled |
awaiting_pm_review |
claimed, awaiting_ceo_approval, completed, cancelled |
awaiting_ceo_approval |
completed, needs_revision, cancelled |
completed |
(none - terminal) |
cancelled |
(none - terminal) |
quarantined |
pending |
Role-Based Restrictions
Certain transitions require specific roles:
PM-Only Transitions
backlog->pending(activate task)awaiting_pm_review->completedawaiting_pm_review->awaiting_ceo_approvalin_progress->completed(PM completing their own task)- All cancellation transitions
QA-Only Transitions
awaiting_qa->claimed(QA claims)awaiting_qa->awaiting_documentation(QA pass)awaiting_qa->needs_revision(QA fail)in_progress->awaiting_documentation(direct QA assignment pass)in_progress->needs_revision(direct QA assignment fail)
Documenter-Only Transitions
awaiting_documentation->claimed(Documenter claims)awaiting_documentation->awaiting_pm_review(Docs complete)
CEO-Only Transitions
awaiting_ceo_approval->completed(CEO approves)awaiting_ceo_approval->needs_revision(CEO requests changes)awaiting_ceo_approval->cancelled(CEO cancels)
PM Cancel Roles
The following roles can cancel tasks:
cell_pmmain_pmproduct_ownerhead_marketing
Git Integration
Tasks with requires_git=True have additional requirements:
Git Workflow Requirements
-
Starting Work (
claimed->in_progress):- Task must have
branch_nameset (PM created the branch)
- Task must have
-
Documentation to PM Review (
awaiting_documentation->awaiting_pm_review):- Requires BOTH
docs_complete=TrueANDpr_created=True - Documenter and Developer work in parallel during this phase
- Requires BOTH
-
PM Review to CEO Approval (
awaiting_pm_review->awaiting_ceo_approval):- Task must have
pr_numberset (PR exists)
- Task must have
-
CEO Approval to Completed (
awaiting_ceo_approval->completed):- PR should be merged (CEO merges as final action)
Parallel Execution Phase
During awaiting_documentation:
- Documenter: Works on docs, calls
roboco_task_docs_complete()when done - Developer: Creates PR, calls
roboco_git_create_pr()when ready
Both must complete before transitioning to awaiting_pm_review.
def check_parallel_completion(docs_complete: bool, pr_created: bool, requires_git: bool = True) -> bool:
"""Check if parallel execution is complete."""
if not requires_git:
return docs_complete
return docs_complete and pr_created
Task Types
Task types determine whether git workflow applies:
| Type | Git Required | Description |
|---|---|---|
code |
Yes | Technical work - full git workflow |
documentation |
Optional | May or may not need git |
research |
No | Investigation/analysis tasks |
planning |
No | Planning and design tasks |
design |
No | UX/UI design tasks |
administrative |
No | Administrative tasks |
Workflow Enforcement
The task_lifecycle.py module enforces these rules:
from roboco.enforcement.task_lifecycle import (
validate_task_transition,
validate_git_requirements,
can_agent_transition,
is_terminal_state,
is_waiting_state,
is_active_state,
)
# Validate a transition
validate_task_transition(
current_status="in_progress",
target_status="verifying",
agent_role="developer"
)
# Check git requirements
from roboco.enforcement.task_lifecycle import GitContext
git_ctx = GitContext(
requires_git=True,
docs_complete=True,
pr_created=True,
pr_number=42,
branch_name="feature/backend/ABC123"
)
validate_git_requirements(
current_status="awaiting_documentation",
target_status="awaiting_pm_review",
git_ctx=git_ctx
)
Exceptions
The lifecycle module raises specific exceptions:
TaskLifecycleError: Invalid state transition or role not permittedGitRequirementError: Git requirements not met for a transition
Example error handling:
from roboco.exceptions import TaskLifecycleError
from roboco.enforcement.task_lifecycle import GitRequirementError
try:
validate_task_transition("pending", "in_progress", "developer")
except TaskLifecycleError as e:
print(f"Invalid transition: {e.current_status} -> {e.target_status}")
print(f"Valid transitions: {e.valid_transitions}")
try:
validate_git_requirements("claimed", "in_progress", git_ctx)
except GitRequirementError as e:
print(f"Git requirement not met: {e.requirement}")
print(f"Message: {e.message}")
Related API Endpoints
Task lifecycle operations are exposed via the Task API:
| Endpoint | Description |
|---|---|
POST /tasks/{id}/claim |
Claim a pending task |
POST /tasks/{id}/start |
Start working on claimed task |
POST /tasks/{id}/block |
Block task on dependency |
POST /tasks/{id}/soft-block |
Block on external factor |
POST /tasks/{id}/unblock |
Unblock a task |
POST /tasks/{id}/pause |
Pause active task |
POST /tasks/{id}/resume |
Resume paused task |
POST /tasks/{id}/verify |
Submit for self-verification |
POST /tasks/{id}/submit-qa |
Submit to QA |
POST /tasks/{id}/pass-qa |
QA passes task |
POST /tasks/{id}/fail-qa |
QA fails task |
POST /tasks/{id}/docs-complete |
Mark docs complete |
POST /tasks/{id}/submit-pm-review |
Submit for PM review |
POST /tasks/{id}/escalate-to-ceo |
Escalate to CEO |
POST /tasks/{id}/ceo-approve |
CEO approves |
POST /tasks/{id}/ceo-reject |
CEO rejects |
POST /tasks/{id}/complete |
Complete task (PM) |
POST /tasks/{id}/cancel |
Cancel task (PM) |
POST /tasks/{id}/activate |
Activate from backlog (PM) |