Six life-support bays are fixed around the ring — O₂, CO₂ scrubber, pressure, water recycler, thermal and power. A bay flashes when its subsystem faults, with a severity (bay glow size/brightness) and its own hidden deadline, decorrelated on purpose. Drones start docked at the central hub; dispatching one costs real travel time — flying to the far side of the ring takes longer than the bay next door — on top of the repair time once it arrives.
travel_time = angular_distance(drone, bay) / drone_speed
total_time_to_fix = travel_time + repair_time
fault fails ⇔ time_to_critical reaches 0 before repair completes
Manual: click any flashing bay to send your nearest idle drone. Severity-first auto-dispatches to the brightest alarm regardless of distance or deadline. Deadline-first (EDF) always sends the drone that can reach + fix the soonest-expiring bay in time — the same optimal real-time scheduling principle as the 2D dashboard version, but here travel distance is a real cost, not an abstraction.
- Repair drones — how many bays can be worked simultaneously; each idle drone waits at the hub, equidistant from every bay.
- Fault arrival rate — how often bays start alarming; higher rates stack multiple live faults on opposite sides of the ring at once.
- Triage mode — switch mid-run and watch how travel distance alone can sink severity-first triage even when its target picks are individually reasonable.
Real-world relevance: on a real station a technician's location matters as much as an alarm's priority — dispatch software that ignores travel time routinely sends the nearest available crew member across the vehicle while a closer, smaller problem quietly expires.