Open Experiment Standard
Section 3 · OES Spec

Design and protocol

The intended experimental design — not just what happened to be measured.

This is the section where an open standard most improves trust. Tools usually preserve results, but rarely preserve the original design assumptions: the planned MDE, the multiple-testing policy, the peeking policy, the stopping rule. OES captures the protocol so future readers can judge how a result should be interpreted.

Fields

FieldTypePurpose
design.typeenumOne of: ab, abn, multivariate, factorial, holdout, switchback, bandit, quasi_experiment.
design.randomizationUnitstringuser, account, session, device, pageview, region, etc.
design.analysisUnitstringUnit used in metric analysis — may differ from the randomization unit.
design.assignmentMethodstringHashing, random draw, deterministic allocation, external assignment, etc.
design.hashAttributestringAttribute used for bucketing — e.g. user ID, anonymous ID, org ID.
design.hashSaltstringSalt or namespace identifier, if exportable.
design.namespacestringLayer/namespace used to avoid collisions with other experiments.
design.populationstringEligible users, accounts, or events.
design.targetingRulesobject[]Inclusion rules.
design.exclusionRulesobject[]Exclusion rules — bots, internal users, specific countries or browsers.
design.trafficAllocationnumber (0–1)Total percent of eligible population included.
design.variantAllocationobjectAllocation per variant.
design.startDatestring (date-time)Actual or planned start.
design.endDatestring (date-time)Actual or planned end.
design.exposureDefinitionstringWhat counts as exposure.
design.triggerDefinitionstringWhat qualifies a user for analysis.
design.rampScheduleobject[]Traffic ramp history.
design.concurrentExperimentsstring[]Known overlapping experiments.
design.interferenceRiskobjectLow / medium / high plus rationale.
design.powernumber (0–1)Planned power.
design.minimumDetectableEffectnumberMDE.
design.alphanumber (0–1)Significance threshold.
design.multipleTestingPolicyenumnone, bonferroni, fdr, hierarchical, metric_family, custom.
design.peekingPolicyenumfixed_horizon, sequential, always_valid, bayesian_monitoring, informal.
design.stoppingRulestringPredefined rule for stopping or ramping.