FA-12641 / Causal analysis data contracts / Open access
Intention-to-treat groups are rebuilt from received treatment · case 01
Intention-to-treat groups are rebuilt from received treatment.
ROOT CAUSE
Observed uptake replaces randomized assignment.
VERIFIED REPAIR
Group every unit by assigned arm.
Unsuccessful approach: Dropping noncompliers still conditions on uptake.
Case contract
Rows are [assignment, received, outcome]. Return assigned-arm mean difference or None if either assigned arm is absent.
Why this case matters
A deterministic synthetic study model isolates this data-contract defect; outputs alone establish no real-world causal identification.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(rows):
groups = [[r[2] for r in rows if r[1] == a] for a in (0,1)]
return None if not all(groups) else sum(groups[1])/len(groups[1])-sum(groups[0])/len(groups[0])
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('crossovers', solve([[0,0,0],[0,1,4*N],[1,0,2*N],[1,1,6*N]]), 2*N)
check('compliance', solve([[0,0,N],[1,1,3*N]]), 2*N)
check('all cross', solve([[0,1,N],[1,0,4*N]]), 3*N)
check('empty', solve([]), None)
check('missing control', solve([[1,0,N]]), None)
check('zero effect', solve([[0,1,N],[1,1,N]]), 0)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| crossovers | 4.0 | 2 | Failed |
| compliance | 2.0 | 2 | Passed |
| all cross | -3.0 | 3 | Failed |
| empty | None | None | Passed |
| missing control | None | None | Passed |
| zero effect | None | 0 | Failed |
SHA-256 / 37d517796bffe55eba20ecdc6a8d8fa42d3e730e6dd0629cb1bf6d9bb624e1dd
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(rows):
groups = [[r[2] for r in rows if r[0] == a and r[0] == r[1]] for a in (0,1)]
return None if not all(groups) else sum(groups[1])/len(groups[1])-sum(groups[0])/len(groups[0])
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('crossovers', solve([[0,0,0],[0,1,4*N],[1,0,2*N],[1,1,6*N]]), 2*N)
check('compliance', solve([[0,0,N],[1,1,3*N]]), 2*N)
check('all cross', solve([[0,1,N],[1,0,4*N]]), 3*N)
check('empty', solve([]), None)
check('missing control', solve([[1,0,N]]), None)
check('zero effect', solve([[0,1,N],[1,1,N]]), 0)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| crossovers | 6.0 | 2 | Failed |
| compliance | 2.0 | 2 | Passed |
| all cross | None | 3 | Failed |
| empty | None | None | Passed |
| missing control | None | None | Passed |
| zero effect | None | 0 | Failed |
SHA-256 / 698257a6a8a8d5ccb22369ec69a49508987f0a1f86e383b5ba6ebdd1e4e2a2ba
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(rows):
groups = [[r[2] for r in rows if r[0] == a] for a in (0,1)]
return None if not all(groups) else sum(groups[1])/len(groups[1])-sum(groups[0])/len(groups[0])
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('crossovers', solve([[0,0,0],[0,1,4*N],[1,0,2*N],[1,1,6*N]]), 2*N)
check('compliance', solve([[0,0,N],[1,1,3*N]]), 2*N)
check('all cross', solve([[0,1,N],[1,0,4*N]]), 3*N)
check('empty', solve([]), None)
check('missing control', solve([[1,0,N]]), None)
check('zero effect', solve([[0,1,N],[1,1,N]]), 0)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| crossovers | 2.0 | 2 | Passed |
| compliance | 2.0 | 2 | Passed |
| all cross | 3.0 | 3 | Passed |
| empty | None | None | Passed |
| missing control | None | None | Passed |
| zero effect | 0.0 | 0 | Passed |
SHA-256 / bd92be69762b871897cc81c3ba544e3c1a02e884ce4a4595fbab398db6d544cf
Verification & scope
Finite, fully specified synthetic data only; identification assumptions are supplied by the fixture design, not inferred from observations. This reproducer isolates one failure mechanism. Results cover the supplied fixtures. Variants within a family share a test contract and should remain grouped when constructing evaluation splits. Related mechanisms with a shared evaluation_group must also remain together; these controlled models are not independent production incidents.
Observations recorded using Python 3.12.14 at 2026-09-29T14:38:58.793921+00:00.
Case digest / 9c90c6ef030ab667d3e39d2be87291dea00444cd69f057264e4ff451a3f08bed