Chapter 5 — Main study and independent validation
Lesson map
Lesson 05 published. Map, example, EX027.
flowchart TD
N0["Learning outcomes"]
N1["5.1 Running the study"]
N2["Lab — Residual comparison"]
N3["5.2 Results"]
N4["5.3 Independent validation"]
N5["5.4 Interpreting carefully"]
N6["Synthesis"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6
N6 --> EX["Worked example"]
EX --> Q["Exercise EX027"]
Logical drawing
flowchart LR
N0["Learning outcomes"]
N1["5.1 Running the study"]
N2["Lab — Residual comparison"]
N3["5.2 Results"]
N4["5.3 Independent validation"]
N5["5.4 Interpreting carefully"]
N6["Synthesis"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> Q["EX027"]
[Learning outcomes]
|
v
[5.1 Running the study]
|
v
[Lab — Residual comparison]
|
v
[5.2 Results]
|
v
[5.3 Independent validation]
|
v
[5.4 Interpreting carefully]
|
v
[Synthesis]
|
v
[Worked example] --> [Exercise EX027]
Learning outcomes
You will (1) run the randomised comparison; (2) analyse residual issues; (3) validate findings independently.
5.1 Running the study
Over eight weeks, partner auditors review twenty-four contracts, twelve with the checklist and twelve with usual review, following the random allocation. Lucía monitors fidelity by checking that checklist reviews record every item and that usual reviews do not borrow the checklist. Each review closes with a findings report. The blinded independent reviewer then examines every contract and records high-severity issues not in the first report. Fidelity checks matter because a comparison is meaningless if the procedures blur together in practice.
Lab — Residual comparison
"""Compare residual high-severity findings after two review procedures (synthetic, read-only).
Residual = high-severity issues found by the blinded independent reviewer after the first review closed."""
import random, statistics
CHECKLIST = [0, 1, 0, 0, 1, 0, 2, 0, 0, 1, 0, 0]
USUAL = [1, 2, 0, 1, 2, 1, 3, 0, 1, 2, 1, 1]
def main():
m1, m2 = statistics.mean(CHECKLIST), statistics.mean(USUAL)
diff = m2 - m1
print(f"contracts per arm {len(CHECKLIST)}")
print(f"mean residual high: checklist {m1:.2f}, usual {m2:.2f}, difference {diff:.2f}")
rng = random.Random(2026)
pool = CHECKLIST + USUAL
hits, reps = 0, 10000
for _ in range(reps):
rng.shuffle(pool)
if statistics.mean(pool[12:]) - statistics.mean(pool[:12]) >= diff:
hits += 1
print(f"one-sided permutation p = {hits / reps:.4f} ({reps} shuffles, seed 2026)")
print(f"contracts with zero residual high: checklist {CHECKLIST.count(0)}/12, usual {USUAL.count(0)}/12")
if __name__ == "__main__":
main()
Run with python3 lab_trial.py. Verified output:
contracts per arm 12
mean residual high: checklist 0.42, usual 1.25, difference 0.83
one-sided permutation p = 0.0146 (10000 shuffles, seed 2026)
contracts with zero residual high: checklist 8/12, usual 2/12
5.2 Results
The run reports mean residual high-severity issues of 0.42 per contract with the checklist and 1.25 with usual review, a difference of 0.83. The one-sided permutation test with seed 2026 and ten thousand shuffles gives p equal to 0.0146. Eight of twelve checklist contracts have no residual high issues, compared with two of twelve under usual review. Lucía reports the difference with its uncertainty and notes that twelve contracts per arm is a small sample, so the estimate is imprecise.
A p-value of 0.0146 makes chance an unlikely explanation for the 0.83 difference, but it says nothing about how large the true difference is.
5.3 Independent validation
To check that residual issues are real, a second independent reviewer, also blinded, assesses each residual issue for validity and severity. Agreement on severity is high, and two residual issues from the usual arm are downgraded to medium, which Lucía reports along with a sensitivity analysis that excludes them. The direction of the result holds. Validation guards against the possibility that one reviewer's judgements, rather than the procedures, produced the difference. Lucía records the validator's reasoning for each changed rating, and reports both the original and validated results side by side.
5.4 Interpreting carefully
Lucía writes that structured checklist review was associated with fewer residual high-severity issues in this sample of synthetic contracts and partner auditors. She does not claim the checklist prevents all serious issues, nor that the effect size will hold for public decentralised finance protocols with complex economic designs. She also notes that checklist reviews took on average fifteen percent longer, a cost partners must weigh. Careful interpretation keeps the claim within what the design supports. She states the limits in the abstract as well as the discussion.
Worked example
Residual high-severity issues average 0.42 with the checklist and 1.25 with usual review (p = 0.0146, permutation); 8 of 12 checklist contracts have none, against 2 of 12.
Synthetic case. Contracts, auditors and figures are synthetic.
Errors and limits
Reporting only a p-value without effect size, sample size and limits overstates certainty.
Exercises
- EX027 — Mean residuals. What were the mean residual high issues? Rubric: 3 = 0.42 checklist vs 1.25 usual;; 2 = 0.42;; 1 = equal;; 0 = none.
- EX028 — Permutation result. What p-value did the permutation test give? Rubric: 3 = 0.0146 with seed 2026;; 2 = 0.015;; 1 = 0.5;; 0 = none.
- EX029 — Zero counts. How many contracts had zero residual high issues? Rubric: 3 = 8 of 12 checklist, 2 of 12 usual;; 2 = 8 and 2;; 1 = all;; 0 = none.
- EX030 — Fidelity meaning. Why monitor fidelity? Rubric: 3 = to keep the procedures distinct;; 2 = separation;; 1 = speed;; 0 = none.
- EX031 — Validation outcome. What did the second reviewer change? Rubric: 3 = downgraded two usual-arm issues to medium;; 2 = downgrades;; 1 = vague;; 0 = none.
- EX032 — Time cost. What cost did the checklist add? Rubric: 3 = about fifteen percent longer reviews;; 2 = time;; 1 = vague;; 0 = none.
Synthesis
A randomised, blinded comparison with independent validation supports a careful, bounded claim.
Continue studying — chapter 05 of 08
← Chapter 04 (draft) · Course chapter index · Chapter 06 (draft) →