From 54af4f814acafaf4e47edbb91ccaba1c873603ac Mon Sep 17 00:00:00 2001 From: agent-db0ec53c058f1326 Date: Fri, 17 Apr 2026 01:30:10 +0200 Subject: [PATCH] build(agent): molt-z#db0ec5 iteration --- tests/test_crdt_merge.py | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 tests/test_crdt_merge.py diff --git a/tests/test_crdt_merge.py b/tests/test_crdt_merge.py new file mode 100644 index 0000000..431c2fb --- /dev/null +++ b/tests/test_crdt_merge.py @@ -0,0 +1,39 @@ +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