RUNGS = {1:{"signal","alternative","control"}, 2:{"signal","alternative","control","replication"}, 3:{"signal","alternative","control","replication","encoding","initialize","readout"}, 4:{"signal","alternative","control","replication","encoding","initialize","readout","gate","error"}}
def highest(packet, current=False):
    if current and not {"source", "date"} <= packet.keys():
        raise ValueError("current claim lacks primary source/date")
    return max([0] + [rung for rung, fields in RUNGS.items() if fields <= packet.keys()])
def authorize(packet, claim):
    rung = highest(packet)
    if claim == "logical operation" and rung < 4:
        raise ValueError("operation exceeds evidence")
    return claim, rung
packet = {"signal":1,"alternative":"disorder","control":"field sweep","replication":2,"simulation":"roadmap","source":"primary-X","date":"2026-01-01"}
baseline = highest(packet, current=True)
counterfactual = highest({**packet, "encoding":1,"initialize":1,"readout":1,"gate":1,"error":.01}, current=True)
try:
    authorize(packet, "logical operation")
    raise AssertionError("signal promoted to operation")
except ValueError:
    blocked = True
try:
    highest({key:value for key, value in packet.items() if key == "signal"}, current=True)
    raise AssertionError("undated current claim accepted")
except ValueError:
    undated_rejected = True
assert baseline == 2 and counterfactual == 4
assert blocked and undated_rejected
print(f"PASS: 61 evidence ladder signal_rung={baseline} operation_rung={counterfactual} promotion_blocked={blocked} undated_rejected={undated_rejected}")
