> ## Documentation Index
> Fetch the complete documentation index at: https://docs.prflow.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# MR card states

> What the colored rail on PRFlow's Slack card means: blue, amber, red, green, purple, and grey, state by state.

PRFlow posts one Slack card per merge request and keeps updating that same
message as the MR moves through its lifecycle, while review comments join it
as [threaded replies](/comment-sync). The colored rail on the card's left
edge summarizes the state at a glance, so you can scan a channel without
reading a single row. The same card and colors apply to GitHub pull requests.

| Rail      | State          | What it means                                   |
| --------- | -------------- | ----------------------------------------------- |
| 🔵 Blue   | Under review   | Default state, nothing known to block the merge |
| 🟠 Amber  | In flux        | Draft, pipeline running, or merge scheduled     |
| 🔴 Red    | Blocked        | At least one required merge gate is failing     |
| 🟢 Green  | Ready to merge | Every required gate is confirmed passing        |
| 🟣 Purple | Merged         | Terminal, the MR was merged                     |
| ⚫ Grey    | Closed         | Terminal, closed without merging                |

## Reading the requirement rows

The card body shows one row per merge requirement that is actually enabled for
the repository: required CI, approvals (with the required count), an
up-to-date branch, resolved review threads, and merge conflicts. Each row
flips independently as events arrive:

* 🟢 the requirement is confirmed passing
* 🔴 the requirement is failing and blocks the merge
* 🔄 in progress right now (a running pipeline)
* ⚪ pending (a pipeline that exists but has not started)
* ◻️ unknown, PRFlow has no signal yet; unknown is never treated as passing

The rail color is derived from those rows plus the MR's lifecycle, as follows.

## Blue: under review

<Frame caption="A freshly opened MR: the pipeline is pending and no review signals exist yet.">
  <img src="https://mintcdn.com/prflow/C-gFWEsep6QNeQim/images/mr-states/blue.png?fit=max&auto=format&n=C-gFWEsep6QNeQim&q=85&s=d0ef2c7ec676f78903cb0881454bf4f5" alt="PRFlow Slack card with a blue rail: CI pending, approvals and threads unknown, up to date, no conflicts" width="1280" height="456" data-path="images/mr-states/blue.png" />
</Frame>

The default state. Nothing is known to block the merge, but not every
requirement is confirmed passing yet. A just-opened MR usually starts blue:
the pipeline has not run and nobody has reviewed it. Rows showing ◻️ or ⚪
keep the card blue rather than green, because PRFlow never counts an unknown
as a pass.

## Amber: in flux

<Frame caption="The pipeline is running; the card will flip on its own when it finishes.">
  <img src="https://mintcdn.com/prflow/C-gFWEsep6QNeQim/images/mr-states/amber.png?fit=max&auto=format&n=C-gFWEsep6QNeQim&q=85&s=6191e189e2ef245d6e425cb24534e02e" alt="PRFlow Slack card with an amber rail: CI running, other requirements unchanged" width="1280" height="458" data-path="images/mr-states/amber.png" />
</Frame>

The state is changing right now. The rail turns amber while the MR is a
draft, while a pipeline is actively running, or while a merge is scheduled to
happen automatically (for example "merge when pipeline succeeds"). Amber
resolves itself: once the pipeline finishes or the draft is marked ready, the
card moves to blue, red, or green.

## Red: blocked

<Frame caption="A blocked MR: failed CI, a missing approval, and two unresolved threads.">
  <img src="https://mintcdn.com/prflow/C-gFWEsep6QNeQim/images/mr-states/red.png?fit=max&auto=format&n=C-gFWEsep6QNeQim&q=85&s=e3f2fa6dccedb24d17ae1b25f270b02d" alt="PRFlow Slack card with a red rail: CI failed, approvals 1/2, two unresolved threads" width="1280" height="456" data-path="images/mr-states/red.png" />
</Frame>

At least one required merge gate is failing. Failed or canceled CI, missing
approvals, unresolved review threads, a branch that needs a rebase, and merge
conflicts all turn the rail red, and the failing rows name exactly what is
left to fix. Less common blockers (blocked by another MR, security policy
violations, a missing Jira issue, and similar) also turn the rail red and
appear as their own row. A failing gate that is not required, such as an
optional pipeline, never turns the card red.

## Green: ready to merge

<Frame caption="Every required gate is passing; the MR can be merged right now.">
  <img src="https://mintcdn.com/prflow/C-gFWEsep6QNeQim/images/mr-states/green.png?fit=max&auto=format&n=C-gFWEsep6QNeQim&q=85&s=96dfef1664fd9280c4c9e4e240b46172" alt="PRFlow Slack card with a green rail: CI passed, approvals 2/2, all threads resolved, up to date, no conflicts" width="1280" height="458" data-path="images/mr-states/green.png" />
</Frame>

Every required gate is confirmed passing: the MR is mergeable right now.
Green is earned, never assumed. If any required gate is still unknown, the
card stays blue instead of guessing.

## Purple: merged

<Frame caption="A merged MR: the requirement rows collapse into a single line.">
  <img src="https://mintcdn.com/prflow/C-gFWEsep6QNeQim/images/mr-states/purple.png?fit=max&auto=format&n=C-gFWEsep6QNeQim&q=85&s=5ef08655ad0edc895bc6dab6132c507f" alt="PRFlow Slack card with a purple rail: merged into main" width="1280" height="280" data-path="images/mr-states/purple.png" />
</Frame>

The MR was merged. The requirement rows collapse into a single line naming
the target branch, so the card becomes a compact record of the MR in the
channel.

## Grey: closed

<Frame caption="An MR closed without merging.">
  <img src="https://mintcdn.com/prflow/C-gFWEsep6QNeQim/images/mr-states/grey.png?fit=max&auto=format&n=C-gFWEsep6QNeQim&q=85&s=c101e56bfabce0983fc6504b5d145681" alt="PRFlow Slack card with a grey rail: closed" width="1280" height="282" data-path="images/mr-states/grey.png" />
</Frame>

The MR was closed without being merged. Like merged, this is a terminal
state: the rows collapse into a single ❌ Closed line.

***

Questions about a state you're seeing? Email
[hello@prflow.dev](mailto:hello@prflow.dev).
