| |
| """Shim — Sovereign Lattice Mesh Merkle sync (see stack/merkle_sync.py).""" |
|
|
| from __future__ import annotations |
|
|
| import sys |
| from pathlib import Path |
|
|
| ROOT = Path(__file__).resolve().parents[1] |
| sys.path.insert(0, str(ROOT / "stack")) |
|
|
| from merkle_sync import LygoMerkleTree, merge_peer_badges, missing_badge_ids, sync_round |
|
|
| __all__ = ["LygoMerkleTree", "merge_peer_badges", "missing_badge_ids", "sync_round"] |
|
|
| if __name__ == "__main__": |
| import json |
| import time |
|
|
| print("[*] TEST: Anti-Entropy Sync Protocol") |
| node_a = { |
| "node_001": {"alignment": "ALIGNED", "p0_hash": "golden", "version": "v1.0", "timestamp": time.time()}, |
| "node_002": {"alignment": "ALIGNED", "p0_hash": "golden", "version": "v1.0", "timestamp": time.time()}, |
| } |
| node_b = dict(node_a) |
| node_b["node_003"] = {"alignment": "ALIGNED", "p0_hash": "golden", "version": "v1.0", "timestamp": time.time()} |
| ta, tb = LygoMerkleTree(), LygoMerkleTree() |
| ra, rb = ta.rebuild_tree(node_a), tb.rebuild_tree(node_b) |
| print(f"[>] Root A: {ra[:16]}… Root B: {rb[:16]}…") |
| if ra != rb: |
| print("[!] Divergence — sync payload:") |
| print(json.dumps(tb.generate_sync_payload(1, 1), indent=2)) |
| merged, fetched = sync_round(node_a, node_b) |
| tc = LygoMerkleTree() |
| rc = tc.rebuild_tree(merged) |
| print(f"[+] Merged root: {rc[:16]}… fetched={fetched}") |
| raise SystemExit(0 if ra != rb and "node_003" in merged else 1) |