# How a card moves

Source: https://opvs.ai/docs/factory/card-flow

> How a card travels from Ready to a merged pull request today, and the graph-loop coming next.

This page explains how a card travels from Ready to a merged pull request today, and where OPVS is taking it next: one card that carries its whole route, called the **graph-loop**.

## Today

```
 Ready ──claim──► Executing ──build + tests──► pull request ──► Review ──► merge ──► Done
   ▲                  │                                            │
   │               failed: the card says why                   changes asked
   └──────── you release it again ◄───────────────────────────────┘
```

1. **Claim.** A builder whose role matches claims a card from Ready. The claim moves the card to

Executing in the same step, so two builders never take the same card.

1. **Build.** The builder works on its desk with the card's engine, runs the project's tests, and

opens a pull request. It never merges.

1. **Review.** The card moves to Review. Your [review policy](/developers/factory/review-policy)

decides whether an AI reviewer, a planner or a person must clear each pull request. Risky changes open as drafts and wait for a person.

1. **Merge.** A person merges, or the project's ship line does when it is on and in Live mode. The

merge, not the builder, marks the card Done.

**Dependencies** order the work: a card is not claimable until every card it waits on is done. On a factory board "done" means merged.

**Fix rounds.** When review asks for changes, the card can go back to Ready with its pull request kept, and a builder pushes the fix to the same pull request. A review allows two rounds on the same head commit; after that a person or planner decides.

## Next: the graph-loop

The graph-loop keeps **one card** for the whole route. The card's stages hold the route and each session's brief; between sessions the card returns to Ready, and the ship line moves it from step to step:

```
 Ready ──► build ──► PR ──► review ──PASS──► merge, deploy ──► test live (one card per release)
   ▲                           │
   └──────── fix round ◄───────┘ changes asked; after two rounds a planner decides
```

Parts of it already run: read-only review sessions and report-only jobs. The full loop has not shipped yet. Until it does, plan on the flow above, where a person or a planner moves the card between review and the next build.

Related: [Board types and columns](/developers/factory/board-types), [Fix a board that doesn't build or ship](/developers/factory/fix-a-build).
