This page is a reference for openTiger's main status and transition vocabulary.
For state transition flows, see flow.
Related:
- 1. Task Status
- 1.1 Task Kind
- 1.2 Task Lane
- 2. Task Block Reason
- 2.1 Task Retry Reason (
GET /tasks) - 2.2 Task Retry Reason (Operations)
- 3. Run Status
- 3.1 Merge Queue Status
- 4. Agent Status
- 5. Cycle Status
- 5.1 Research Job Status and Stage
- 6. Conversation Phase (Chat)
- 7. Usage
- 8. Patterns Prone to Stalls (Initial Diagnosis)
- 9. Lookup: State Vocabulary to Transition to Owner to Implementation (Shortest Path)
queuedrunningdonefailedblockedcancelled
Notes:
queued: waiting for Dispatcher dispatchrunning: in execution via lease/runblocked: waiting for recovery per block reason
code(core built-in)- plugin-defined kinds (registered through
PluginManifestV1.taskKinds)
Notes:
codefollows github/local-git/direct implementation pipeline depending onREPO_MODE.- Plugin kinds are validated against runtime plugin registry before task creation/dispatch.
- Unknown/unregistered kinds are rejected at API validation time.
feature(core built-in)conflict_recovery(core built-in)docser(core built-in)- plugin-defined lanes (registered through
PluginManifestV1.lanes)
Notes:
- Dispatcher lane scheduler uses lane + active running usage to prevent feature starvation.
docserlane is serialized throughtargetArea=docser:global.conflict_recoverylane is capped to avoid monopolizing worker slots.- Plugin lanes are admitted only when declared by an enabled compatible plugin.
awaiting_judge- Waiting for judge of successful run, or judge recovery
quota_wait- Cooldown wait after quota-related failure
needs_rework- Non-approve / policy / verification rework
issue_linking- Planner issue linkage; returns to
queuedwhen resolved
- Planner issue linkage; returns to
Notes:
- Legacy
needs_humanis treated asawaiting_judge.
failed / blocked tasks include retry info; reason can be:
cooldown_pendingretry_dueretry_exhaustednon_retryable_failureawaiting_judgequota_waitneeds_reworkunknown
When failureCategory is present:
envsetuppolicytestflakymodelmodel_loop
For initial triage, these values are most useful:
retry.reason |
Meaning | Main check targets |
|---|---|---|
awaiting_judge |
Stuck waiting for judge | GET /judgements, GET /system/processes, GET /logs/all |
quota_wait |
Waiting for quota cooldown | GET /tasks, GET /runs, GET /logs/all |
needs_rework |
Moving into rework loop | GET /runs, GET /judgements, GET /logs/all |
cooldown_pending |
In cooldown (before auto retry) | retryAt/retryInSeconds in GET /tasks |
retry_due |
Retry time reached | GET /tasks, GET /logs/all |
runningsuccessfailedcancelled
pr_merge_queue.status:
pendingprocessingmergedfailedcancelled
Notes:
pendingrows are claimable whennext_attempt_at <= now.processingrows require valid claim lease (claim_owner,claim_expires_at).- On claim timeout, recovery transitions
processing -> pending.
idlebusyoffline
Notes:
- These apply to roles in the
agentstable (planner/worker/tester/docser/judge). - Dispatcher / Cycle Manager are process-managed; use
GET /system/processes.
runningcompletedaborted
Research job status (research_jobs.status):
queuedrunningblockeddonefailedcancelled
Research task stage (tasks.context.research.stage):
plancollectchallengewrite
Research orchestrator stage (research_jobs.metadata.orchestrator.stage) commonly observed:
planningcollectingchallengingcomposingjudgingreworkingcompleted
Conversations in the chat interface progress through phases stored in conversations.metadata.phase:
greeting— initial state, assistant greeting shownrequirement_gathering— user providing requirements, LLM asking minimal clarificationsplan_proposal— LLM has generated a plan (triggered by---PLAN_READY---marker)execution— mode selected, execution processes startedmonitoring— execution in progress, tracking completion
Notes:
- Phase transition from
requirement_gathering→plan_proposalis marker-based, not message-count-based plan_proposaltriggers amode_selectionsystem message for the UIexecutionis set byPOST /chat/conversations/:id/start-execution
text— standard conversation messages (user/assistant), included in LLM contextmode_selection— system card for execution mode selection (direct/local-git/github)execution_status— system card showing execution start and moderepo_config— system message for repository configuration changes
Implementation reference:
packages/db/src/schema.ts(conversations,messagestables)apps/api/src/routes/chat-orchestrator.ts(phase resolution, system prompts)apps/api/src/routes/chat.ts(endpoints, marker detection)apps/api/src/routes/chat-state.ts(SSE session management)
- State definitions: this page
- Transition conditions: flow
- Startup formulas: startup-patterns
- Task status / block reason:
packages/core/src/domain/task.tspackages/db/src/schema.ts(tasks.status,tasks.block_reason)
- Run status:
packages/core/src/domain/run.tspackages/db/src/schema.ts(runs.status)
- Agent status:
packages/core/src/domain/agent.tspackages/db/src/schema.ts(agents.status)
- Cycle status:
packages/core/src/domain/cycle.tspackages/db/src/schema.ts(cycles.status)
| Symptom | First check state/value | Main APIs | Primary area to check |
|---|---|---|---|
queued not decreasing for long |
agents idle/busy, lease, dependency/targetArea conflict |
GET /agents, GET /tasks, GET /logs/all |
Dispatcher |
running stuck for long |
Corresponding run status, startedAt, worker logs |
GET /runs, GET /tasks, GET /logs/all |
Worker/Tester/Docser |
awaiting_judge increasing |
Pending judge run, judge process status | GET /judgements, GET /system/processes, GET /logs/all |
Judge |
quota_wait chaining |
Cooldown wait, concurrency, model quota | GET /tasks, GET /runs, GET /logs/all |
Worker + Dispatcher |
needs_rework chaining |
Non-approve reason, policy/verification failure content | GET /judgements, GET /runs, GET /logs/all |
Judge + Worker + Cycle Manager |
issue_linking not clearing |
Issue linkage metadata missing, import/link failure | GET /tasks, POST /system/preflight, GET /logs/all |
Planner + API |
Notes:
- For API check sequence, see operations.
- For agent triage confusion, see FAQ in agent/README.
Common path when tracing from state vocabulary:
| Starting point (state/symptom) | State vocabulary ref | Transition ref (flow) | Owner agent ref | Implementation ref |
|---|---|---|---|---|
queued/running stuck |
1, 2, 7 | flow#2 Basic Lifecycle, flow#5 Dispatcher Recovery, flow#6 Worker Failure | agent/dispatcher, agent/worker | apps/dispatcher/src/, apps/worker/src/ |
awaiting_judge stuck |
2, 7 | flow#3 Blocked Reasons, flow#4 Run Lifecycle, flow#7 Judge | agent/judge | apps/judge/src/ |
quota_wait/needs_rework chain |
2, 2.2, 7 | flow#3 Blocked Reasons, flow#6 Worker Failure, flow#8 Cycle Manager | agent/worker, agent/judge, agent/cycle-manager | apps/worker/src/, apps/judge/src/, apps/cycle-manager/src/ |
issue_linking stuck |
2, 7 | flow#3 Blocked Reasons, startup-patterns | agent/planner | apps/planner/src/ |
Notes:
- After checking responsibilities in flow, use "Implementation reference (source of truth)" at the end of agent spec pages to trace at file level.