def budget(rows, component_yields, downtime_h):
    if len({row["modality"] for row in rows}) != 1 or any(row["unit"] != "W" for row in rows):
        raise ValueError("mixed modality or thermal units")
    if not 0 <= downtime_h <= 24:
        raise ValueError("invalid daily downtime")
    margins = {row["stage"]:row["capacity"] - row["demand"] for row in rows}
    system_yield = 1.0
    for value in component_yields:
        system_yield *= value
    return {"margins_W":margins, "channels":sum(row["channels"] for row in rows), "yield":system_yield, "duty":(24 - downtime_h) / 24, "bottleneck":min(margins, key=margins.get)}
rows = [{"stage":"4K","demand":1.2,"capacity":1.5,"channels":100,"unit":"W","modality":"synthetic-SC"}, {"stage":"100mK","demand":.018,"capacity":.020,"channels":40,"unit":"W","modality":"synthetic-SC"}, {"stage":"10mK","demand":.00035,"capacity":.0004,"channels":20,"unit":"W","modality":"synthetic-SC"}]
baseline = budget(rows, [.98] * 50, 4)
boundary = budget(rows, [1.0] * 50, 24)
counterfactual = budget([{**row, "demand":.00045} if row["stage"] == "10mK" else row for row in rows], [.98] * 50, 4)
try:
    budget([rows[0], {**rows[1], "modality":"synthetic-ion"}], [.98], 4)
    raise AssertionError("modalities merged")
except ValueError:
    rejected = True
assert abs(baseline["yield"] - .98 ** 50) < 1e-15 and baseline["duty"] == 5/6 and baseline["channels"] == 160
assert min(baseline["margins_W"].values()) > 0 and counterfactual["margins_W"]["10mK"] < 0
assert boundary["yield"] == 1.0 and boundary["duty"] == 0 and rejected
print(f"PASS: 62 infrastructure evidence bottleneck={baseline['bottleneck']} yield={baseline['yield']:.4f} duty={baseline['duty']:.4f} overloaded_margin={counterfactual['margins_W']['10mK']:.6f}W")
