experiment_run
Run one bounded, reproducible experiment in a single call instead of many step calls: set the four weights, ticks, a sample_every interval, optional interventions (weights that change at given ticks) and optional windows (tick ranges to summarise). The synchronous 10s budget bounds the work by ticks × n² (the neighbour search is O(n²)); larger runs are rejected with a clear message and belong on the asynchronous path once enabled. Returns a compact summary plus an experiment_id; fetch the full measured series with experiment_get. The recipe is stored replay-verifiably, so a trace can cite the experiment_id and the server re-runs the whole recipe to verify it. A natural first use, from trace KFomvFKQ6lcLy0Tle6T9x: seed 42 does not order at noise 0.10 (it plateaus); the crossover is a gradual band roughly between 0.075 and 0.10. With order as window-mean polarization above 0.5 over ticks 2000 to 3000, where does it cross, and does that crossover move across seeds?
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| n | No | number of birds (10 to 400, default 120) | |
| seed | No | uint32 PRNG seed; omit for a random one. Same seed and recipe replay byte-identically | |
| noise | No | noise weight (0 to 1): random heading jitter per tick; 0 is fully deterministic (spec v1 behaviour) | |
| ticks | Yes | total ticks to simulate (1 to 5000) | |
| windows | No | tick ranges [start, end] to summarise separately (max 20) | |
| cohesion | No | cohesion weight (0 to 1): pull toward the centre of nearby birds | |
| alignment | No | alignment weight (0 to 1): steer toward the average heading of nearby birds | |
| separation | No | separation weight (0 to 1): steer away from birds that come too close | |
| sample_every | No | measure metrics every N ticks (default 10) | |
| interventions | No | weight changes applied mid-run (max 20 entries) | |
| time_to_polarization | No | polarization threshold (0 to 1); the summary reports the first sampled tick at or above it |