THE INTRO CARD is free — what an AI skill card is and how to use one Download →Lost Lauren, contact us

THE INSTRUMENTS · Nº 954 · EDITION 1 · LAUNCHING SOON

LUND CARDS · THE INSTRUMENTSNº 954 PROPOSED
THE EXPERIMENT CARD — the LSC-1 face
THE CARD AS TEXT · FOR EYES AND FOR MACHINES

THE EXPERIMENT CARD · the lab bench · designed before, honest after

WAKES WHEN a test to size before it starts: how many per group, and for how long · a result to read: is the difference real, and how big is it · an interval for a rate or a mean · an effect size to work out and explain · many tests to correct at once · a plan to preregister before the data · a wish to check early or stop when it looks good

THE LOOP

  1. NAME
  2. QUESTION
  3. SIZE
  4. PLAN
  5. TEST
  6. EFFECT
  7. REPORT
  8. HAND OFF
  9. LEDGER

NEVER

  • Fabricated, altered or invented data
  • Outliers, subgroups, metrics or tests chosen after looking, to reach significance
  • Failed or null results left out of a report
  • A bare p-value without its effect size and interval
  • Power worked out after the fact as evidence
  • A trial on people sized or analysed without a biostatistician and an ethics board

IT MAKES power — with the effect: n per group; with the effect and --n: the power; with --n alone: the smallest effect it can detect; ab — two-proportion z-test, the difference with its interval, the relative lift, a split check and a plain verdict; ttest — elch's t-test (Student's with --equal-var, paired with --paired), with the interval and Cohen's d; ci — ilson score interval, with Clopper-Pearson and why not Wald; effect — ohen's d, Hedges' g, the chance one beats the other; multiple — onferroni, Holm and Benjamini-Hochberg side by side; peek — how checking early and stopping when significant inflates false positives; the boundaries that fix it; prereg — the preregistration; dist — z|t|chi2 VALUE [--df D] | z|t|chi2 --p P [--df D] tail areas and quantiles, to check a printed table.

THE STANDARD size before data; every result carries its effect size and; not significant is not no effect; one look, at the planned end, unless; every test that was run is counted; analysis chosen after seeing the data is; every number shows its formula, its source; data is never made up.

IN THE BOX SKILL.md · CARD.md · the machine · experiment.py · 27/27 · references · THE-METHOD by hand · START-HERE · TIN · MY-LEDGER · THE-CLAUSES · LICENSE-NOTE · the doors · HOSTS · system prompts · ten tests · faces · audit · witness.

PROOF SELFTEST 27/27 · witnessed 2026-10-09 · Edition 1.

THE SEAL 96 of 100 · LEGENDARY · WITNESSED · Trigger 5 · Machinery 4 · Law 5 · Portability 5 · Proof 5

IT CAN BE WRONG an AI reading a text file: it can be wrong and can invent a number, a rule, a name or a date; check what matters against your own records and the source; the risk is yours. THE-CLAUSES.md rides in the packet and is part of the licence.

THE PUNCH · SHA-256 OF SKILL.MD · 9901E663950A0E2CFA242773

THE FACE, FULL SIZE → · THE MACHINE FACE → · card.json →

THE EXPERIMENT CARD

the lab bench · designed before, honest after

POWER · AB · TTEST · CI · EFFECT · MULTIPLE · PEEK · PREREG · DIST

96LEGENDARYWITNESSEDIN CLAUDEIN LUNDRIN CHATGPT

WITNESSED — the studio saw this card run and produce what its tin promises, and wrote the date down. What the marks mean →

THE SPEC SHEET · READ BEFORE YOU BUY · THE STANDARD EVERY CARD MEETS →

SEAL
96 of 100 · LEGENDARY · WITNESSED
EDITION
E1 · witnessed 2026-10-09
MACHINE
scripts/experiment.py · 9 commands · selftest 27/27
RUNS
On your own computer. Standard library only, offline; no account, no key, no telemetry.
HOSTS
Claude · Claude Code · ChatGPT · Gemini · any AI that reads a file (HOSTS.md names each door)
LICENCE
One person, any number of their own AIs and computers · editions replace files · nothing renews · freeze, not loss
PUNCH
9901E663950A0E2CFA242773 · sha-256 of SKILL.md · check any file against it →

CITE THIS CARDTHE EXPERIMENT CARD, Edition 1. Lund Studio LLC, Westminster, Colorado. https://lundr.tech/?view=experiment-card. Punch 9901E663950A0E2CFA242773. Retrieved 2026-10-10.

What it is.

A seat at the lab bench for anyone testing two versions of anything: the sample size worked out before the test starts, the right test after it ends, every result reported with its effect size and its interval, and a preregistration so nobody moves the goalposts.

Works the sample size per group for two rates or two means (or the power, or the smallest effect a given size can catch) and how long the test must run; runs the two-proportion z-test with the difference, its interval, the relative lift, a split check and a plain verdict of what the data does and does not show; runs Welch, Student and paired t-tests; gives Wilson, Clopper-Pearson and t intervals; works and explains Cohen's d, Hedges' g, the risk difference, the risk ratio, the odds ratio and the number needed to treat; adjusts many p-values by Bonferroni, Holm and Benjamini-Hochberg side by side; shows by exact calculation and a seeded simulation how peeking inflates false positives, and the boundaries that fix it; writes and checks a preregistration.

It carries a machine that shows its working: power — with the effect: n per group; with the effect and --n: the power; with --n alone: the smallest effect it can detect; ab — two-proportion z-test, the difference with its interval, the relative lift, a split check and a plain verdict; ttest — elch's t-test (Student's with --equal-var, paired with --paired), with the interval and Cohen's d; ci — ilson score interval, with Clopper-Pearson and why not Wald; effect — ohen's d, Hedges' g, the chance one beats the other; multiple — onferroni, Holm and Benjamini-Hochberg side by side; peek — how checking early and stopping when significant inflates false positives; the boundaries that fix it; prereg — the preregistration; dist — z|t|chi2 VALUE [--df D] | z|t|chi2 --p P [--df D] tail areas and quantiles, to check a printed table — 27 checks in its selftest, 8 of its 9 commands on the record. It will never fabricated, altered or invented data; never outliers, subgroups, metrics or tests chosen after looking, to reach significance; never failed or null results left out of a report; never a bare p-value without its effect size and interval; never power worked out after the fact as evidence; never a trial on people sized or analysed without a biostatistician and an ethics board.

Eight laws, written into the card.

They are in the card itself, so the AI follows them.

SIZE BEFORE DATASize before data. The sample size, the primary metric, the test and the stopping rule are fixed and written down before the first result is seen (`prereg`).
EVERY RESULT CARRIES ITS EFFECT SIZE ANDEvery result carries its effect size and its interval, never a bare p-value. A p-value is not the chance the hypothesis is true, nor the chance the result is a fluke (ASA 2016).
NOT SIGNIFICANT IS NOT NO EFFECTNot significant is not no effect: say what size of effect the test could have caught, and what the interval still allows.
ONE LOOK, AT THE PLANNED END, UNLESSOne look, at the planned end, unless a sequential boundary was planned before the start. Stopping early because it looks good breaks the alpha (`peek`).
EVERY TEST THAT WAS RUN IS COUNTEDEvery test that was run is counted and reported, failures and nulls too; many tests are adjusted (Holm, or Benjamini-Hochberg for screening).
ANALYSIS CHOSEN AFTER SEEING THE DATA ISAnalysis chosen after seeing the data is labelled exploratory and never presented as planned. Power worked out after the fact is never offered as evidence.
EVERY NUMBER SHOWS ITS FORMULA, ITS SOURCEEvery number shows its formula, its source and its limit; where a normal approximation is used, it says so.
DATA IS NEVER MADE UPData is never made up, altered or trimmed to cross a line. People in a study come first: trials on people go to a biostatistician and an ethics board.

What rides in the card.

In the card’s own voice, with a machine that shows its working.

THE GUIDESreferences/THE-HONEST-REPORT.md · THE-METHOD.md · THE-NUMBERS.md · THE-SOURCES.md
THE MACHINEexperiment.py · nine commandspower — with the effect: n per group; with the effect and --n: the power; with --n alone: the smallest effect it can detect; ab — two-proportion z-test, the difference with its interval, the relative lift, a split check and a plain verdict; ttest — elch's t-test (Student's with --equal-var, paired with --paired), with the interval and Cohen's d; ci — ilson score interval, with Clopper-Pearson and why not Wald; effect — ohen's d, Hedges' g, the chance one beats the other; multiple — onferroni, Holm and Benjamini-Hochberg side by side; peek — how checking early and stopping when significant inflates false positives; the boundaries that fix it; prereg — the preregistration; dist — z|t|chi2 VALUE [--df D] | z|t|chi2 --p P [--df D] tail areas and quantiles, to check a printed table. Every command prints its working and refuses a bad input; 27 checks in its selftest, 8 of 9 commands on the record.

What it does once your AI has it.

  • power With the effect: n per group; with the effect and --n: the power; with --n alone: the smallest effect it can detect
  • ab Two-proportion z-test, the difference with its interval, the relative lift, a split check and a plain verdict
  • ttest Elch's t-test (Student's with --equal-var, paired with --paired), with the interval and Cohen's d
  • ci Ilson score interval, with Clopper-Pearson and why not Wald
  • effect Ohen's d, Hedges' g, the chance one beats the other
  • multiple Onferroni, Holm and Benjamini-Hochberg side by side
  • peek How checking early and stopping when significant inflates false positives; the boundaries that fix it
  • prereg The preregistration
  • dist Z|t|chi2 VALUE [--df D] | z|t|chi2 --p P [--df D] tail areas and quantiles, to check a printed table
  • On the record The machine, run on real work on 2026-10-09: a FAKE shop's checkout-button test from the size and the preregistration to the result, a FAKE headline test and usability test, and two real published datasets (Student's sleep data and Benjamini & Hochberg's fifteen p-values). Run from this packet's own scripts/experiment.py before AUDIT.md, WITNESS.md and MANIFEST.md were added (none of them touches SKILL.md, so the punch is the punch of the packet you hold). Output pasted as it printed; long lines are cut by the machines themselves.

What it will never do.

It will never fabricated, altered or invented data; never outliers, subgroups, metrics or tests chosen after looking, to reach significance; never failed or null results left out of a report; never a bare p-value without its effect size and interval; never power worked out after the fact as evidence; never a trial on people sized or analysed without a biostatistician and an ethics board.

It sizes a test before it starts, tests the result after with the method it names, and reports every result with its effect size and its interval; every formula, source and assumption is printed, and it says where a normal approximation is used. It never offers power worked out after the fact as evidence, never designs a trial on people, and never helps fabricate data, hunt for significance or hide a result. It is an AI reading a text file: it can be wrong, so check what matters against your own records and the source.

Not for testing whether Claude picks a skill, physical-world numbers, spreadsheets or charts, clinical trials or studies on people needing ethics approval (a biostatistician and an IRB), medical decisions, or fabricating data, p-hacking or hiding failed results.

What’s in the buy.

  • CARD.md — the whole card: who it is, its laws, when it says no, what it carries · SKILL.md — the door your AI reads first · START-HERE.md — the first five minutes, for you
  • THE-HONEST-REPORT.md + THE-METHOD.md + THE-NUMBERS.md + THE-SOURCES.md — the guides in references/, in the card's own voice
  • scripts/experiment.py — the machine: power · ab · ttest · ci · effect · multiple · peek · prereg · dist, standard library only, selftest 27/27
  • WITNESS.md — the self-test and the runs on the record, as they printed · MANIFEST.md, every file hashed · AUDIT.md, the twelve checks · tests/, ten tests with their evals
  • MY-LEDGER.md — the card's memory, on your own machine · TIN.md · LICENSE-NOTE.md · THE-CLAUSES.md
  • card.svg + card-machine.svg + card.json · card.html, the card as one offline file · HOSTS.md, the door for each host (Claude, Claude Code, ChatGPT, Gemini, Any other AI) · system/, the prompts for any other AI
  • Also sold as a bot: the same card as instructions and knowledge files for a ChatGPT Project or GPT, a Gemini Gem or a Claude Project (THE BOTS, beside the packet)

PROOF · SELFTEST 27/27 · 8 OF 9 COMMANDS ON THE RECORD · WITNESSED 2026-10-09 · EDITION 1 · PUNCH 9901E663950A0E2CFA242773

ON EVERY DOOR · A CARD FOR YOUR AI, A FILE FOR YOUR COMPUTER

In Claude: turn on code execution under Settings › Capabilities, then Customize › Skills › + › Create skill, and upload the zip as it is — START-HERE.md in the box walks you through it, and tells you how to keep the ledger. In ChatGPT, Gemini and the rest: a Project, a GPT or a Gem with the card’s files attached and the short door in the box pasted as its instructions. The words run anywhere an AI reads Markdown; the machines run wherever the host runs Python. Witnessed in Claude only. The host marks →

Take it.

Nº 954 PROPOSED — LAUNCHING SOON

Sold as is under the term printed. A card instructs an AI you operate; results depend on your model, your files and your judgement. Not medical, legal, tax or financial advice, never the person’s boss, and not a licence to practise. The terms →

ONE PAYMENT · NOTHING RENEWS ITSELF

OFFLINE · ONE LICENCE · PUNCH-CHECKABLE · THE STANDARD

One payment. The file is yours to keep and keeps working at its edition; new editions issued in the year after you buy reach you by email as replacement files. Tax is added at checkout where it applies. Nothing auto-renews.

One email when it is on sale, from the studio; nothing else, ever.

A TERM, NOT A SUBSCRIPTION: NOTHING RENEWS ITSELF AND NOBODY IS CHARGED AGAIN. WHEN A TERM ENDS THE FILES STAY ON YOUR COMPUTER AND STAY READABLE — FREEZE, NOT LOSS.

THE MACHINE · IN THE OPEN · FROM THE WITNESSED RUN OF 2026-10-09

experiment.py, every command showing its working.

A small Python program, standard library only. Your AI runs it; you can too. Every block below is pasted from the card’s own WITNESS.md, as printed.

powerwith the effect: n per group; with the effect and --n: the power; with --n alone: the smallest effect it can detect
abtwo-proportion z-test, the difference with its interval, the relative lift, a split check and a plain verdict
ttestelch's t-test (Student's with --equal-var, paired with --paired), with the interval and Cohen's d
ciilson score interval, with Clopper-Pearson and why not Wald
effectohen's d, Hedges' g, the chance one beats the other
multipleonferroni, Holm and Benjamini-Hochberg side by side
peekhow checking early and stopping when significant inflates false positives; the boundaries that fix it
preregthe preregistration
distz|t|chi2 VALUE [--df D] | z|t|chi2 --p P [--df D] tail areas and quantiles, to check a printed table
selftest27 checks that prove the machine; it must print 27/27
power · WITH THE EFFECT: N PER GROUP; WITH THE EFFECT AND --N: THE POWER; WITH --N ALONE: THE SM
$ experiment.py power --p1 0.04 --p2 0.05 --per-day 3000
SAMPLE SIZE · two proportions · 4.00% → 5.00% (+1.00 points, +25.0% relative)
alpha 0.05 (two-sided) · power 80% · z(alpha) = 1.9600 · z(power) = 0.8416
n per group: 6,745  (13,490 in all)
with the continuity correction (more cautious): 6,944 per group
Cohen's h = 0.048 (0.2 small, 0.5 medium, 0.8 large, by Cohen's own fallback labels)
FORMULA: n = [z(alpha)·√(2·p̄·(1−p̄)) + z(power)·√(p1(1−p1) + p2(1−p2))]² / (p1 − p2)², p̄ = (p1 + p2)/2; continuity-corrected n' = n/4·(1 + √(1 + 4/(n·|p1−p2|)))²
TIME: 3,000 visitors a day across both groups → 5 days; run whole weeks (7) so every weekday is in it.
Decide this number before the test starts and stop there. Looking early and stopping when it looks good breaks the alpha (see `peek`).
SOURCE: Fleiss, J. L., Levin, B. & Paik, M. C. (2003). Statistical Methods for Rates and Proportions, 3rd ed. Wiley, ch. 4; Cohen, J. (1988). Statistical Power Analysis for the Behavioral Sciences, 2nd ed. Lawrence Erlbaum
LIMIT: a normal approximation for a two-sided z-test of two independent groups of equal size; for expected counts under about 5 per cell, plan an exact test with a statistician.
power · WITH THE EFFECT: N PER GROUP; WITH THE EFFECT AND --N: THE POWER; WITH --N ALONE: THE SM
$ experiment.py power --p1 0.04 --n 3372
SMALLEST DETECTABLE EFFECT · baseline 4.00% with 3,372 per group
alpha 0.05 (two-sided) · power 80% · z(alpha) = 1.9600 · z(power) = 0.8416
upward: 5.45% (+1.45 points, +36.2% relative)
downward: 2.77% (-1.23 points, -30.8% relative)
A true change smaller than this will usually be missed: "not significant" at this size does not mean "no effect".
FORMULA: the p2 at which power(p1, p2, n) reaches the target, by bisection on the power formula above
SOURCE: Fleiss, J. L., Levin, B. & Paik, M. C. (2003). Statistical Methods for Rates and Proportions, 3rd ed. Wiley, ch. 4
LIMIT: normal approximation, equal groups.
prereg · THE PREREGISTRATION
$ experiment.py prereg --out PREREG.md --title … --p1 0.04 --p2 0.05 …
PREREGISTRATION written: PREREG.md
every section has an answer.
SOURCE: Bowman, S. D., DeHaven, A. C., Errington, T. M., Hardwicke, T. E., Mellor, D. T., Nosek, B. A. & Soderberg, C. K. (2016). OSF Prereg Template. MetaArXiv, doi:10.31222/osf.io/epgjd; Center for Open Science (2025). Choosing the Right Preregistration Template: A Guide for Researchers (cos.io blog, 24 April 2025); registrations at osf.io/registries; Simmons, J. P., Nelson, L. D. & Simonsohn, U. (2011). False-positive psychology. Psychological Science 22(11), 1359-1366
LIMIT: a form is only as good as its timing. Written after the data is seen, it is a description, not a preregistration.
prereg · THE PREREGISTRATION
$ experiment.py prereg --check PREREG.md
PREREGISTRATION CHECK · PREREG.md
every section is filled.
sha256 3c35750b8bf91fad0c8cf103dca97874f3c0894d03ff36666fb9a9b21b2de6ce — record this hash with the date (in MY-LEDGER.md, an email to yourself, or the registry). Any later change to the file changes the hash.
Register it before any outcome data is seen: OSF Registries or AsPredicted give a public, time-stamped record.
SOURCE: Bowman, S. D., DeHaven, A. C., Errington, T. M., Hardwicke, T. E., Mellor, D. T., Nosek, B. A. & Soderberg, C. K. (2016). OSF Prereg Template. MetaArXiv, doi:10.31222/osf.io/epgjd; Center for Open Science (2025). Choosing the Right Preregistration Template: A Guide for Researchers (cos.io blog, 24 April 2025); registrations at osf.io/registries
peek · HOW CHECKING EARLY AND STOPPING WHEN SIGNIFICANT INFLATES FALSE POSITIVES; THE BOUNDARIE
$ experiment.py peek --looks 5 --seed 2026
PEEKING · 5 looks at a test, stopping at the first p below 0.05
EXACT (normal model, equal steps): the real false-positive rate is 14.2%, not 5.0%.
  where the false alarms happen, look by look: 1: 5.0% · 2: 3.3% · 3: 2.4% · 4: 1.9% · 5: 1.6%
SIMULATION (seed 2026): 4,000 A/A tests, both groups at 5.0%, 500 more people a group at each look
  stopped as soon as it looked significant: 14.8% false positives (± 1.1)
  one look, at the planned end only:      5.0% false positives (± 0.7)
THE FIX: decide the looks in advance and use a stricter bar at each one.
  Pocock: |z| ≥ 2.413 at every look (p below 0.0158) → simulated 5.2%
  O'Brien-Fleming: |z| ≥ 2.040·√(5/k) at look k (4.56, 3.23, 2.63, 2.28, …) → simulated 4.6%
  or the simplest: work out n with `power`, put it in the preregistration, and look once.
FORMULA: the chance of a first crossing at each look, by the Armitage-McPherson-Rowe recursion with Simpson's rule; the boundaries by bisection so the total is alpha
SOURCE: Armitage, P., McPherson, C. K. & Rowe, B. C. (1969). Repeated significance tests on accumulating data. JRSS A 132(2), 235-244; Pocock, S. J. (1977). Group sequential methods in the design and analysis of clinical trials. Biometrika 64(2), 191-199; O'Brien, P. C. & Fleming, T. R. (1979). A multiple testing procedure for clinical trials. Biometrics 35(3), 549-556; Jennison, C. & Turnbull, B. W. (2000). Group Sequential Methods with Applications to Clinical Trials. Chapman & Hall/CRC, ch. 2
LIMIT: equal-sized looks and a normal test statistic. Watching a dashboard after every visitor is worse than any number of looks here. These boundaries are for planning a business or classroom test; a trial on people needs its own statistician and monitoring board.
ab · TWO-PROPORTION Z-TEST, THE DIFFERENCE WITH ITS INTERVAL, THE RELATIVE LIFT, A SPLIT CHEC
$ experiment.py ab --a 120/2400 --b 151/2380 --planned 6745
A/B TEST · two proportions · B compared with A
  A: 120 / 2,400 = 5.000%
  B: 151 / 2,380 = 6.345%
DIFFERENCE  B − A = +1.345 percentage points
  95% interval (Newcombe hybrid score): +0.03 to +2.67 points
  95% interval (Wald, unpooled, for comparison): +0.03 to +2.66 points
RELATIVE LIFT  +26.9%   95% interval +0.5% to +60.2% (from the log risk ratio)
TEST  two-proportion z-test, pooled: z = 2.010, two-sided p = 0.044
  FORMULA: z = (pB − pA) / √(p̂(1 − p̂)(1/nA + 1/nB)), p̂ = (xA + xB)/(nA + nB); interval: Newcombe 1998, method 10
SPLIT CHECK  2,400 vs 2,380 against 50/50: χ² = 0.08, p = 0.772 — no sign of a sample ratio mismatch
VERDICT
  What the data shows: B's rate is higher than A's, and a gap this large would be rare if there were no real difference (p = 0.044, below 0.05).
  The true difference is plausibly anywhere from +0.03 to +2.67 points (+0.5% to +60.2% relative).
  The near end of that interval is close to zero: the effect could be too small to matter. Judge it on the interval, not on the p-value.
  A p-value this close to the line is weak evidence on its own; a fresh run of the same test is the honest check.
  The planned size was 6,745 per group and this has 2,380: if it stopped early because it looked good, this p-value is too small (see `peek`).
  What it does not show:
  - that p is the chance B is no better, or the chance the result is a fluke (ASA principle 2);
  - that the lift is exactly +26.9% — the interval is the honest answer;
  - that the difference is big enough to act on — that is a judgement on the interval, in your units;
  - that it holds for other people, places or seasons than the ones in the test;
  - anything, if the metric, the size or the test was chosen after looking, if it stopped early because it looked good, or if many metrics were tested and this is the best one (`multiple`).
SOURCE: Newcombe, R. G. (1998). Interval estimation for the difference between independent proportions: comparison of eleven methods. Statistics in Medicine 17, 873-890; Fisher, R. A. (1935). The Design of Experiments. Oliver & Boyd (the exact test of a 2 x 2 table); Kohavi, R., Tang, D. & Xu, Y. (2020). Trustworthy Online Controlled Experiments. Cambridge University Press (sample ratio mismatch); Wasserstein, R. L. & Lazar, N. A. (2016). The ASA statement on p-values: context, process, and purpose. The American Statistician 70(2), 129-133
LIMIT: independent units each counted once, randomly assigned. Clicks from one person counted many times break the formula; analyse by the unit that was randomised.
ab · TWO-PROPORTION Z-TEST, THE DIFFERENCE WITH ITS INTERVAL, THE RELATIVE LIFT, A SPLIT CHEC
$ experiment.py ab --a 270/6745 --b 322/6760 --planned 6745
A/B TEST · two proportions · B compared with A
  A: 270 / 6,745 = 4.003%
  B: 322 / 6,760 = 4.763%
DIFFERENCE  B − A = +0.760 percentage points
  95% interval (Newcombe hybrid score): +0.07 to +1.45 points
  95% interval (Wald, unpooled, for comparison): +0.07 to +1.45 points
RELATIVE LIFT  +19.0%   95% interval +1.6% to +39.4% (from the log risk ratio)
TEST  two-proportion z-test, pooled: z = 2.158, two-sided p = 0.031
  FORMULA: z = (pB − pA) / √(p̂(1 − p̂)(1/nA + 1/nB)), p̂ = (xA + xB)/(nA + nB); interval: Newcombe 1998, method 10
SPLIT CHECK  6,745 vs 6,760 against 50/50: χ² = 0.02, p = 0.897 — no sign of a sample ratio mismatch
VERDICT
  What the data shows: B's rate is higher than A's, and a gap this large would be rare if there were no real difference (p = 0.031, below 0.05).
  The true difference is plausibly anywhere from +0.07 to +1.45 points (+1.6% to +39.4% relative).
  The near end of that interval is close to zero: the effect could be too small to matter. Judge it on the interval, not on the p-value.
  A p-value this close to the line is weak evidence on its own; a fresh run of the same test is the honest check.
  What it does not show:
  - that p is the chance B is no better, or the chance the result is a fluke (ASA principle 2);
  - that the lift is exactly +19.0% — the interval is the honest answer;
  - that the difference is big enough to act on — that is a judgement on the interval, in your units;
  - that it holds for other people, places or seasons than the ones in the test;
  - anything, if the metric, the size or the test was chosen after looking, if it stopped early because it looked good, or if many metrics were tested and this is the best one (`multiple`).
SOURCE: Newcombe, R. G. (1998). Interval estimation for the difference between independent proportions: comparison of eleven methods. Statistics in Medicine 17, 873-890; Fisher, R. A. (1935). The Design of Experiments. Oliver & Boyd (the exact test of a 2 x 2 table); Kohavi, R., Tang, D. & Xu, Y. (2020). Trustworthy Online Controlled Experiments. Cambridge University Press (sample ratio mismatch); Wasserstein, R. L. & Lazar, N. A. (2016). The ASA statement on p-values: context, process, and purpose. The American Statistician 70(2), 129-133
LIMIT: independent units each counted once, randomly assigned. Clicks from one person counted many times break the formula; analyse by the unit that was randomised.
effect · OHEN'S D, HEDGES' G, THE CHANCE ONE BEATS THE OTHER
$ experiment.py effect --a 270/6745 --b 322/6760
EFFECT SIZES · two groups, B compared with A · A 4.00%, B 4.76%
RISK DIFFERENCE  +0.76 points (95% interval +0.07 to +1.45)
  in plain words: out of every 100 people, about 0.8 more have the outcome with B than with A.
RISK RATIO  1.190 (interval 1.016 to 1.394)
  in plain words: B's rate is 1.19 times A's, a relative change of +19.0%.
ODDS RATIO  1.199 (interval 1.017 to 1.415)
  in plain words: the odds (have it ÷ do not) with B are 1.20 times the odds with A. It is close to the risk ratio when the outcome is rare and further from it when common; it is not "times as likely".
NUMBER NEEDED TO TREAT  131.5 (interval 68.8 to 1441.9)
  in plain words: about this many people must get B instead of A for one more (or one fewer) to have the outcome.
FORMULA: RD = pB − pA (Newcombe interval); RR = pB/pA, log interval with SE √(1/xB − 1/nB + 1/xA − 1/nA); OR = (xB·(nA−xA))/(xA·(nB−xB)), Woolf log interval; NNT = 1/|RD|, its interval from the RD interval
SOURCE: Newcombe, R. G. (1998). Interval estimation for the difference between independent proportions: comparison of eleven methods. Statistics in Medicine 17, 873-890; Woolf, B. (1955). On estimating the relation between blood group and disease. Annals of Human Genetics 19, 251-253; Altman, D. G. (1998). Confidence intervals for the number needed to treat. BMJ 317, 1309-1312
LIMIT: two independent groups, each person counted once. A ratio hides the base rate: always give the risk difference beside it.
multiple · ONFERRONI, HOLM AND BENJAMINI-HOCHBERG SIDE BY SIDE
$ experiment.py multiple h01=0.003 … h20=0.97
MULTIPLE COMPARISONS · 20 tests · alpha 0.05
test         raw p  Bonferroni      Holm        BH
h01         0.0030     0.0600    0.0600    0.0600 
h02         0.0110     0.2200    0.2090    0.1100 
h03         0.0190     0.3800    0.3420    0.1267 
h04         0.0320     0.6400    0.5440    0.1600 
h05         0.0470     0.9400    0.7520    0.1880 
h06         0.0810     1.0000    1.0000    0.2700 
h07         0.1200     1.0000    1.0000    0.3429 
h08         0.1800     1.0000    1.0000    0.4500 
h09         0.2200     1.0000    1.0000    0.4889 
h10         0.2900     1.0000    1.0000    0.5800 
h11         0.3400     1.0000    1.0000    0.6182 
h12         0.4100     1.0000    1.0000    0.6833 
h13         0.4700     1.0000    1.0000    0.7231 
h14         0.5500     1.0000    1.0000    0.7857 
h15         0.6100     1.0000    1.0000    0.8133 
h16         0.6800     1.0000    1.0000    0.8500 
h17         0.7400     1.0000    1.0000    0.8706 
h18         0.8300     1.0000    1.0000    0.9222 
h19         0.9000     1.0000    1.0000    0.9474 
h20         0.9700     1.0000    1.0000    0.9700 
* = below alpha after adjustment.
SURVIVE  raw 5 · Bonferroni 0 · Holm 0 · Benjamini-Hochberg 0
Bonferroni and Holm keep the chance of even one false positive among all 20 tests at 0.05 (family-wise error). Holm is never weaker than Bonferroni, so use Holm.
Benjamini-Hochberg keeps the expected share of false discoveries among the ones you call at 0.05 (false discovery rate): more found, a few of them wrong. Use it for screening, not for a single decision.
With 20 tests and no real effects at all, about 1.0 would come out below 0.05 by chance alone.
Give this every test you ran, the failures too. Adjusting only the ones that looked good is the same as not adjusting.
FORMULA: Bonferroni m·p; Holm: sorted p(i)·(m − i + 1), carried upward; BH: sorted p(i)·m/i, carried downward from the largest
SOURCE: Holm, S. (1979). A simple sequentially rejective multiple test procedure. Scandinavian Journal of Statistics 6(2), 65-70; Benjamini, Y. & Hochberg, Y. (1995). Controlling the false discovery rate: a practical and powerful approach to multiple testing. JRSS B 57(1), 289-300
LIMIT: BH assumes the tests are independent or positively related; under other dependence use Benjamini-Yekutieli (more cautious).
ci · ILSON SCORE INTERVAL, WITH CLOPPER-PEARSON AND WHY NOT WALD
$ experiment.py ci --successes 37 --n 50
INTERVAL FOR A PROPORTION · 37 of 50 = 74.00%
95% Wilson score interval: 60.45% to 84.13%
95% Clopper-Pearson (exact, more cautious): 59.66% to 85.37%
the Wald interval p̂ ± z√(p̂(1−p̂)/n) would say 61.84% to 86.16% — it is not used: it covers too rarely for small n or rates near 0 or 1, and gives zero width at 0 or n
FORMULA: Wilson = [p̂ + z²/2n ± z√(p̂(1−p̂)/n + z²/4n²)] / (1 + z²/n), z = 1.9600
SOURCE: Wilson, E. B. (1927). Probable inference, the law of succession, and statistical inference. JASA 22(158), 209-212; Clopper, C. J. & Pearson, E. S. (1934). The use of confidence or fiducial limits illustrated in the case of the binomial. Biometrika 26(4), 404-413; Newcombe, R. G. (1998). Two-sided confidence intervals for the single proportion: comparison of seven methods. Statistics in Medicine 17, 857-872
LIMIT: independent trials with one shared rate. The interval is about sampling error only, not bias in who was counted.
ttest · ELCH'S T-TEST (STUDENT'S WITH --EQUAL-VAR, PAIRED WITH --PAIRED), WITH THE INTERVAL AND
$ experiment.py ttest --a … --b … --paired
PAIRED t-TEST · 10 pairs, A − B
mean difference -1.58, SD of differences 1.23
t = -4.0621, df = 9, two-sided p = 0.0028
95% interval for the mean difference: -2.46 to -0.7001
d(z) = mean difference ÷ SD of differences = -1.285
FORMULA: t = d̄ / (s_d/√n), df = n − 1
SOURCE: Press, W. H., Teukolsky, S. A., Vetterling, W. T. & Flannery, B. P. (2007). Numerical Recipes, 3rd ed. §6.2 and §6.4 (incomplete gamma and beta functions)
LIMIT: the differences should be roughly normal; with very few pairs, look at them before trusting the test.
ttest · ELCH'S T-TEST (STUDENT'S WITH --EQUAL-VAR, PAIRED WITH --PAIRED), WITH THE INTERVAL AND
$ experiment.py ttest --a … --b …
WELCH'S t-TEST (unequal variances allowed) · A − B
  A: mean 0.75, SD 1.789, n 10
  B: mean 2.33, SD 2.002, n 10
difference -1.58 · t = -1.8608, df = 17.776, two-sided p = 0.079
95% interval for the difference: -3.365 to 0.2055
effect: Cohen's d = -0.832, Hedges' g = -0.797 (see `effect`)
FORMULA: t = (x̄A − x̄B)/√(sA²/nA + sB²/nB), Welch–Satterthwaite df
SOURCE: Welch, B. L. (1947). The generalization of 'Student's' problem when several different population variances are involved. Biometrika 34, 28-35; Press, W. H., Teukolsky, S. A., Vetterling, W. T. & Flannery, B. P. (2007). Numerical Recipes, 3rd ed. §6.2 and §6.4 (incomplete gamma and beta functions)
LIMIT: independent groups, roughly normal means (fine for large n). Welch is the safer default; Student's assumes equal SDs.
multiple · ONFERRONI, HOLM AND BENJAMINI-HOCHBERG SIDE BY SIDE
$ experiment.py multiple 0.0001 0.0004 … 1.000
MULTIPLE COMPARISONS · 15 tests · alpha 0.05
test         raw p  Bonferroni      Holm        BH
test 1      0.0001     0.0015*   0.0015*   0.0015*
test 2      0.0004     0.0060*   0.0056*   0.0030*
test 3      0.0019     0.0285*   0.0247*   0.0095*
test 4      0.0095     0.1425    0.1140    0.0356*
test 5      0.0201     0.3015    0.2211    0.0603 
test 6      0.0278     0.4170    0.2780    0.0639 
test 7      0.0298     0.4470    0.2780    0.0639 
test 8      0.0344     0.5160    0.2780    0.0645 
test 9      0.0459     0.6885    0.3213    0.0765 
test 10     0.3240     1.0000    1.0000    0.4860 
test 11     0.4262     1.0000    1.0000    0.5812 
test 12     0.5719     1.0000    1.0000    0.7149 
test 13     0.6528     1.0000    1.0000    0.7532 
test 14     0.7590     1.0000    1.0000    0.8132 
test 15     1.0000     1.0000    1.0000    1.0000 
* = below alpha after adjustment.
SURVIVE  raw 9 · Bonferroni 3 · Holm 3 · Benjamini-Hochberg 4
Bonferroni and Holm keep the chance of even one false positive among all 15 tests at 0.05 (family-wise error). Holm is never weaker than Bonferroni, so use Holm.
Benjamini-Hochberg keeps the expected share of false discoveries among the ones you call at 0.05 (false discovery rate): more found, a few of them wrong. Use it for screening, not for a single decision.
With 15 tests and no real effects at all, about 0.8 would come out below 0.05 by chance alone.
Give this every test you ran, the failures too. Adjusting only the ones that looked good is the same as not adjusting.
FORMULA: Bonferroni m·p; Holm: sorted p(i)·(m − i + 1), carried upward; BH: sorted p(i)·m/i, carried downward from the largest
SOURCE: Holm, S. (1979). A simple sequentially rejective multiple test procedure. Scandinavian Journal of Statistics 6(2), 65-70; Benjamini, Y. & Hochberg, Y. (1995). Controlling the false discovery rate: a practical and powerful approach to multiple testing. JRSS B 57(1), 289-300
LIMIT: BH assumes the tests are independent or positively related; under other dependence use Benjamini-Yekutieli (more cautious).

THE RUNS ARE PASTED FROM THE CARD’S OWN WITNESS.MD AS PRINTED. FIGURES MARKED FAKE ARE THE STUDIO’S OWN EXAMPLES, INVENTED FOR THE RECORD; PUBLISHED FIGURES ARE NAMED WITH THEIR SOURCES. NO PRIVATE PERSON IS NAMED.

QUESTIONS AT THE TABLE

Asked before the wire.

What does it need from me?

Name. Ask what the work is and what it must agree with.

Does it send anything anywhere?

No. The machine is a standard-library Python program that runs on your own computer and sends nothing anywhere; the words run wherever an AI reads Markdown. No server, no account, no key.

What is on the record?

The self-test (27/27) and 8 of its 9 commands run on real inputs, pasted into WITNESS.md as they printed; the punch on the face is the SHA-256 of SKILL.md, so a downloaded copy can be checked against this room.

Can it be wrong?

Yes — it is an AI reading a text file. It sizes a test before it starts, tests the result after with the method it names, and reports every result with its effect size and its interval; every formula, source and assumption is printed, and it says where a normal approximation is used. It never offers power worked out after the fact as evidence, never designs a trial on people, and never helps fabricate data, hunt for significance or hide a result.

What will it never do?

It will never fabricated, altered or invented data; never outliers, subgroups, metrics or tests chosen after looking, to reach significance; never failed or null results left out of a report; never a bare p-value without its effect size and interval; never power worked out after the fact as evidence; never a trial on people sized or analysed without a biostatistician and an ethics board.

← THE INSTRUMENTS · THE FLOOR →

AT YOUR ELBOW, NEVER THE BOSS · NOT LEGAL, MEDICAL, TAX OR FINANCIAL ADVICE · NOT A PAYMENT CARD · © 2026 LUND STUDIO LLC

PAY BYAmerican Express Apple Pay Diners ClubDiscoverGoogle Pay Mastercard PayPalShop Pay Visa
CART · 0