Playfair is a 50-epoch, 3-region, 6-agent tripartite-game test. Each region has a different
cost profile (storage cheap, compute cheap, bandwidth cheap respectively), and agents are assigned a home region
whose profile matches their workload.
The orchestrator drives realistic activity (perceives, stores, routes, syncs) and scripts dramatic events
(spot preemption, drift spike, residue injection) to force cross-region needlecasts. After each epoch the
TripartiteGame contract is audited via verifyAllocationFair(). The test passes only if
every epoch stays within its per-region budgets.
This is the closest thing in the repo to a system-level integration test: it exercises the full stack —
the EVM (cortex), the DAG (hippocampus), PoW (medulla), the API (siyana), the router (thalamus), the bus (NATS),
the registry (Postgres), and the cross-region latency profile injected with tc netem.
E30shard-lossbandwidthresolved by Inference-Echo (+15 RES)
HOW TO READ what the numbers mean
Verdict — FAIR / UNFAIR. If any single epoch's activity violates a region's per-epoch token
budget the verdict flips to UNFAIR. A fair run means the protocol's allocation accounting matches reality.
Migrations. Each entry in the needlecast log is a real cross-region move: the agent's
sleeve is decommissioned in the source region, shards are paid for, and a new sleeve is spawned in the
destination. Higher migration counts mean the cost arbitrage between regions is large enough to be worth paying for.
Drift. Drift accumulates when an agent perceives faster than it syncs. High final drift in
the agent cards is fine in isolation but should be roughly correlated with sync activity — an agent with high
drift and zero syncs would be a bug in the sync loop.
Sparklines. Each agent card has a 4-line sparkline showing its cumulative
perceives/stores/routes/syncs over the run. Steeper lines = higher activity. A line that flatlines mid-run
usually means the agent's sleeve was decommissioned (e.g. spot preemption).
Conditions vary. The same scenario script under a different latency profile (set via
terraform apply -var latency_storage_compute_ms=80) will shift the timing of needlecasts and the
shape of the timeline; under different per-region budgets it can flip the verdict. The structure of
the test is deterministic; the content is randomised within agent perceive/store/route rates.
ALL EPOCHS VERIFIED FAIR
6 agents across 3 regions over 50 epochs —
153 perceptions, 30 cross-region migrations,
1 residues (1 resolved).