# Preregistration: did the pipe works reduce breakdowns? (written 2026-10-25, before computing) Data: CMTEB status page, hourly flat-data archive (FlorinPopaCodes/termoficare-data), 2021-12-19 → 2026-10-24. Unit: canonical heat point (diacritics/case stripped, Partial/Module qualifiers stripped, repo alias table). Day = calendar day with ≥1 usable snapshot showing an ACC stop ("Oprire ACC…") at that point. Majority cause class that day. Classes (regex on CMTEB cause text, audited 25 Oct): works (POIM/lot/obiectiv/modernizare/reabilitare/named firm/deblindare-reîntregire), maint (revizie/mentenanță), brk_pri (unplanned primary-network repair: avarie/remediere/reparații on primary, racord, magistrală), brk_sec (secondary network), brk_pt (inside heat point), supply, other. Treated: points with ≥7 works stop-days in total; first works day F ≥ 2022-12-20; last works day L ≤ 2025-06-30; works span L−F ≤ 540 days. Windows: pre = [F−365, F−1]; post = [L+31, L+395] (clipped to 2026-10-24; require ≥300 post days). Control pool: points with zero works stop-days in the whole record. Outcome: brk_pri stop-days in window. Placebo outcome: brk_sec stop-days. Estimator (primary): for each treated point, 5 nearest controls on pre-window brk_pri days (same calendar windows, ties broken by sector match then random seed 1). DiD_i = (post_i − pre_i) − mean_c(post_c − pre_c). Report mean DiD and ratio R = (Σpost_T/Σpre_T)/(Σpost_C/Σpre_C), bootstrap over treated points (2,000 draws, seed 1). Secondary: unmatched (all controls) version; per-year-of-completion split. Decision rule for the headline: - "fewer breakdowns after the works": R ≤ 0.80 and 95% CI upper < 1. - "more breakdowns after": R ≥ 1.25 and CI lower > 1. - otherwise "no detectable change"; say so plainly. Placebo (brk_sec) should show no effect; if it shows an effect of similar size, the primary result is treated as confounded and not headlined. Additional reported (not a gate): share of 2026 YTD stop-days by class vs 2022–2025 same window; estimate slippage of works vs breakdown episodes. --- ## Addendum, 2026-10-25 (after computing; the body above is unchanged) Results (research/did-results.json, cutoff 2026-10-23): 60 treated points (48 finished works in 2024, 10 in 2025, 2 in 2023); 188 never-works points; 837 points had at least one works stop-day. - Primary as preregistered (matched never-works controls), brk_pri: treated 1,594 → 839 days, controls 1,285 → 402; R = 1.68 (95% CI 1.30–2.13). By the decision rule this reads "more breakdowns after". - Placebo brk_sec: R = 0.84 (0.60–1.17), no effect. - Post-hoc comparison (not preregistered): matched not-yet-treated controls (points whose first works day falls after the treated point's post window), brk_pri: controls 1,523 → 1,091; R = 0.735 (0.55–0.98). Placebo brk_sec R = 1.08 (0.76–1.55). Diagnostics (suggested before reading them as a verdict): - Control reuse, never-works pool: 73 distinct controls serve 60 treated points; the five most used serve 29, 25, 24, 23 and 23 of them. Not-yet pool: 123 distinct, top uses 12, 11, 10, 10, 9. - Pre-trends (first vs second half of the pre window): treated 864 → 730 (−16%); matched never-works controls 859 → 426 (−50%); matched not-yet controls 797 → 726 (−9%). Reading: the preregistered comparison fails its own parallel-trends assumption. Matching on high pre-window breakdowns picks the few never-works points with a one-off bad year, and those were already falling before the treated points' works began. The not-yet-treated comparison has roughly parallel pre-trends, but it is post hoc. Its bias also runs the other way: pipes are scheduled because they fail, so its controls may worsen during the window. Published wording: "early sign, not proof". After their works ended, primary-network breakdowns at these 60 points fell about a quarter more than at similar points still waiting for works. The preregistered comparison could not be used, and the page says why. "Treated" means "stopped for works", not "pipes replaced at this point". Most of the 212 km finished after mid-2025, too recently to test. Secular check of the 2026 breakdown fall (1 Jan–23 Oct, breakdown stop-days): points with no works stop-day in 2025–26 (347): 2,564 → 2,377 (−7%). Points with works in 2026 (573): 12,833 → 8,641 (−33%). Part of that −33% is crowd-out: a day counted as works cannot also count as a breakdown. --- ## Addendum 2, 2026-10-25 (after independent review) The review (research/review/codex-review-2026-10-25.md) found that the "not-yet-treated" pool also contained never-works points (`c not in first`), so 105 of 300 control picks were never-works points. The classifier was also changed so that a firm name alone no longer outranks an explicit breakdown or maintenance text. Rerun with a pure not-yet pool (58 treated: 47 ended 2024, 10 in 2025, 1 in 2023): - never-works pool, brk_pri: treated 1,559 → 803; controls 1,288 → 628; R = 1.06 (0.78–1.44); control pre-trend 848 → 441 (fails parallel trends again). - pure not-yet pool, brk_pri: controls 1,503 → 1,294; R = 0.60 (0.44–0.80); pre-trend 740 → 763 vs treated 843 → 716. - pure not-yet pool, placebo brk_sec: R = 1.45 (1.01–2.10). The placebo shows an effect, so by the rule in the body the primary result is treated as confounded. Published wording: no answer yet. The page reports the raw fall at the treated points, both comparisons, and why neither passes.