Files
Shadowbroker/scripts/verify_swarm_v1.py
T
BigBodyCobain 89d6bb8fb9 Ship DM connect delivery, fleet pubkey lookup, OpenClaw Infonet agent, and relay auto-wormhole.
Auto-relay connect DMs with End Contact severing, signed fleet prekey lookup,
OpenClaw private Infonet channel intents, headless relay Tor bootstrap on redeploy,
and swarm/DM live verification scripts.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-12 02:15:56 -06:00

136 lines
4.9 KiB
Python

#!/usr/bin/env python3
"""Verify v1 Infonet swarm: fleet join, manifest peers, optional gate propagation."""
from __future__ import annotations
import json
import os
import subprocess
import sys
import time
import urllib.error
import urllib.request
API = os.environ.get("SHADOWBROKER_API", "http://127.0.0.1:8000").strip().rstrip("/")
MARKER = os.environ.get("SWARM_VERIFY_MARKER", f"SWARM-V1-{int(time.time())}")
def http_json(method: str, path: str, body: dict | None = None, *, timeout: int = 180) -> dict:
data = None
headers = {"Content-Type": "application/json"}
if body is not None:
data = json.dumps(body, separators=(",", ":"), sort_keys=True).encode("utf-8")
req = urllib.request.Request(f"{API}{path}", data=data, headers=headers, method=method.upper())
try:
with urllib.request.urlopen(req, timeout=timeout) as resp:
return json.loads(resp.read().decode("utf-8"))
except urllib.error.HTTPError as exc:
detail = exc.read().decode("utf-8", errors="replace")
raise RuntimeError(f"{method} {path} -> {exc.code}: {detail}") from exc
def docker_python(code: str) -> str:
proc = subprocess.run(
["docker", "exec", "shadowbroker-backend", "python", "-c", code],
capture_output=True,
text=True,
timeout=300,
check=False,
)
if proc.returncode != 0:
raise RuntimeError(proc.stderr.strip() or proc.stdout.strip() or "docker exec failed")
return proc.stdout.strip()
def step_ghcr_fleet_join() -> None:
out = docker_python(
"import json; "
"from services.mesh.mesh_fleet_defaults import infonet_fleet_join_enabled, FLEET_SEED_ONION_URL; "
"print(json.dumps({'fleet_join': infonet_fleet_join_enabled(), 'seed': FLEET_SEED_ONION_URL}))"
)
payload = json.loads(out)
if not payload.get("fleet_join"):
raise RuntimeError(f"fleet join disabled in container: {payload}")
if not str(payload.get("seed") or "").endswith(".onion:8000"):
raise RuntimeError(f"unexpected fleet seed: {payload}")
print("PASS: container has fleet join defaults")
def step_enable_node_and_join() -> dict:
code = r"""
import json
import main as main_mod
from services.mesh.mesh_swarm_runtime import (
announce_local_peer_to_seeds,
refresh_swarm_manifest_from_seeds,
)
main_mod._set_participant_node_enabled(True)
announce = announce_local_peer_to_seeds(force=True)
manifest = refresh_swarm_manifest_from_seeds(force=True)
print(json.dumps({
'ok': bool(announce.get('ok')) or bool(manifest.get('ok')),
'announce': announce,
'manifest_pull': manifest,
}))
"""
join = json.loads(docker_python(code))
print("swarm/join:", json.dumps(join, indent=2)[:4000])
if not join.get("ok"):
raise RuntimeError(f"swarm join failed: {join}")
manifest = join.get("manifest_pull") or {}
peer_count = int(manifest.get("merged_peer_count") or manifest.get("peer_count") or 0)
if peer_count < 1:
raise RuntimeError(f"manifest has no peers: {join}")
print(f"PASS: swarm join ok ({peer_count} manifest peer(s))")
return join
def step_manifest_lists_pete(join: dict) -> None:
manifest = join.get("manifest_pull") or {}
peer_count = int(manifest.get("merged_peer_count") or manifest.get("peer_count") or 0)
if peer_count < 2:
raise RuntimeError(f"expected fleet manifest with seed + participants, got: {manifest}")
code = r"""
import json
from services.mesh.mesh_router import authenticated_push_peer_urls
print(json.dumps({'push_peers': authenticated_push_peer_urls()[:12]}))
"""
payload = json.loads(docker_python(code))
push_peers = [p for p in payload.get("push_peers") or [] if p]
onion_peers = [p for p in push_peers if ".onion" in p]
print("sync peer store:", json.dumps(payload, indent=2))
if not onion_peers:
raise RuntimeError(f"expected onion peers in local sync store after manifest pull, got: {push_peers}")
print("PASS: manifest pull populated onion fleet peer(s)")
def step_gate_propagation() -> None:
try:
subprocess.run(
[sys.executable, os.path.join(os.path.dirname(__file__), "e2e_openclaw_infonet_agent_live.py")],
env={**os.environ, "E2E_MARKER": MARKER, "SHADOWBROKER_API": API},
check=True,
timeout=600,
)
print("PASS: gate event propagated across fleet")
except subprocess.CalledProcessError as exc:
raise RuntimeError(f"gate propagation check failed (exit {exc.returncode})") from exc
except FileNotFoundError:
print("SKIP: e2e_openclaw_infonet_agent_live.py not available")
def main() -> int:
print(f"Swarm v1 verify against {API}")
step_ghcr_fleet_join()
join = step_enable_node_and_join()
step_manifest_lists_pete(join)
if os.environ.get("SWARM_VERIFY_SKIP_PROPAGATION") != "1":
step_gate_propagation()
print("ALL SWARM V1 CHECKS PASSED")
return 0
if __name__ == "__main__":
raise SystemExit(main())