Experimentation · artifacts and gates

A/B experiment deliverables

Twelve artifacts, of which six are written before a single user sees the variant. That ordering is the whole point: what makes a result trustworthy is not the analysis, it is that the standard for judging it was fixed while you still had no idea what the answer would be.

Slide From the accompanying deck. It carries its own text, so it opens at full size — click it, or tab to it and press Enter.

Why the paperwork is the experiment

Running an A/B test is easy. Running one whose result you should believe is mostly a documentation problem, and the documents have to exist in a particular order.

The reason is uncomfortable but simple. Every experiment involves dozens of small analytical choices — which metric counts, which users are included, when to stop, which segments to examine, what size of effect is worth shipping. Made before the data arrives, those choices are neutral. Made after, every one of them is quietly informed by which option produces the answer somebody wants. Nobody involved experiences this as dishonesty, which is exactly why it needs a procedural fix rather than a cultural one.

So the deliverables split cleanly. Six are written while you are still ignorant of the outcome, and they are the ones that give the other six their authority. The rest describe what happened and what you did about it.

A useful test of any experimentation programme: pick a shipped result at random and ask whether the primary metric and the ship threshold were written down before launch. If nobody can produce that document, the experiment measured something, but it did not decide anything.

Design

Locked before launch

01

Experiment brief

Locked before launch

  • The problem, stated as an observation rather than a solution.
  • The hypothesis: if we change X, then Y will move, because Z.
  • The size of effect that would be worth having, decided before you know what you will get.
  • What you will do with each possible outcome — including the null.

Fails whenThe brief is written as a feature spec. If it describes what is being built rather than what is believed, there is nothing for the data to confirm or refute.

02

Metric definitions

Locked before launch

  • One primary metric — the overall evaluation criterion. Exactly one.
  • Secondary metrics that help explain movement in the primary.
  • Guardrails: things that must not degrade, whatever the primary does.
  • The precise computation for each, including the denominator and the window.

Fails whenSeveral primary metrics are declared. With three primaries and a conventional threshold, the chance of at least one crossing by luck alone is far higher than the number on the readout suggests, and the team will pick whichever moved.

03

Power and duration plan

Locked before launch

  • Current baseline rate for the primary metric, measured rather than assumed.
  • Minimum detectable effect at the sample you can realistically get.
  • Significance level and power, both stated explicitly.
  • Required sample and the calendar runtime that implies, including whole business weeks.

Fails whenThe test is run without this, and later reported as showing no effect when in fact it could never have detected one. An underpowered null is not evidence of absence.

04

Analysis plan

Locked before launch

  • The single test that decides the primary outcome.
  • Segments you intend to examine, named in advance.
  • The stopping rule, and whether any interim look is permitted.
  • Ship criteria: what result leads to shipping, holding, or iterating.

Fails whenWritten after the results are in. Once you have seen the data, every analytical choice is contaminated by knowing which one produces the answer you want, and nobody — including you — can tell the difference afterwards.

Build

Verified before launch

05

Assignment and exposure spec

Verified before launch

  • The unit of randomisation: user, session, device, account, or cluster.
  • The trigger point — where a subject actually enters the experiment.
  • The bucketing mechanism and its seed, so assignment is stable and reproducible.
  • Interference risks: shared resources, marketplaces, social graphs, learning systems.

Fails whenThe randomisation unit and the analysis unit differ. Randomising by user and analysing by session inflates your sample and shrinks your intervals, producing confident findings about nothing.

06

Instrumentation and QA record

Verified before launch

  • The tracking plan: every event, property and its expected volume.
  • An A/A test result, showing the pipeline finds no difference where none exists.
  • A sample ratio mismatch check on the actual split.
  • Evidence the variant renders and behaves correctly in each supported environment.

Fails whenSkipped because the change is small. Most invalid experiments are instrumentation failures, and they are indistinguishable from real effects once the numbers reach a dashboard.

Run

Written while live

07

Launch and ramp plan

Written while live

  • The ramp schedule, and what is checked at each step before widening.
  • A kill switch, tested rather than assumed to work.
  • A named owner for the duration and how they are reached.
  • What constitutes an abort, decided while nobody is under pressure.

Fails whenThere is no plan for stopping. Deciding whether a live degradation is bad enough to abort is a decision nobody should be making for the first time at the moment it is needed.

08

Health monitoring

Written while live

  • Sample ratio mismatch, checked continuously rather than once.
  • Guardrail metrics: errors, latency, crashes, complaints.
  • Exposure volume against forecast.
  • Explicitly not the primary metric — see below.

Fails whenThe primary metric is watched daily. Repeatedly checking a result that is still accumulating and stopping when it looks good converts a disciplined test into a search for a favourable moment.

Decide

Written after the data

09

Readout

Written after the data

  • Effect size with a confidence interval, given more prominence than any p-value.
  • Guardrails reported whether or not they moved.
  • Power actually achieved, and the smallest effect the test could have detected.
  • Pre-declared segments, with anything unplanned labelled exploratory.

Fails whenIt reports significance and nothing else. “Significant” says an effect probably exists; it says nothing about whether the effect is large enough to be worth shipping.

10

Decision record

Written after the data

  • What was decided: ship, hold, iterate, or abandon.
  • The reasoning, including any judgement that went beyond the numbers.
  • Who decided, and when.
  • What would change the decision, if anything did.

Fails whenIt does not exist, and six months later nobody can reconstruct why a feature is live. This is the cheapest deliverable on the list and the most frequently missing.

Learn

Written after the ship

11

Post-launch validation

Written after the ship

  • A holdout kept out of the rollout, where the economics permit one.
  • The long-run effect, checked after novelty and primacy effects have decayed.
  • Whether the shipped result matches what the test predicted.
  • Cumulative effect across a series of small shipped wins.

Fails whenNobody looks again. Short tests systematically overestimate durable effects, and a programme that never checks accumulates a portfolio of wins that do not add up to anything measurable at the top line.

12

Archive entry

Written after the ship

  • Hypothesis, result, decision, and effect size in one findable record.
  • Indexed by surface and hypothesis, not by date or ticket number.
  • Null and negative results included — they are the majority and the most reusable.
  • Linked from wherever the next person will be planning a similar change.

Fails whenOnly wins are recorded. The archive then teaches that this kind of change works, when the full record would have shown four attempts and one success.

Reading a readout

Deliverable nine is where most of the damage happens, because a readout that reports only significance invites two opposite errors: shipping a real effect too small to matter, and abandoning a promising change because an underpowered test failed to detect it.

The fix is to lead with the interval rather than the verdict. Four experiments, all of which a significance-only readout would compress into two outcomes:

Illustrative — shapes of result, not measured data

Four outcomes, two of them commonly misread

Solid line is zero. Dashed line is the effect you decided in advance was worth shipping. What matters is where the whole interval sits relative to both, not whether it clears zero.

−80%0+80%
  1. Clear win+42% to +68%

    Interval sits entirely above zero and clears the effect you decided was worth having. The decision was made before the data; this just satisfies it.

  2. Clear loss-55% to -18%

    Entirely below zero. Useful, cheap, and the outcome most likely to be reframed as “inconclusive” by whoever proposed the change.

  3. Real but too small+3% to +14%

    Significant and beneath the threshold that made it worth doing. A frequent trap: the statistics pass, the business case does not, and it ships anyway.

  4. Genuinely inconclusive-31% to +47%

    The interval spans zero and both a meaningful gain and a meaningful loss. This is not evidence of no effect — it is evidence the test was too small to say anything.

Solid line · no effect Dashed line · worth shipping Bar · confidence interval

The third and fourth cases are the ones that get mishandled. A statistically real effect below your threshold is not a win, and a wide interval spanning zero is not a null — it is a test that was too small to answer the question you asked it.

Four things a readout must not do

  • Report significance without effect sizeA p-value says an effect probably exists. It says nothing about magnitude, and magnitude is what the ship decision was supposed to turn on.
  • Present unplanned segments as findingsSlice enough ways and something crosses the threshold. Segments declared in advance are results; segments discovered afterwards are hypotheses for the next test, and should be labelled as such in the document itself.
  • Omit the guardrailsReporting them only when they moved means the reader cannot tell the difference between checked-and-fine and not-checked.
  • Treat a null as proof of no effectWithout the achieved power and the minimum detectable effect alongside it, a null result is uninterpretable — and will be interpreted anyway.

Making it survive contact with a real team

Twelve documents per experiment is not a realistic ask for a team shipping several tests a month, and a process that heavy is abandoned rather than followed. The way it works in practice is that most of these are fields in a template, not standalone documents.

  • Collapse the pre-launch six into one form. Hypothesis, primary metric, guardrails, MDE, sample, runtime, stopping rule, ship criteria. It fits on one page and is the only artifact that genuinely must be complete before launch.
  • Make the platform enforce what it can. Sample ratio checks, minimum runtime, and blocking the readout until the planned sample is reached are far more reliable than asking people to remember.
  • Keep the decision record separate from the readout. They answer different questions — what happened, and what we did — and merging them is how the reasoning gets lost.
  • Write nulls up to the same standard. The temptation to document only wins is strong and it corrupts the archive within a year.
  • Give the archive an index someone would actually search. By surface and hypothesis. Nobody looks up an experiment by its ticket number.

The honest summary is that experimentation infrastructure is cheap now and experimentation discipline is not. Almost every organisation that concludes A/B testing does not work for them has a platform that runs tests correctly and no document, anywhere, written before the data arrived.

Common questions

What deliverables should an A/B test produce?

Twelve, across five phases. Before launch: an experiment brief, metric definitions, a power and duration plan, and a pre-registered analysis plan; then an assignment and exposure spec and an instrumentation QA record. While running: a launch and ramp plan and health monitoring. After: a readout and a decision record. Then post-launch validation and an archive entry. The first six are what make the last six trustworthy.

Which deliverables must be locked before launch?

Everything that determines how the result will be judged: the primary metric, the minimum effect worth having, the sample size, the statistical test, the segments you intend to examine, the stopping rule, and the ship criteria. Once you have seen the data, every one of those choices is contaminated by knowing which version gives the answer you want, and the contamination is invisible afterwards.

What is sample ratio mismatch and why does it matter?

A sample ratio mismatch is when the observed split between arms differs from the intended split by more than chance explains — for example an intended even split arriving as 52 to 48 at large volume. It signals a defect in assignment, triggering, or logging, and when present the experiment's results should not be interpreted at all. It is worth checking continuously rather than once, because it can appear partway through a run.

Does a non-significant result mean there was no effect?

No. It means the test did not detect one, which is a statement about the test as much as about the change. An underpowered experiment produces non-significant results routinely, including when a real and valuable effect exists. This is why the readout should report the confidence interval and the smallest effect the test could have detected, not just a verdict.

Why is checking results daily a problem?

Because repeatedly examining an accumulating result and stopping when it looks good inflates the false positive rate well beyond the level you nominally set. The interval wanders early and settles late, so a test stopped at a favourable moment is selecting on noise. If you need to look early, use a sequential testing method designed for it and declare that in the analysis plan.

What is the difference between the randomisation unit and the analysis unit?

The randomisation unit is what gets assigned to an arm — typically a user. The analysis unit is what each row of the analysis represents. When they differ, for example randomising by user but analysing by session, observations within a user are correlated but treated as independent, which understates variance and produces confidence intervals that are too narrow and findings that do not reproduce.

Should null results be archived?

Yes, and they are the more valuable half. Nulls and negatives are the majority of experiments, and an archive containing only wins teaches the next team that this class of change works when the full record would have shown several failed attempts. Index by surface and hypothesis rather than by date, so the record is findable by someone about to repeat it.