Skip to content

Job lifecycle

A Job (Run in the dashboard UI) bundles:

  • workflowPath — which markdown workflow defines phases and agents (/reference/workflow-extension/).
  • Resolved intelligence — base + tenant + repo merged into _intelligence/ (/concepts/architecture/).
  • State — persisted in SQLite (solo) or via the cloud transport (hybrid).

Typical flow

  1. Trigger — CLI (coro job …), dashboard form or Coro plan mode brief, webhook, tracker assignment, or internal dispatch (campaign children, memory curator).
  2. Planning / execution loop — the runner invokes the PhaseExecutor plugin (typically @coro-ai/llm-anthropic) per phase until the workflow demands an external wait.
  3. Parkingawait_event({ eventName: "pr:merged", … }) or equivalent keeps the dispatcher from scheduling more LLM work until SCM/tracker/coordinator feeds an event queue entry.
  4. Resume — verified webhooks (/guides/webhooks/) or hybrid WebSocket relays (/guides/hybrid-mode/) append a pendingPrompt; the runner re-enters the stalled phase automatically. Manual escapes exist via coro resume / dashboard messaging where supported (/reference/cli/).
  5. Completion or escalation — terminal statuses surface in dashboard + coro logs.

Interaction with campaigns

Campaign Jobs remain single parent Jobs whose workflow dispatches child Jobs; parenting metadata links children for dependency waits and rollup evaluation (/guides/run-campaign/).