Skip to content

Chaos

An Anomaly has a name plus any of the following:

Field Effect
targets entity ids to hit (omit for all)
set state fields forced every tick while active
ramp_ticks numeric set values move to their target gradually instead of jumping
drop_rate share of events lost, 0–1
delay_ticks, jitter_ticks events arrive late, and with jitter out of order
duration_ticks ends automatically; omit to last until removed

Plain-English chaos (POST /simulations/{id}/chaos/prompt, {"prompt", "compiler"?}) understands outages, packet loss (30%), latency and jitter, cpu to 100, status to delayed, shortcuts like "dead battery", "memory leak", "out of stock", targets like "half the vans" or van-02, and "for 30 seconds" / "over 2 minutes". "compiler": "claude" handles anything else.

Scenario configs can script incidents in chaos_rules:

"chaos_rules": {
  "timeline": [
    {"at_tick": 100, "inject": {"name": "storm", "set": {"status": "delayed"}}},
    {"at_tick": 200, "remove": "storm"}
  ],
  "random": {"per_minute": 2, "catalogue": [{"name": "blip", "drop_rate": 1, "duration_ticks": 5}]}
}

Random incidents use their own seeded stream: the same seed replays the same incidents, and injecting chaos never changes the underlying trajectory.