Concepts

Pipeline lifecycle

Every state a pipeline can be in, in the order it visits them, and what each transition means.

Short answer

A pipeline is a small state machine. It starts at Initializing, walks through a series of active states (coding, testing, pushing, CI, reviewing), pauses on people when needed, and finishes at Done, Failed, or Cancelled.

You don't drive the state machine. You watch the badge on the pipeline detail page and act when it asks you to.

How it works

States fall into four groups:

  • Active - work is happening. The badge animates. Polling continues.
  • Waiting - paused on a person. The badge is amber. Polling continues.
  • Blocked - paused on an admin configuration change. The badge is orange. Polling continues.
  • Terminal - finished. Polling stops.

The pipeline can also sit in Queued if another pipeline is already running on the same repo.

Happy path

A successful pipeline visits the states below in order, finishing at Done.

Queued → Initializing → Routing → Planning → Coding → Testing → Visual check
       → Pushing → CI → Reviewing → Awaiting approval
       → Merging → Done

Not every pipeline hits every state. Planning is skipped on short single-repo tasks. Visual check only fires if a Figma URL was supplied. CI fixing only fires if CI failed and the agent is iterating on a fix. Awaiting approval only fires if your product is configured to require human approval before merge.

Every state

Listed in roughly visit order. Same content as the Pipeline states reference, with the lifecycle framing.

Active states

StateOwned byWhat's happening
InitializingWork PlannerPipeline starting up. Containers warming, config loading.
RoutingRepo RouterPicking a repo (in Let Bilbis pick mode) and deciding the plan.
PlanningWork PlannerDecomposing the task into file-level steps. Skipped for short single-repo tasks on small repos.
CodingImplementation AgentWriting code. The longest state on most runs.
TestingTest RunnerRunning the project's local tests.
Visual checkReview AgentComparing output against a Figma reference. Fires only when a Figma URL was supplied.
PushingPR PublisherCommitting the work and pushing a branch.
CITest RunnerWaiting for your CI provider to finish its checks.
CI fixingImplementation AgentCI failed. Reading the failing job log and pushing a fix.
ReviewingReview AgentReading the diff and writing review comments.
Addressing reviewImplementation AgentFixing things the Review Agent flagged.
MergingPR PublisherMerging the MR.

Waiting states

StateOwned byWhat's happening
Needs your inputWhichever agent askedPipeline paused on a clarification question. Reply on the Clarifications tab to resume.
Awaiting approvalPR PublisherMR is open. Pipeline is waiting for a human to approve before merging. A Merge blocked banner shows when the provider rejected the last merge attempt - the cron retries every ten minutes once the block clears.
Paused — ticket on holdRepo RouterThe Jira ticket moved into a configured hold status. Bilbis resumes automatically when it leaves all hold statuses.

Blocked states

StateOwned byWhat's happening
Configure Jira fieldsPR PublisherJira refused a workflow transition because required fields weren't supplied. Pipeline resumes after an admin updates Transition field mappings in Settings → Integrations → Jira (or on the per-product override) and retriggers.

Terminal states

StateWhat it means
DoneSuccess. The MR merged (or the dry run finished).
FailedThe pipeline ran out of options. Open the Diagnostics tab for the reason.
CancelledAn admin cancelled, or the 48-hour clarification timeout fired. (Window flagged for backend confirmation.)

Queued

StateWhat it means
QueuedAnother pipeline is already running on this repo. Bilbis holds a per-repo lock - yours starts as soon as the previous one finishes. Priority controls queue order.

Common transitions

Some patterns you'll see often:

  • CI → CI fixing → CI loop. The agent failed CI, read the logs, pushed a fix, and is waiting for CI to re-run. Healthy. If it loops more than a few times, see Troubleshooting.
  • Reviewing → Addressing review → Reviewing. The Review Agent flagged something and the Implementation Agent fixed it. Same shape as the CI loop.
  • Routing → Needs your input. The Repo Router couldn't decide between candidate repos and asked you which one. Reply on Clarifications.
  • Pushing → Needs your input. The Repo Router couldn't read a target branch out of your task description. Reply with a branch name on Clarifications.
  • Anywhere → Paused — ticket on hold. A Jira webhook moved the ticket into a hold status. Pipeline resumes when the ticket leaves the hold list.
  • Reviewing → Configure Jira fields. Bilbis tried to move the Jira ticket to Code Review but Jira required fields the admin hasn't mapped yet. Pipeline resumes after the mapping is filled in.
  • Anywhere → Cancelled. An admin cancelled the pipeline, the 48-hour clarification timeout fired, or a Jira webhook moved the ticket into a configured cancel status.

Polling and tab title

While the pipeline is in any active or waiting state, Bilbis polls the backend every few seconds for fresh data. Polling stops on terminal states.

The browser tab title also tracks the lifecycle so a backgrounded tab tells you what's going on:

GlyphMeaning
Queued
Active
?Needs your input or Awaiting approval
Done
Failed or Cancelled

What you should do, by state

StateWhat to do
Active statesNothing. Wait.
QueuedWait, or raise priority on a new run.
Needs your inputOpen the pipeline, click Clarifications, reply.
Awaiting approvalApprove via the page, the MR/PR, or Jira. If the Merge blocked banner shows, fix the named issue at the source - cron retries automatically.
Paused — ticket on holdMove the Jira ticket out of the hold statuses.
Configure Jira fieldsAdmin only - update Transition field mappings in Settings → Integrations → Jira, then retrigger.
DoneRead the result and close the tab.
FailedOpen Diagnostics, read the reason, decide whether to retry.
CancelledNothing - terminal.

On this page