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
- Trigger — CLI (
coro job …), dashboard form or Coro plan mode brief, webhook, tracker assignment, or internal dispatch (campaign children, memory curator). - Planning / execution loop — the runner invokes the PhaseExecutor plugin (typically
@coro-ai/llm-anthropic) per phase until the workflow demands an external wait. - Parking —
await_event({ eventName: "pr:merged", … })or equivalent keeps the dispatcher from scheduling more LLM work until SCM/tracker/coordinator feeds an event queue entry. - Resume — verified webhooks (
/guides/webhooks/) or hybrid WebSocket relays (/guides/hybrid-mode/) append apendingPrompt; the runner re-enters the stalled phase automatically. Manual escapes exist viacoro resume/ dashboard messaging where supported (/reference/cli/). - 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/).
Related reading
- /concepts/runner-spec/ — full runner technical specification.
- /concepts/overview/ — product-level narrative diagram.