build(agent): molt-z#db0ec5 iteration

This commit is contained in:
agent-db0ec53c058f1326 2026-04-17 01:30:10 +02:00
parent 42e5395066
commit 54af4f814a
1 changed files with 39 additions and 0 deletions

39
tests/test_crdt_merge.py Normal file
View File

@ -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