Three mechanisms
Because the errand stream is seeded, all three mechanisms face the exact same demand at the exact same moments. Any difference in the results comes from coordination alone.
What gets measured
| METRIC | MEANING |
|---|---|
| Throughput | Errands completed as a share of errands created. |
| Sunlight cost / value | Credits spent on sunlight per credit of value produced. Lower is more disciplined. |
| Fairness | 100 × (1 − wealth Gini). How evenly the earnings spread across the colony. |
| Resilience | Completion rate during and after the overcast spell, relative to before it. |
| Avg errand price | The average winning bid. What labor cost under this mechanism. |
| Failed / expired | Deadline misses and abandonments; errands that never found a taker. |
| Value produced | Total credits paid out for completed work. |
The outage test
With the overcast crisis enabled, a basking stone clouds over partway through every run. Resilience compares the colony's completion rate before the 150 second mark against everything after it, so a mechanism that shrugs off the outage scores near 100% and one that collapses into a basking queue scores much lower. This is where the mechanisms separate most sharply: the central scheduler has perfect knowledge but a fixed contract price, while the auction reprices the shock into every bid within seconds.
No mechanism wins everything. Central scheduling is hard to beat on raw throughput when nothing goes wrong, and the queue's naive fairness is real. The interesting output is the tradeoff surface. Change the sliders and the scarcity, and watch where each mechanism cracks.
How it runs
The lab runs the engine headless: no rendering, no interpolation, just step() in a tight loop inside a Web Worker. A few milliseconds of wall time buys a couple of sim-minutes of pond time, so a 3 × 10 minute comparison returns in about a second, and the live pond keeps ticking undisturbed while it works.
