Experiment
An Experiment is a test of a Hypothesis that varies copy or behavior through Flags and judges the variants by a primary Metric.
An Experiment is a test of a Hypothesis that varies copy or behavior through Flags and judges the Variants by a primary Metric. It ends in a decision: ship, kill, or iterate.
Properties
| Property | Type | Required | Description |
|---|---|---|---|
variants | json | required | The variants and their split. |
decision | string | One of ship, kill, or iterate. |
Object
{
"$id": "https: //api.sb/ ledgerlark.com/ experiments/ experiment_1",
"$type": "Experiment",
"variants": {},
"decision": "ship"
}Relationships
- An Experiment assigns with many Flags: Flags split units across an Experiment’s Variants and log each assignment with its propensity.
assignsWith, inverseassigns. - An Experiment measures many Metrics: one primary Metric judges an Experiment’s Variants; guardrail Metrics stop it.
measures, inversemeasuredBy. - An Experiment offers many Variants: the Variants the Experiment can assign, the control among them.
offers, inverseofferedBy. - An Experiment has many Readouts: the Experiment the result belongs to; the learn step drafts the next Variant from it.
readouts, inversereads. - An Experiment tests one Hypothesis: each Experiment settles one Hypothesis; many Experiments test one Hypothesis in turn.
tests, inversetestedBy.
Lifecycle
| State | Meaning | Moves to |
|---|---|---|
draft (first) | Its variants and Metrics are set, and no traffic is split yet. | running by Experiment.start |
running | Traffic is split across its variants while its Metrics are measured. | concluded by Experiment.conclude |
concluded | It ended with a Decision to ship, kill, or iterate. | None: it ends here. |
Verbs
createCreates an Experiment.POST /{namespace}/experimentsgetReturns one Experiment by id.GET /{namespace}/experiments/{id}listReturns Experiments, newest first, one page at a time.GET /{namespace}/experimentsconcludeConclude ends an Experiment with a decision to ship, kill, or iterate, recorded as a Decision.POST /{namespace}/experiments/{experiment}/concludestartStart opens an Experiment, splits traffic across its variants, and begins measuring its primary and guardrail Metrics.POST /{namespace}/experiments/{experiment}/start
An Experiment is kept forever and never edited: it has no update or delete.
Permissions
Which Access level may call each Verb. One-way Verbs wait their delay window.
| Operation | owner | admin | member | viewer |
|---|---|---|---|---|
Experiment.create | Yes | Yes | Yes | No |
Experiment.get | Yes | Yes | Yes | Yes |
Experiment.list | Yes | Yes | Yes | Yes |
Experiment.conclude | Yes | Yes | Yes | No |
Experiment.start | Yes | Yes | Yes | No |
Call it
Start the latest experiment.Example
An Experiment tests whether a $0 tier raises paid conversion. A Flag shows the tier to half of new Visitors; paid conversion at 30 days decides, and the decision reads ship.