Rule Statuses
Every rule on a flag has a status that describes where it is in its lifecycle. The status drives what shows in the rule list, which actions appear on the rule's menu, and, most importantly, whether visitors are seeing the rule right now.
From the rules page, Run and Pause are operational controls: they go live the moment you confirm. Editing a rule's targeting, variations, or rollout still goes through the draft + Publish changes path. The two flows are completely separate. See Saving and Publishing for the content-edit flow.
Draft
A new rule starts in Draft status. A draft rule has never run before: it has been added to the draft but not yet promoted to live traffic.
- Not running: no visitors are evaluated by this rule.
- Editable: change targeting, variations, and rollout freely.
- Visible only to you and your teammates inside the editor: the snippet and SDKs ignore draft rules entirely.
A rule lands in Draft regardless of how it was added: from the "Add rule" dropdown, by copying every rule from another environment, or by duplicating an existing rule. Even if the source was Running, the new copy is Draft until you click Run.
Transitions from Draft: Draft → Running (click Run while the environment is also Running), or Draft → Ready (click Run while the environment is Paused or Draft). Once a rule has launched once, it can no longer return to Draft: it cycles between Running, Ready, and Paused instead.
Ready
A Ready rule is a rule you have explicitly started while its parent environment is paused. It is staged to go live: the moment the environment starts, every Ready rule starts with it.
- Not evaluating yet: no visitors are bucketed while the environment stays paused.
- Starting the environment promotes every Ready rule to Running in the same step, so the rules listed in the start confirmation begin evaluating immediately. No second Run click on the rule is needed.
- Editing a Ready rule's targeting still goes through the draft + Publish flow like any other content edit.
Transitions from Ready: Ready → Running (start the environment, or click Run on the rule while its environment is Running), Ready → Paused (click Pause on the rule).
Running
A Running rule is live. Every eligible visitor whose flag evaluates against this rule gets a variation according to the rule's targeting, audiences, and rollout configuration.
- Visitors are bucketed and the variation is served.
- For A/B test rules, results accumulate on the rule's results page in real time. Click Results from the rule card to open it.
- Edits are still allowed but stage into the draft: see Publishing changes to running rules below.
- If the parent environment is paused, a Running rule effectively stops evaluating until the env restarts, but its status stays Running so you keep your intent. The rule card and the rule panel both show the pill as Running in amber with "blocked by paused environment" printed beside it, and the rule starts evaluating again on its own when you start the environment: there is nothing to click on the rule itself.
Transitions from Running: Running → Paused (click Pause on the rule), Running → Concluded (A/B test only, pick a winner and conclude).
Paused
A Paused rule was running before but is currently disabled. The rule keeps its launch history: it is distinct from Draft, which means "never launched."
- No visitors are evaluated by this rule.
- For A/B test rules, accumulated results are preserved and remain visible.
- Editable: change anything before you resume.
Transitions from Paused: Paused → Running (click Run on the rule while the env is Running), Paused → Ready (click Run while the env is Paused or Draft), or Paused → Concluded (A/B test only, pick a winner and conclude).
Concluded
A Concluded rule is an A/B test where a winning variation has been declared. The winner is pinned to 100%: every visitor the rule targets now sees the winning variation, including visitors the test's traffic split used to leave out.
- The rule becomes Concluded when you publish the conclusion, and the winner reaches your SDKs in the same step. Concluding a paused test starts serving its winner at that moment too.
- The test stops recording new exposures, so its results stay exactly as they were when you concluded.
- Cannot be re-run, edited, or concluded a second time (only duplicated or deleted). The lock covers the attached lists too: variations and splits, audiences, metrics, exclusion group, and overrides. All of them freeze when you conclude. The rule keeps matching the result you acted on.
- Run / Pause buttons and menu items are hidden: operational controls are unavailable for a concluded rule.
- Doesn't move with drag-to-reorder: its position no longer affects bucket assignment.
- Full results history is preserved and remains viewable.
- Only a running or paused A/B test can be concluded. A rule that has never run has no result to conclude, so the publish is refused.
Transitions from Concluded: none. Concluding a rule is permanent. If you want to keep iterating, duplicate the concluded rule into a new draft instead.
Status summary
| Status | Visitors evaluated? | Editable? | Reversible? |
|---|---|---|---|
| Draft | No | Yes, freely | N/A, never been live |
| Ready | No (env is paused) | Yes, freely | Pause to revert |
| Running | Yes | Yes, with publish-time confirmation | Pause or Conclude |
| Paused | No | Yes, freely | Run again to resume |
| Concluded | Yes (winner served at 100%) | No | No, duplicate to iterate |
Run and Pause confirmation modals
Run and Pause never silently change live behavior. Each click opens a confirmation modal that explains exactly what is about to happen, and confirming sends the change live immediately: the database is updated and the SDK datafile is regenerated and pushed to the CDN in the same step.
- Run on a rule, env Running: opens the "Start
<rule>?" modal. Confirming flips the rule to Running and visitors begin matching immediately. - Run on a rule, env Paused or Draft: opens the "Mark
<rule>as ready?" modal. Confirming flips the rule to Ready; nothing evaluates until the environment starts. When the environment starts, every Ready rule starts with it. - Pause on a rule: opens the "Pause
<rule>?" modal. Confirming stops new evaluation immediately. An A/B test keeps in-flight assignments stable; a targeted delivery rule's users fall through to the next rule, or to the default variation.
If a rule has unsaved edits in the draft, clicking Run shows a "Save your changes first" prompt instead of the Start modal. Save and publish (or revert) those edits before starting the rule: you can't turn on a rule whose content the live system doesn't yet know about.
Environment Run / Pause cascade
The Run / Pause buttons at the top of the rules page act on the whole environment. Their confirmation modals list the rules that are about to start or stop evaluating so you can see the impact before confirming.
- Start the environment: rules that were already Running (frozen there while the environment was paused) resume evaluating right away, and every Ready rule is promoted to Running and starts evaluating too. Paused rules keep their own status: starting the environment never resumes a rule you paused yourself.
- Pause the environment: every Running rule stops evaluating. Rule statuses are preserved (Running rules stay Running in the database) so they resume from the same state when you start the environment again.
- An environment with no rules yet can be started too. Its confirmation says so: every user gets the environment's default variation until you add and run a rule.
Publishing changes to running rules
Editing a Running rule is allowed and saves into the draft as normal. Publish changes always opens a review listing every staged edit, and it also checks whether the draft changes any currently-running rules.
- If one or more Running rules are modified, deleted, or reordered, the review names them above the list and spells out that publishing changes behavior for live visitors immediately. The button reads Publish anyway.
- If the draft only touches Draft, Ready, Paused, or Concluded rules, the review has no warning and the button reads Publish changes.
- Click Cancel to back out without publishing.
There's no further confirmation after "Publish anyway." The new rule configuration starts serving the next time the snippet or SDK evaluates the flag.