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 → DoneNot 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
| State | Owned by | What's happening |
|---|---|---|
| Initializing | Work Planner | Pipeline starting up. Containers warming, config loading. |
| Routing | Repo Router | Picking a repo (in Let Bilbis pick mode) and deciding the plan. |
| Planning | Work Planner | Decomposing the task into file-level steps. Skipped for short single-repo tasks on small repos. |
| Coding | Implementation Agent | Writing code. The longest state on most runs. |
| Testing | Test Runner | Running the project's local tests. |
| Visual check | Review Agent | Comparing output against a Figma reference. Fires only when a Figma URL was supplied. |
| Pushing | PR Publisher | Committing the work and pushing a branch. |
| CI | Test Runner | Waiting for your CI provider to finish its checks. |
| CI fixing | Implementation Agent | CI failed. Reading the failing job log and pushing a fix. |
| Reviewing | Review Agent | Reading the diff and writing review comments. |
| Addressing review | Implementation Agent | Fixing things the Review Agent flagged. |
| Merging | PR Publisher | Merging the MR. |
Waiting states
| State | Owned by | What's happening |
|---|---|---|
| Needs your input | Whichever agent asked | Pipeline paused on a clarification question. Reply on the Clarifications tab to resume. |
| Awaiting approval | PR Publisher | MR 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 hold | Repo Router | The Jira ticket moved into a configured hold status. Bilbis resumes automatically when it leaves all hold statuses. |
Blocked states
| State | Owned by | What's happening |
|---|---|---|
| Configure Jira fields | PR Publisher | Jira 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
| State | What it means |
|---|---|
| Done | Success. The MR merged (or the dry run finished). |
| Failed | The pipeline ran out of options. Open the Diagnostics tab for the reason. |
| Cancelled | An admin cancelled, or the 48-hour clarification timeout fired. (Window flagged for backend confirmation.) |
Queued
| State | What it means |
|---|---|
| Queued | Another 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:
| Glyph | Meaning |
|---|---|
| ◷ | Queued |
| ▸ | Active |
| ? | Needs your input or Awaiting approval |
| ✓ | Done |
| ✗ | Failed or Cancelled |
What you should do, by state
| State | What to do |
|---|---|
| Active states | Nothing. Wait. |
| Queued | Wait, or raise priority on a new run. |
| Needs your input | Open the pipeline, click Clarifications, reply. |
| Awaiting approval | Approve 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 hold | Move the Jira ticket out of the hold statuses. |
| Configure Jira fields | Admin only - update Transition field mappings in Settings → Integrations → Jira, then retrigger. |
| Done | Read the result and close the tab. |
| Failed | Open Diagnostics, read the reason, decide whether to retry. |
| Cancelled | Nothing - terminal. |
Related pages
- What is a pipeline - the unit of work the lifecycle describes.
- Meet the agents - who owns which state.
- Pipeline states - quick reference for the badge colors.
- Review pipeline results - read the detail page tab by tab.
- Clarifications and approvals - handle the two waiting states.
- Troubleshooting - recovery when something goes wrong.