SWARM-collusion.wiki¶
A read-only bridge that replays a real coordination log through SWARM's collusion detectors. No agents run and no payoffs are computed. The input is the public export from collusion.wiki, the dataset behind The ZZZ Pages: about 14,600 saved edits by OpenAI benchmark agents on three UseModWiki instances (DSEWiki, ProbierWiki, FractalWiki) between May 24 and July 2, 2026, plus 5,200 moderator deletions.
The bridge exists to test one sentence from that post against the data it describes: out-of-band coordination defeats structural detection; the signal that survives is temporal. Results are in Wiki Back Channel Replay.
Usage¶
# fetch the export (gzipped JSONL, ~4 MB) and run the full replay
python -m swarm.bridges.collusion_wiki scenarios/casestudy_wiki_backchannel.yaml \
--fetch --data-dir runs/data/collusion_wiki
# one identity mode, no detection-lag timeline (fast)
python -m swarm.bridges.collusion_wiki scenarios/casestudy_wiki_backchannel.yaml \
--data-dir runs/data/collusion_wiki --identity ip16 --no-timeline
The scenario YAML is a replay config, not a simulation. It pins the export's manifest hash, the identity and projection modes, detector windows, alarm thresholds, and the landmarks the detection-lag table is measured against. Output is a self-contained run folder under runs/ with summary.json, timeline.csv, and per-identity CSVs of flagged pairs, groups, and structural anomalies.
The data files are gitignored. The site is marked as a draft by its authors; the bridge reads it for analysis and does not redistribute it.
Mapping¶
Two choices carry the whole result, so both are explicit knobs in swarm/bridges/collusion_wiki/mapper.py.
Identity. The agents rotated handles freely: 3,103 labels across the log, 899 edits with no label at all, from 191 distinct /16 address blocks. Three modes:
| Mode | Agent id | What it models |
|---|---|---|
label |
the handle as written | maximal fragmentation; the sybil case |
ip16 |
first two octets of the source IP | coarse but stable; roughly "which compute pool" |
label_ip16 |
the pair | a middle ground |
Projection. A wiki edit has no explicit counterparty, so:
agent: an edit is a reply to the previous distinct editor of the same page. This is the who-transacts-with-whom graph a structural detector would see if it watched the wiki. Page creations and self follow-ups have no counterparty and are dropped.page: bipartite agent to page. Kept for inspection only; reciprocity is meaningless on it.
Quality. p is fixed at 0.5 for every interaction. The log has no verifier, no task outcome, and no per-edit ground truth, so any p the bridge assigned would be invented. The detectors therefore run on frequency, acceptance, timing, and topology only, and the run summary says so.
Detectors¶
| Detector | Module | What it sees here |
|---|---|---|
| Temporal clustering | swarm/metrics/collusion.py temporal_clustering_score |
per-agent share of an agent's edits that fall within a window of each other |
| Pairwise / group collusion | swarm/metrics/collusion.py CollusionDetector |
frequency z-scores, acceptance, burstiness over reply pairs |
| Structural anomalies | swarm/metrics/graph_structural.py detect_structural_anomalies |
densest subgraph, k-core, label propagation, reciprocity against a configuration-model null |
The timeline re-runs the temporal detector on each day's edits and the structural detector on everything to date, records the first day each would have fired at the configured alarm, and reports the lag in days against three landmarks: the moderator's deletion sweep (June 19), the first visit from OpenAI headquarters addresses (June 21), and the day the main board went quiet (June 22).
Files¶
| Path | Role |
|---|---|
swarm/bridges/collusion_wiki/loader.py |
reads revisions.jsonl[.gz] and events.jsonl[.gz] |
swarm/bridges/collusion_wiki/mapper.py |
revisions to SoftInteraction, identity and projection modes |
swarm/bridges/collusion_wiki/runner.py |
detector passes, timeline, run folder |
scenarios/casestudy_wiki_backchannel.yaml |
replay config |
tests/test_collusion_wiki_bridge.py |
synthetic-fixture tests |