import time from nova_plan.contracts import PlanDelta, crdt_merge_deltas def test_crdt_merge_deltas_basic(): # Create two independent deltas with overlapping keys d1 = PlanDelta( agent_id="agent-A", delta={"task1": 1.0, "task2": 2.0}, timestamp=time.time(), parent_version=1, sequence=1, contract_id="c1", signature=None, ) time.sleep(0.001) d2 = PlanDelta( agent_id="agent-B", delta={"task3": 3.0, "task2": 2.5}, # note overlapping key 'task2' timestamp=time.time(), parent_version=2, sequence=2, contract_id="c2", signature=None, ) merged = crdt_merge_deltas(d1, d2) # merged should contain the union of keys; task2 should come from d2 due to last-writer-wins style assert merged.delta["task1"] == 1.0 assert merged.delta["task3"] == 3.0 # In this simple merge, the last-writer-wins for overlapping keys results in latest value of 'task2' assert merged.delta["task2"] == 2.5 # timestamp should be the max of both assert merged.timestamp >= d1.timestamp and merged.timestamp >= d2.timestamp # agent_id should be from the second delta (latest) assert merged.agent_id == d2.agent_id