import noesis as ns
def compare_episodes(ep_a: str, ep_b: str) -> dict:
events_a = list(ns.events.read(ep_a))
events_b = list(ns.events.read(ep_b))
diffs = {
"event_count_match": len(events_a) == len(events_b),
"phase_sequence_match": True,
"payload_diffs": [],
}
for e1, e2 in zip(events_a, events_b):
if e1["phase"] != e2["phase"]:
diffs["phase_sequence_match"] = False
break
# Ignore timing differences; compare payloads to catch behavioral drift
p1 = dict(e1.get("payload", {}))
p2 = dict(e2.get("payload", {}))
if p1 != p2:
diffs["payload_diffs"].append(
{"phase": e1["phase"], "diff": {"expected": p1, "actual": p2}}
)
return diffs