# Post-hoc diagnosis (after the held-out evaluation)

Generated by `audit/final_adversarial/diagnose.py`. **Post-hoc and exploratory.** Run after the held-out results were seen, on fresh seeds 96000–96009 that no earlier step used, with VECTOR's own registered ablations (`extremis_canonical_no_observer`, `extremis_canonical_no_commitment`) unchanged. Nothing here changes or re-tests a held-out result; no multiplicity correction is applied. Protocol: `AUDIT_PROTOCOL.md` §13.

Trials whose health gate failed: none.

## D1. Means by arm (fresh seeds)

| scenario | arm | n | P1 time loss (s) | completion | gridlock | ineff. green (s) | wasted green (s) |
|---|---|---|---|---|---|---|---|
| R0 | vector_noshadow | 10 | 154.3 | 98.4% | 0.7 | 1146 | 2043 |
| R0 | diag_no_observer | 10 | 170.9 | 97.7% | 1.4 | 1435 | 2367 |
| R0 | diag_no_commitment | 10 | 139.1 | 99.9% | 0.0 | 288 | 1004 |
| R0 | native_actuated | 10 | 133.1 | 99.1% | 0.8 | 600 | 1377 |
| B | vector_noshadow | 10 | 294.6 | 85.7% | 8.2 | 6051 | 6963 |
| B | diag_no_observer | 10 | 297.4 | 87.3% | 3.5 | 5323 | 6395 |
| B | diag_no_commitment | 10 | 303.5 | 84.4% | 3.0 | 5227 | 5856 |
| B | native_actuated | 10 | 270.9 | 85.9% | 8.1 | 4356 | 5227 |
| C | vector_noshadow | 10 | 160.5 | 98.3% | 0.8 | 1413 | 2385 |
| C | diag_no_observer | 10 | 174.8 | 97.7% | 0.0 | 1350 | 2310 |
| C | diag_no_commitment | 10 | 143.5 | 99.4% | 0.0 | 489 | 1205 |
| C | native_actuated | 10 | 142.7 | 97.5% | 2.7 | 1033 | 1772 |
| J | vector_noshadow | 10 | 579.0 | 61.9% | 24.7 | 16774 | 17562 |
| J | diag_no_observer | 10 | 592.0 | 61.7% | 22.2 | 16180 | 17424 |
| J | diag_no_commitment | 10 | 681.9 | 53.0% | 17.8 | 20299 | 20252 |
| J | native_actuated | 10 | 512.0 | 67.5% | 19.3 | 9720 | 10912 |
| K | vector_noshadow | 10 | 449.0 | 72.5% | 23.7 | 13461 | 14339 |
| K | diag_no_observer | 10 | 486.1 | 69.1% | 29.3 | 15063 | 16026 |
| K | diag_no_commitment | 10 | 514.6 | 65.4% | 10.7 | 16258 | 16624 |
| K | native_actuated | 10 | 332.7 | 83.6% | 10.8 | 5834 | 6826 |

## D2. Paired differences on P1 (s/veh): mean [95% t-CI] (seeds where the first arm is better/worse)

| scenario | VECTOR − native (replication) | no observer − VECTOR | no commitment − VECTOR | no observer − native | no commitment − native |
|---|---|---|---|---|---|
| R0 | +21.1 [4.3, 37.9] (1/9) | +16.7 [8.8, 24.5] (1/9) | -15.1 [-26.6, -3.7] (9/1) | +37.8 [17.9, 57.8] (1/9) | +6.0 [-6.1, 18.1] (1/9) |
| B | +23.7 [-22.6, 70.0] (4/6) | +2.8 [-34.3, 40.0] (5/5) | +8.9 [-43.0, 60.8] (5/5) | +26.5 [-28.4, 81.5] (4/6) | +32.6 [-25.8, 91.0] (3/7) |
| C | +17.9 [-1.8, 37.6] (2/8) | +14.2 [7.0, 21.5] (1/9) | -17.1 [-27.8, -6.3] (9/1) | +32.1 [10.6, 53.5] (1/9) | +0.8 [-22.3, 23.9] (4/6) |
| J | +67.0 [16.9, 117.2] (2/8) | +13.0 [-27.0, 52.9] (5/5) | +102.9 [54.1, 151.7] (1/9) | +80.0 [17.0, 143.0] (2/8) | +170.0 [125.5, 214.4] (0/10) |
| K | +116.3 [92.5, 140.2] (0/10) | +37.1 [13.0, 61.3] (1/9) | +65.6 [44.3, 86.8] (0/10) | +153.5 [137.4, 169.5] (0/10) | +181.9 [157.1, 206.7] (0/10) |

## D3. Same contrasts on ineffective green (junction-seconds)

| scenario | VECTOR − native (replication) | no observer − VECTOR | no commitment − VECTOR | no observer − native | no commitment − native |
|---|---|---|---|---|---|
| R0 | +545.9 [5.9, 1085.9] (2/8) | +289.0 [-399.8, 977.8] (4/6) | -858.3 [-1411.8, -304.8] (10/0) | +834.9 [-200.2, 1870.0] (2/8) | -312.4 [-513.8, -111.0] (9/1) |
| B | +1695.3 [-410.2, 3800.8] (4/6) | -728.2 [-3543.7, 2087.3] (7/3) | -824.8 [-3980.8, 2331.2] (6/4) | +967.1 [-1802.9, 3737.1] (5/5) | +870.5 [-2133.7, 3874.7] (4/6) |
| C | +380.0 [-646.7, 1406.7] (4/6) | -62.7 [-532.7, 407.3] (5/5) | -923.5 [-1577.9, -269.1] (10/0) | +317.3 [-448.5, 1083.1] (3/7) | -543.5 [-1310.6, 223.6] (8/2) |
| J | +7053.8 [3677.1, 10430.5] (1/9) | -593.7 [-3226.7, 2039.3] (5/5) | +3524.9 [707.8, 6342.0] (2/8) | +6460.1 [2926.2, 9994.0] (0/10) | +10578.7 [8126.1, 13031.3] (0/10) |
| K | +7626.9 [5693.4, 9560.4] (0/10) | +1601.7 [133.8, 3069.6] (2/8) | +2796.6 [1495.6, 4097.6] (1/9) | +9228.6 [8117.9, 10339.3] (0/10) | +10423.5 [8904.1, 11942.9] (0/10) |

## D4. Mechanism check on the held-out data (no new runs)

Over the 160 paired (scenario, seed) cells, VECTOR − native:
* P1 vs ineffective green: r = 0.906; about 15.45 s/veh more time loss per 1000 extra junction-seconds of ineffective green (intercept 4.7 s).
* P1 vs wasted green: r = 0.917.
* P1 vs gridlock events: r = 0.794.

Correlation across cells is consistent with, not proof of, the mechanism.

Sensitivity: P1 in C minus P1 in R0, same seed (C adds one ambulance to R0's demand):
* vector: [1.2, -39.9, -0.9, 14.0, 25.4, -2.4, -2.9, 48.6, 4.1, -9.3] (range -39.9 to 48.6 s/veh)
* native_actuated: [-61.6, 9.4, -213.7, -37.5, 0.8, -42.5, -44.0, -51.6, 29.3, -1.0] (range -213.7 to 29.3 s/veh)
* vehicle_actuated: [2.2, 0.4, 11.0, -50.2, -22.8, -14.8, 9.7, -30.0, -21.9, -1.3] (range -50.2 to 11.0 s/veh)

## D5. QueueObserver belief against the true queue (held-out traces, seed 95000)

Per approach and decision: |belief − SUMO halting|. The observer bounds every change to ±0.5 veh/s, which absorbs phantom spikes and also delays real queue changes.

| scenario | n | MAE (veh) | p95 (veh) | share off by ≥ 5 veh |
|---|---|---|---|---|
| R0 | 101318 | 0.48 | 3.0 | 3.2% |
| A | 102936 | 0.76 | 5.0 | 5.3% |
| B | 108590 | 0.81 | 5.5 | 6.0% |
| C | 101264 | 0.41 | 2.5 | 2.9% |
| D | 103390 | 0.41 | 2.5 | 2.7% |
| E | 101444 | 0.40 | 2.5 | 2.7% |
| F | 101928 | 0.42 | 2.5 | 2.9% |
| G | 101928 | 0.68 | 4.0 | 3.8% |
| H | 112134 | 0.63 | 4.0 | 4.4% |
| I | 103466 | 0.68 | 4.5 | 4.8% |
| J | 115332 | 1.08 | 7.5 | 8.2% |
| K | 111420 | 0.59 | 4.0 | 4.2% |
| L | 113162 | 1.59 | 9.0 | 10.1% |
| M | 101318 | 0.48 | 3.0 | 3.2% |
| N | 104340 | 0.75 | 5.0 | 5.2% |
| O | 106636 | 0.71 | 4.5 | 4.9% |

## D6. Blockage exposure (held-out seeds)

A blockage stalls the first vehicle found halted at the lane's stop line inside the window, so its onset depends on the controller. Mean blocked lane-steps per trial:

| scenario | VECTOR | native | veh-act | fixed | VECTOR − native per seed | corr(ΔP1, Δexposure) | fitted ΔP1 at equal exposure (s) |
|---|---|---|---|---|---|---|---|
| B | 1498 | 1222 | 1462 | 1583 | [401, 65, 44, 0, 483, 833, 282, 744, 812, -902] | -0.438 | 88.8 |
| F | 737 | 743 | 754 | 765 | [142, -31, -132, -29, 73, -68, 26, 13, 14, -70] | -0.015 | 11.9 |
| I | 1700 | 1637 | 1726 | 1766 | [80, -98, 10, -130, 69, 177, 254, 159, 106, -2] | 0.015 | -16.7 |
| N | 1131 | 1130 | 1103 | 1196 | [-25, -15, 6, 12, -66, 132, 83, -68, 9, -59] | -0.147 | 1.7 |
| O | 1098 | 1117 | 1109 | 1150 | [-257, 111, 46, -27, 0, 1, -49, -14, 101, -103] | -0.372 | 60.0 |
