Skip to main content
Decisions come back with arm_type: "control" every time. One of these is the cause; check them in order.

The experiment is still initializing

experiment_status is initializing. Curious is generating the first variants and building the model, and serves the control meanwhile. This takes minutes, not seconds, after the first declaration. Nothing to do; the status moves to exploring when variants are live. See The experiment lifecycle.

Variants are waiting for approval

experiment_status is still initializing long after the declaration, and the dashboard shows variants marked pending. options.approval defaults to manual, so generated variants wait for a person. Approve them in the dashboard, or declare "options": { "approval": "auto" }. See Approval.

Every variant was concluded

The response carries a warning:
The variants lost, proved equivalent, or breached a constraint, and the next generation round has not landed yet. Read their conclusions in the dashboard; if a constraint is concluding everything, its threshold may be mis-declared. See Constraints.

This user is in the holdout

Some users always see the control by design: the share is options.holdout, five percent by default, chosen deterministically per user and element. Try a different user_id. See Assignment and stickiness.

This user is sticky to the control

Under options.assignment: "static", a user who was first served the control keeps it while the control is live, which is always. Try a different user_id, or compare across many users rather than one.

The experiment just restarted

A declaration-class field changed, the experiment was superseded, and the successor is initializing with only the control. See The experiment restarted.

Still the control?

Look at the element in the dashboard: its status, its arms and their states. Quote the X-Request-Id of a decision to support.