Skip to content
The research release

The evidence: 27 genuine screenshots from the audit

14 are sumo-gui screenshots of the running simulation, taken over TraCI during held-out trials on seed 95000. Each comes from one of eight GUI runs whose signal sequence and mean time loss equal those of the headless trial with the same scenario, arm and seed, so each picture shows the experiment that is reported. 13 are audit-dashboard renderings of recorded result files.

None is drawn, edited, cropped or composited. Cards show a resized copy for speed; every original PNG is linked and is byte-identical to the audit’s file. 27 of 27 originals matched the SHA-256 in the audit’s evidence manifest when this page was built. Captions, claims and limitations are the manifest’s own; six planned captions that did not match the captured state were corrected from the recorded data before release.

Reading the simulator images: thin red, yellow and green lines at the stop lines are the signal states SUMO is showing; cyan bars just past junctions are the lane-area detectors the harness uses to measure spillback; the ambulance is white with a cross, the fire engine red, the police car blue, ordinary cars yellow. An image shows the state one simulation step after the capture call.

Pilot scope: offline, shadow-only research. No connection to live public traffic signals.

Showing 27 of 27

Network and testbed

The 36-junction grid as the simulator drew it, and the validation of its topology.

  • city36, all 36 signalised junctions (C00-C55), VECTOR controlling every one, t=301 s

    sumo-gui screenshot · scenario A · arm vector · seed 95000 · t = 301 s

    What it shows
    the evaluated network is the 36-junction grid, under live control
    What it does not establish
    an image shows layout and traffic; junction count is proven by topology_report.json
    Original 1590×963 PNG

    sha256 5707b9171dbdc312… · verified

  • Topology validation of city36: 36 signal-controlled intersections, gate A

    dashboard rendering of recorded results

    What it shows
    the executed network has 36 connected signal-controlled intersections, validated from the SUMO network files
    What it does not establish
    a synthetic 6x6 grid, not a real city; validation is structural (junctions, links, programmes), not behavioural
    Original 1500×1000 PNG

    sha256 d3f8ab9ab508884a… · verified

  • reference scenario R0 at 601 s under SUMO's native actuated baseline: the traffic state with no VECTOR and no event

    sumo-gui screenshot · scenario R0 · arm native_actuated · seed 95000 · t = 601 s

    What it shows
    the baseline network state before any intervention or disturbance
    What it does not establish
    one instant of one seed
    Original 1590×963 PNG

    sha256 9a75291eec5848fc… · verified

Controller behaviour

Individual decisions, a corridor of independent decisions, and one control cycle traced end to end.

  • C21 at its first commanded change after 1200 s: after clearance VECTOR gives EW green to 3 halting vehicles (VEHICLE_DEMAND); C11, left, is in all-red after ending EW green on gap-out

    sumo-gui screenshot · scenario A · arm vector · seed 95000 · t = 1201 s

    What it shows
    a VECTOR decision was executed by SUMO (commanded = reported state, checked each step)
    What it does not establish
    the reason is in the decision record beside the image, not in the image
    Original 1590×963 PNG

    sha256 d690b5bf344b0d43… · verified

  • row-1 corridor, same instant: six junctions, six independent decisions

    sumo-gui screenshot · scenario A · arm vector · seed 95000 · t = 1211 s

    What it shows
    each corridor junction responds to its own queues
    What it does not establish
    there is NO coordination mechanism (no offsets, no shared state); this shows its absence, not coordination
    Original 1590×963 PNG

    sha256 ee081fd837e930f8… · verified

  • One control cycle end to end at C21, t=1200 s, scenario A: measurement, sensor, observer, law, adapter, SUMO, shadow

    dashboard rendering of recorded results · scenario A · arm vector · seed 95000 · t = 1200 s

    What it shows
    the live path is SUMO -> observer -> decide_signals -> SignalAdapter -> SUMO; the shadow has no path to the decision
    What it does not establish
    a single decision record; that the shadow has no influence is proven by the paired signal-sequence check, not by this image
    Original 1500×1000 PNG

    sha256 141d5874a1ff9bf8… · verified

Congestion and downstream blockages

Surges, capacity cuts and blocked exits — including the clearest picture of where VECTOR fails.

  • the same corridor, same seed and surge, under SUMO's native actuated baseline

    sumo-gui screenshot · scenario A · arm native_actuated · seed 95000 · t = 1201 s

    What it shows
    the baseline faces identical demand at the same instant
    What it does not establish
    one instant of one seed; the comparison is in the metrics, not in two pictures
    Original 1590×963 PNG

    sha256 e38b744a138a1b53… · verified

  • row-1 corridor at 1201 s, during the x4 surge from W1 and E1 (600-1500 s): the queue is concentrated at the western entry C01 (52 halting on EW); the downstream corridor junctions hold 0-3

    sumo-gui screenshot · scenario A · arm vector · seed 95000 · t = 1201 s

    What it shows
    the surge congests the corridor entry, and VECTOR's input there is the halting count
    What it does not establish
    VECTOR has no congestion detector; 'detection' here is the halting count it is shown
    Original 1590×963 PNG

    sha256 d690b5bf344b0d43… · verified

  • capacity reduction on C12->C13 (column-1 arterial northbound), 1001 s: a vehicle stalled at C13's stop line in lane 0 since 700 s, speed limit 30% on the link; traffic passes in lane 1

    sumo-gui screenshot · scenario F · arm vector · seed 95000 · t = 1001 s

    What it shows
    the incident removes one of two lanes at C13's northbound stop line
    What it does not establish
    VECTOR is not told of the incident; it sees only queues (the stalled vehicle is excluded from the count it is shown)
    Original 1590×963 PNG

    sha256 cadee3ee103686b5… · verified

  • the same view at 1401 s: lane 0 still blocked, traffic still on its assigned route

    sumo-gui screenshot · scenario F · arm vector · seed 95000 · t = 1401 s

    What it shows
    no vehicle was rerouted (route changes 0 across every run)
    What it does not establish
    documents the ABSENCE of rerouting; there is no rerouting module in the SUMO path
    Original 1590×963 PNG

    sha256 4fb9dc94d7dbc94c… · verified

  • C41 at 1291 s, scenario I: both lanes of the C31->C41 approach blocked by vehicles stalled at the stop line since 641/662 s; VECTOR has held EW green for 43 s on a 32-vehicle queue that cannot move (it ends at max green, 45 s, and is re-served)

    sumo-gui screenshot · scenario I · arm vector · seed 95000 · t = 1291 s

    What it shows
    VECTOR's law serves a queue that cannot discharge: halting count is its only demand signal (the mechanism of section 5.2)
    What it does not establish
    one junction, one instant; the decision sequence is in the trace (E27) and the aggregate in ineffective green (S18)
    Original 1590×963 PNG

    sha256 dc41e4ba6740e197… · verified

  • combined stress at 1041 s: row-1 surge, C31->C41 blocked, ambulance and fire engine en route, a capacity cut due at 1100 s

    sumo-gui screenshot · scenario O · arm vector · seed 95000 · t = 1041 s

    What it shows
    VECTOR ran the whole network under simultaneous stresses
    What it does not establish
    the effect of VECTOR, if any, is in the paired metrics
    Original 1590×963 PNG

    sha256 485c39939a69215c… · verified

  • end of the combined stress run (2691 s): demand stopped at 2100 s, yet 601 vehicles are still in the network (569 halting at approaches); it did not drain

    sumo-gui screenshot · scenario O · arm vector · seed 95000 · t = 2691 s

    What it shows
    under combined stress VECTOR leaves a residual queue at the end of the run
    What it does not establish
    final metrics are in the results tables
    Original 1590×963 PNG

    sha256 3c31c958b8f865bf… · verified

  • Scenario I, junction C41, 1243-1320 s: every decision while both lanes of the C31->C41 approach are blocked at the stop line

    dashboard rendering of recorded results · scenario I · arm vector · seed 95000 · t = 1243 s

    What it shows
    VECTOR serves EW green to max green (45 s) on a 29-34 vehicle queue that does not discharge, then re-serves EW after clearance; its reason string labels the queue 'discharging'
    What it does not establish
    one junction, one seed; the aggregate is ineffective green (S18) and the cross-cell correlation in DIAGNOSIS.md D4
    Original 1500×1925 PNG

    sha256 19b9176ddc0358b6… · verified

Emergency-vehicle scenarios

Ambulances, fire engines and police cars, including the saturated scenario where priority did not get the police car through.

  • ambulance amb1 (white, eastbound on row 1) approaching C21; the decision record beside it shows whether VECTOR gave its approach priority

    sumo-gui screenshot · scenario C · arm vector · seed 95000 · t = 947 s

    What it shows
    VECTOR's emergency rule acts on an ambulance it is shown
    What it does not establish
    detection is ideal (simulator ground truth, confidence 0.95); vehicles do not yield
    Original 1590×963 PNG

    sha256 0dbd4c40bcafc2aa… · verified

  • fire engine fire1 (red, northbound on column 2) after the C21 conflict, approaching C22

    sumo-gui screenshot · scenario D · arm vector · seed 95000 · t = 960 s

    What it shows
    the fire engine is handled by the same emergency rule
    What it does not establish
    one vehicle at one instant; its full journey is in the EV table
    Original 1590×963 PNG

    sha256 d19491dfb6a859d4… · verified

  • C21 as the ambulance (EW) and the fire engine (NS) converge on conflicting approaches

    sumo-gui screenshot · scenario D · arm vector · seed 95000 · t = 938 s

    What it shows
    competing requests at one junction: the record shows which approach was served
    What it does not establish
    VECTOR's input admits ONE emergency per junction; the harness reports the most recently dispatched one, so the other gets no priority
    Original 1590×963 PNG

    sha256 0b3131306852c7fc… · verified

  • Scenario E, seed 95000: ambulance, fire engine and police in every arm

    dashboard rendering of recorded results · scenario E · seed 95000

    What it shows
    VECTOR's emergency override gives the shortest trip for all three emergency vehicles, against every baseline, on this seed and in the 10-seed means
    What it does not establish
    ideal detection from simulator ground truth; ordinary vehicles do not yield; one seed shown, the 10-seed result is in emergency.json
    Original 1500×1000 PNG

    sha256 2ebc273701da36ca… · verified

  • Scenario K, seed 95000: three emergency vehicles in a saturated network

    dashboard rendering of recorded results · scenario K · seed 95000

    What it shows
    under saturation the override does not guarantee arrival: on this seed the police car (pol1, E4->W1) is still in the network at the end under VECTOR, vehicle-actuated and fixed-time control; only the native programme gets it through (over 10 seeds: VECTOR 5/10, native 7/10, vehicle-actuated 0/10, fixed 2/10)
    What it does not establish
    one seed shown; arrival counts over 10 seeds are in emergency.json
    Original 1500×1000 PNG

    sha256 4cb54e8ca439002a… · verified

Sensor corruption and adversarial conditions

What VECTOR was shown when the observations were noisy, stale, swapped or invalid.

  • Scenario G, junction C00 (congested corner), t 1688-1726 s: true queue, what the sensor model showed VECTOR, the QueueObserver belief and the decision

    dashboard rendering of recorded results · scenario G · arm vector · seed 95000 · t = 1688 s

    What it shows
    VECTOR decided on corrupted observations (noise, dropouts, phantom spikes); the observer clamps impossible jumps
    What it does not establish
    the sensor model is the audit's own simple model (Gaussian noise, Bernoulli dropout, spikes), not a real detector's failure physics
    Original 1500×1000 PNG

    sha256 418fe6a5392029f9… · verified

  • Scenario L, junction C44 (approaches swapped), t 1134-1172 s: stale (10 s delayed), contradictory, dropped and invalid observations

    dashboard rendering of recorded results · scenario L · arm vector · seed 95000 · t = 1134 s

    What it shows
    VECTOR acts on contradictory input without detecting it: at C44, 32-42 vehicles queue on EW while the swapped, 10 s-delayed view shows them on NS; VECTOR extends NS green until max green ends it, then serves NS again
    What it does not establish
    the corruption is the audit's model; the ExtremisCanonical adapter drops the stale flag, so VECTOR cannot see it; one junction, one window
    Original 1500×1000 PNG

    sha256 1b92b662602c82e3… · verified

Results and performance comparisons

Recorded results rendered by the audit dashboard: the primary comparison, the secondary one, and forecast accuracy.

  • Scenario R0, junction C21: shadow forecast of total queue at t+8 s against what happened

    dashboard rendering of recorded results · scenario R0 · arm vector · seed 95000

    What it shows
    the shadow forecasters run in the live loop and are scored against the realised queue
    What it does not establish
    shadow only: no forecast reaches a signal decision; held-out MAE is worse than persistence in 15 of 16 scenarios
    Original 1500×1000 PNG

    sha256 ecf7915ba5998169… · verified

  • Scenario H, junction C21: shadow forecast across the concept shift at 900 s

    dashboard rendering of recorded results · scenario H · arm vector · seed 95000

    What it shows
    prediction error rises after the demand shift; nothing adapts online
    What it does not establish
    one junction and one seed are shown; the aggregate is in prediction.json
    Original 1500×1000 PNG

    sha256 0e39288d3d853fea… · verified

  • Primary endpoint on the held-out seeds: VECTOR minus SUMO's native actuated control, per scenario, paired 95% t-intervals; the coloured label is the unadjusted interval, the Holm column is the family-wise test (only B rejects)

    dashboard rendering of recorded results

    What it shows
    VECTOR does not beat the native actuated controller on mean time loss; it is significantly worse in B after Holm correction
    What it does not establish
    10 paired seeds per scenario; one synthetic network; the native controller uses SUMO's own detectors
    Original 1500×1000 PNG

    sha256 0aba1b3daa80d6a6… · verified

  • Maximum red wait: VECTOR minus native, per scenario

    dashboard rendering of recorded results

    What it shows
    VECTOR's starvation guard (90 s) lets some approaches wait about 50 s longer than under native control, in every scenario
    What it does not establish
    a worst-case statistic; it says nothing about how many vehicles waited that long
    Original 1500×1000 PNG

    sha256 fb1210785ca68170… · verified

  • Primary endpoint: VECTOR minus the simple vehicle-actuated rule controller

    dashboard rendering of recorded results

    What it shows
    against a simple actuated rule VECTOR is better in several scenarios unadjusted, with no Holm rejection
    What it does not establish
    secondary family; the vehicle-actuated baseline is a simple gap-out rule on the same harness
    Original 1500×1000 PNG

    sha256 16b4a1db6448c135… · verified

Runtime, safety and reproducibility

Module failure injected and caught, with the executed signal sequence unchanged.

  • Scenario M: forecasters fail at 900 s, the whole advisory orchestrator at 1500 s; control continues unchanged

    dashboard rendering of recorded results · scenario M · arm vector · seed 95000

    What it shows
    advisory-module failure is caught and counted, and the executed signal sequence equals VECTOR without the shadow; but after the forecasters fail the stack still reports 'degraded FULL; fallback false' with 0 forecasts, so it does not detect its own degradation
    What it does not establish
    shows isolation, not graceful degradation: the failed modules never influenced control in the first place
    Original 1500×1000 PNG

    sha256 b1da9eafe12575bc… · verified

state
active
build
604cd5b