REQUIRED = {"operation", "duration", "unit", "fidelity", "protocol", "source", "date", "device"}
def validate(row):
    if REQUIRED - row.keys() or row["unit"] != "s" or not 0 <= row["fidelity"] <= 1:
        raise ValueError("incomplete or invalid metric")
    return row
def duration(rows):
    return sum(validate(row)["duration"] for row in rows)
def comparable(left, right):
    validate(left); validate(right)
    return all(left[key] == right[key] for key in ("operation", "protocol", "device"))
gate = {"operation":"one-qubit", "duration":20e-9, "unit":"s", "fidelity":.999, "protocol":"RB", "source":"synthetic", "date":"2026-01-01", "device":"A"}
readout = {"operation":"readout", "duration":700e-9, "unit":"s", "fidelity":.97, "protocol":"assignment", "source":"synthetic", "date":"2026-01-01", "device":"A"}
baseline = duration([gate, readout])
counterfactual = duration([gate, {**readout, "duration":300e-9}])
unlike = comparable(gate, {**gate, "device":"B"})
try:
    validate({key:value for key, value in gate.items() if key != "operation"})
    raise AssertionError("undefined fidelity accepted")
except ValueError:
    rejected = True
assert abs(baseline - 720e-9) < 1e-18 and counterfactual < baseline
assert unlike is False and rejected and gate["protocol"] != readout["protocol"]
print(f"PASS: 55 transmon evidence schedule={baseline*1e9:.0f}ns faster_readout={counterfactual*1e9:.0f}ns cross_device={unlike}")
