Files
rampstackco--claude-skills/workflows/experiment-loop-with-pre-registered-gates.md
wehub-resource-sync e011bb26cd
Lint skills / Validate catalog structure (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:36:55 +08:00

11 KiB

Experiment Loop with Pre-Registered Gates

name:            Experiment Loop with Pre-Registered Gates
slug:            experiment-loop-with-pre-registered-gates
tier:            forward-deployed (operations)
role:            fdm
status:          template
score:           43 (demand 4, pain 4, differentiation 3, usability 4, connectors 5)
intent:          Basano on the test design: the stopping rule, MDE, and sample-size math
                 pre-registered before any variant ships, the SEO safety of variants gated,
                 and the verdict computed only against the pre-registered rule
when to use:     a mechanism hypothesis worth a controlled test on a property with enough
                 traffic to power it
when not to use: finding the hypothesis in the first place (Conversion-by-Source Diagnosis);
                 a defect fix rather than a test (the ordinary held-fix flow)
validation note: gated on adequate traffic on a designated property; it holds at template
                 until a designated property has the traffic and a mechanism to test

Connectors

connectors:
  - capability:  experiment.read
    access:      read
  - capability:  analytics.read
    access:      read
  - capability:  crawl.read
    access:      read            # variant SEO-safety checks on the built variant
  - capability:  repo.change
    access:      write-held      # the variant and its config land as held changes

The variant and its config land held; a human allocates traffic and launches. Traffic allocation is never an agent action. The verdict is computed against the pre-registered rule and nothing else.

Prerequisites

  • Claude with the catalog installed: /plugin marketplace add rampstackco/claude-skills
  • A hypothesis from Conversion-by-Source Diagnosis (mechanism, expected effect, segment), or an equivalent stated the same way.
  • Enough traffic in the target segment to power a test; if the segment cannot reach the sample the math requires, the honest outcome is not to run.
  • The experiment platform (experiment.read) and the analytics that will measure the primary metric.
  • A person who allocates traffic and launches; the workflow never does.

Phases

Phase 1: Intake · lane: convergent (Tholo)

Skills: analytics-strategy Capability class: experiment.intake (substitute equivalents if off-catalog) Input: the hypothesis from Conversion-by-Source Diagnosis (mechanism, expected effect, segment) Run:

Invoke analytics-strategy to frame the incoming hypothesis as a testable spec:
the mechanism it claims (what about the page or offer would move the metric,
and why), the expected effect size, the primary metric it would move, and the
exact segment. A hypothesis that arrives as an aspiration rather than a
mechanism goes back to Conversion-by-Source Diagnosis; this workflow tests
mechanisms, not hopes. Produce the framed spec.

Output artifact: the framed experiment spec (mechanism, expected effect size, primary metric, segment) Done when: the hypothesis is framed as a mechanism with an expected effect size, a primary metric, and a segment, or returned to Conversion-by-Source Diagnosis as too vague to test Fails look like: testing an aspiration. "Improve the CTA" names no mechanism and predicts no effect, so whatever the test does, nothing is learned; the spec has to say why the gap exists before a test can falsify it.

Phase 2: Pre-registration · lane: gate (Basano)

Skills: experiment-design, experimentation-analytics Capability class: experiment.pre-registration (substitute equivalents if off-catalog) Input: the framed experiment spec; the segment's available traffic Run:

Invoke experiment-design and experimentation-analytics to pre-register the
test BEFORE anything ships: the stopping rule, the minimum detectable effect,
the sample-size math the MDE and the segment's traffic imply, the primary
metric, and the window. Write them down and freeze them. If the segment cannot
reach the required sample in a reasonable window, the pre-registration verdict
is "insufficient n, do not run", which is a respectable and final outcome, not
a delay. Report the pre-registration, or the not-run verdict, with the math.

Output artifact: the frozen pre-registration (stopping rule, MDE, sample size, primary metric, window), or the "insufficient n, do not run" verdict with its math Done when: the test is pre-registered with all five fields frozen, or it is declared underpowered and not run, with the sample-size math shown either way Fails look like: shipping first and pre-registering after. A stopping rule and a metric written once the variant is believed in are fitted to the hope, and the test becomes a search for a number that agrees with it.

Phase 3: Variant SEO-safety gate · lane: gate (Basano)

Skills: seo-technical Capability class: experiment.seo-safety (substitute equivalents if off-catalog) Input: the built variant (crawl.read); the pre-registration Run:

Invoke seo-technical against the built variant. Check that the variant is safe
to serve to search: no cloaking risk (the variant does not show crawlers and
users materially different content in a way search treats as deceptive),
canonical consistency across the variant and the control, and no layout-shift
or core-vitals regression the variant introduces. Report a verdict per check
with the evidence. Report only.

Output artifact: the SEO-safety report (cloaking, canonical consistency, layout-shift, each with a verdict) Done when: the variant carries a verdict on cloaking risk, canonical consistency, and layout-shift, all clear or the risk flagged Fails look like: an experiment that wins by getting deindexed. A variant that trims the content search ranked for can lift the on-page metric while the page quietly falls out of the results, and the test would call that a win.

Phase 4: Launch as a held config change · lane: divergent (human)

Skills: none; the launch and the traffic allocation are deliberately human Input: the pre-registration and the passing SEO-safety report Run: the variant and its experiment config land as a HELD change (repo.change). A person allocates traffic and launches the test; traffic allocation is never an agent action, because it is a live change to what real users see. The human launches against the frozen pre-registration, allocating exactly the design the math called for, and records the launch. Output artifact: the launched experiment, recorded against its pre-registration, with the variant and config as held changes a human merged Done when: the experiment is launched by a human at the pre-registered allocation, with the config held and merged by a person Fails look like: an agent turning traffic on. Allocating traffic is a production act on real users, and it stays with a person the same way merging and deploying do.

Phase 5: The verdict · lane: gate (Basano)

Skills: experimentation-analytics Capability class: experiment.verdict (substitute equivalents if off-catalog) Input: the running experiment's results; the frozen pre-registration Run:

Invoke experimentation-analytics to compute the verdict ONLY against the
pre-registered rule, at the pre-registered point. The stopping rule decides
when the test ends; interim looks are not stopping decisions, and a result
that looks significant early is not a verdict until the pre-registered point.
The primary metric is the one pre-registered, not whichever moved. Report the
verdict (win, loss, or inconclusive) against the pre-registered rule, with the
numbers. Report only.

Output artifact: the verdict against the pre-registered rule (win, loss, or inconclusive) with the numbers at the pre-registered point Done when: the verdict is computed at the pre-registered point against the pre-registered primary metric and stopping rule, with the numbers attached Fails look like: peeking, then stopping on a good look. Checking the test daily and stopping the day it crosses significance turns noise into a false win, because the more often you look, the more often chance alone crosses the line.

Phase 6: Closeout · lane: convergent (Tholo)

Skills: experimentation-analytics Capability class: experiment.closeout (substitute equivalents if off-catalog) Input: the verdict; the original hypothesis and its Conversion-by-Source finding Run:

Invoke experimentation-analytics to close the loop. Route the verdict and the
hypothesis outcome back to Conversion-by-Source Diagnosis as calibration: a
hypothesis that won, lost, or came back inconclusive updates that workflow's
hit-rate, which is what makes its next ranking better. If a winning variant is
to consolidate into the live page, it re-enters the SEO-safety check on the
consolidated version before it ships through the ordinary held-fix flow; the
experiment never publishes itself. Record the closeout.

Output artifact: the routed verdict and hypothesis outcome to Conversion-by-Source Diagnosis, and the consolidation path (with its SEO-safety re-check) recorded where a variant won Done when (public gate): the verdict and hypothesis outcome are recorded and routed to Conversion-by-Source Diagnosis, and any winning variant is queued for the ordinary held-fix flow with an SEO-safety re-check, not published from here Operated-layer note: in an operated deployment the pre-registration, the verdict, and their agreement land as an agreement-log row; the verdict-versus-pre-registration agreement is what calibrates this lane (AGREEMENT-LOG.md) Fails look like: shipping the winner without re-checking the consolidated version. A variant proven safe in isolation can regress SEO once it is merged into the real page with the rest of the layout, and the win does not carry a waiver for that.

Failure modes

  • Peeking (Phase 5's failure): interim looks becoming stopping decisions, which manufactures false wins.
  • Post-hoc metric switching: reporting whichever metric moved instead of the pre-registered primary.
  • Retrofitted pre-registration (Phase 2's failure): registering the rule after the variant is believed in.
  • Shipping the winner without the SEO-safety re-check on the consolidated version (Phase 6's failure).
  • Underpowered tests run anyway: ignoring the "insufficient n, do not run" verdict and running a test that cannot detect the effect; not-rankable is a verdict here too.
  • An agent allocating traffic (Phase 4's failure): a production act on real users that stays human.

Worked example

Pending. Populates when this workflow is executed as written on a designated property with adequate traffic to power a test; it holds at template until a designated property has both the traffic and a mechanism hypothesis to run. Status flips to validated when a run record links here.

Boundaries

  • Conversion-by-Source Diagnosis supplies this workflow's intake (its ranked hypotheses) and consumes its verdicts as calibration; the two form the diagnose-then-test loop, and neither runs the other's step.
  • Revenue Tracking Integrity underwrites the measurement this workflow trusts: a verdict computed over a money path that does not survive redirects or consent is a verdict over noise.
  • Content Pipeline with Prove Gates owns the publish path; a winning variant consolidates through the ordinary held-fix flow with an SEO-safety re-check, and the experiment never self-selects into publishing.