# selftest_review.py — targeted negative tests (reviewer-requested gates)
  {
      "seg": "C",
      "file": ".wav",
      "ls_down_in_R_db": -29.8,
      "rs_down_in_L_db": -33.6
    },
    {
      "seg": "C",
      "file": ".mp3",
      "ls_down_in_R_db": -29.8,
      "rs_down_in_L_db": -33.6
    }
  ],
  "lfe_probes": [
    {
      "file": ".wav",
      "ch": 0,
      "db": -53.059699,
      "ok": true
    },
    {
      "file": ".wav",
      "ch": 1,
      "db": -57.005191,
      "ok": true
    },
    {
      "file": ".mp3",
      "ch": 0,
      "db": -53.338244,
      "ok": true
    },
    {
      "file": ".mp3",
      "ch": 1,
      "db": -57.27392,
      "ok": true
    }
  ],
  "routing_probes": [
    {
      "probe": "A: BL -> L",
      "hz": 800,
      "got_db": -35.020839,
      "ref_db": -35.020839,
      "ok": true
    },
    {
      "probe": "A: BR -> R",
      "hz": 1200,
      "got_db": -37.29879,
      "ref_db": -37.29879,
      "ok": true
    },
    {
      "probe": "B: un-swapped Ls -> L",
      "hz": 810,
      "got_db": -35.047273,
      "ref_db": -35.047273,
      "ok": true
    },
    {
      "probe": "B: un-swapped Rs -> R",
      "hz": 1210,
      "got_db": -37.308789,
      "ref_db": -37.308789,
      "ok": true
    },
    {
      "probe": "C: LFE excluded from L",
      "hz": 60,
      "got_db": -53.059699,
      "ref_db": -53.059699,
      "ok": true
    },
    {
      "probe": "C: center -3dB -> R",
      "hz": 520,
      "got_db": -28.843576,
      "ref_db": -28.843576,
      "ok": true
    }
  ],
  "final": 1.0
}
1.0

[reference] score = 1.0 (expect 1.0)

_db": 0.91,
      "expected_db": 0.99,
      "ok": true
    },
    {
      "seg": "C",
      "file": ".mp3",
      "ch": 0,
      "delta_db": -1.04,
      "expected_db": -1.01,
      "ok": true
    },
    {
      "seg": "C",
      "file": ".mp3",
      "ch": 1,
      "delta_db": 0.91,
      "expected_db": 0.99,
      "ok": true
    }
  ],
  "isolation_probes": [
    {
      "seg": "A",
      "file": ".wav",
      "ls_down_in_R_db": -29.8,
      "rs_down_in_L_db": -33.7
    },
    {
      "seg": "A",
      "file": ".mp3",
      "ls_down_in_R_db": -29.8,
      "rs_down_in_L_db": -33.7
    },
    {
      "seg": "B",
      "file": ".wav",
      "ls_down_in_R_db": 30.0,
      "rs_down_in_L_db": 33.5
    },
    {
      "seg": "B",
      "file": ".mp3",
      "ls_down_in_R_db": 30.0,
      "rs_down_in_L_db": 33.6
    },
    {
      "seg": "C",
      "file": ".wav",
      "ls_down_in_R_db": -29.8,
      "rs_down_in_L_db": -33.6
    },
    {
      "seg": "C",
      "file": ".mp3",
      "ls_down_in_R_db": -29.8,
      "rs_down_in_L_db": -33.6
    }
  ],
  "lfe_probes": [
    {
      "file": ".wav",
      "ch": 0,
      "db": -74.509621,
      "ok": true
    },
    {
      "file": ".wav",
      "ch": 1,
      "db": -78.449788,
      "ok": true
    },
    {
      "file": ".mp3",
      "ch": 0,
      "db": -74.785716,
      "ok": true
    },
    {
      "file": ".mp3",
      "ch": 1,
      "db": -78.727818,
      "ok": true
    }
  ],
  "final": 0.0,
  "reason": "hard gate failed"
}
0.0

failed gates: ['integrated_-23pm0.5', 'mp3_integrated_-23pm0.5', 'surround_not_crossed']
[naive_a] score = 0.0 (expect 0.0)

$ N1: swap L/R of the B segment
(native) -> pcm_s24le (native))
Press [q] to stop, [?] for help
Output #0, wav, to 'C:\Users\mnb92\AppData\Local\Temp\neg01_lkop0eju\out\master_stereo.tmp.wav':
  Metadata:
    ISFT            : Lavf63.1.100
  Stream #0:0: Audio: pcm_s24le ([1][0][0][0] / 0x0001), 48000 Hz, 2 channels, s32 (24 bit), 2304 kb/s
    Metadata:
      encoder         : Lavc63.1.100 pcm_s24le
[out#0/wav @ 0000013ee4b0c380] video:0KiB audio:25308KiB subtitle:0KiB other streams:0KiB global headers:0KiB muxing overhead: 0.000394%
size=   25308KiB time=00:01:29.98 bitrate=2304.0kbits/s speed= 327x elapsed=0:00:00.27    

$ re-derive MP3 from the mutated master
t\master_stereo.mp3':
  Metadata:
    TSSE            : Lavf63.1.100
  Stream #0:0: Audio: mp3, 48000 Hz, stereo, s32p, 192 kb/s
    Metadata:
      encoder         : Lavc63.1.100 libmp3lame
size=     768KiB time=00:00:41.08 bitrate= 153.1kbits/s speed=  78x elapsed=0:00:00.52    
size=    1792KiB time=00:01:20.01 bitrate= 183.5kbits/s speed=76.9x elapsed=0:00:01.04    
[out#0/mp3 @ 0000026c5c8fb580] video:0KiB audio:2110KiB subtitle:0KiB other streams:0KiB global headers:0KiB muxing overhead: 0.028696%
size=    2111KiB time=00:01:29.98 bitrate= 192.1kbits/s speed=75.4x elapsed=0:00:01.19    

a_db": 0.91,
      "expected_db": 0.99,
      "ok": true
    },
    {
      "seg": "C",
      "file": ".mp3",
      "ch": 0,
      "delta_db": -1.03,
      "expected_db": -1.01,
      "ok": true
    },
    {
      "seg": "C",
      "file": ".mp3",
      "ch": 1,
      "delta_db": 0.91,
      "expected_db": 0.99,
      "ok": true
    }
  ],
  "isolation_probes": [
    {
      "seg": "A",
      "file": ".wav",
      "ls_down_in_R_db": -29.8,
      "rs_down_in_L_db": -33.7
    },
    {
      "seg": "A",
      "file": ".mp3",
      "ls_down_in_R_db": -29.8,
      "rs_down_in_L_db": -33.7
    },
    {
      "seg": "B",
      "file": ".wav",
      "ls_down_in_R_db": 29.8,
      "rs_down_in_L_db": 33.7
    },
    {
      "seg": "B",
      "file": ".mp3",
      "ls_down_in_R_db": 29.8,
      "rs_down_in_L_db": 33.7
    },
    {
      "seg": "C",
      "file": ".wav",
      "ls_down_in_R_db": -29.8,
      "rs_down_in_L_db": -33.6
    },
    {
      "seg": "C",
      "file": ".mp3",
      "ls_down_in_R_db": -29.8,
      "rs_down_in_L_db": -33.6
    }
  ],
  "lfe_probes": [
    {
      "file": ".wav",
      "ch": 0,
      "db": -53.059699,
      "ok": true
    },
    {
      "file": ".wav",
      "ch": 1,
      "db": -57.005191,
      "ok": true
    },
    {
      "file": ".mp3",
      "ch": 0,
      "db": -53.338244,
      "ok": true
    },
    {
      "file": ".mp3",
      "ch": 1,
      "db": -57.27392,
      "ok": true
    }
  ],
  "final": 0.0,
  "reason": "hard gate failed"
}
0.0

failed gates: ['center_minus3db_ok', 'surround_not_crossed']
[N1 B-segment surround swap uncorrected] score = 0.0 (expect < 0.5)

$ N2: fold a realistically-hot 60 Hz tone (matches the source LFE level) into both channels of the C segment
ault -> Stream #0:0 (pcm_s24le)
Press [q] to stop, [?] for help
Output #0, wav, to 'C:\Users\mnb92\AppData\Local\Temp\neg01__las24bn\out\master_stereo.tmp.wav':
  Metadata:
    ISFT            : Lavf63.1.100
  Stream #0:0: Audio: pcm_s24le ([1][0][0][0] / 0x0001), 48000 Hz, stereo, s32 (24 bit), 2304 kb/s
    Metadata:
      encoder         : Lavc63.1.100 pcm_s24le
[out#0/wav @ 000001c605b19000] video:0KiB audio:25308KiB subtitle:0KiB other streams:0KiB global headers:0KiB muxing overhead: 0.000394%
size=   25308KiB time=00:01:29.98 bitrate=2304.0kbits/s speed=1.94e+03x elapsed=0:00:00.04    

$ re-derive MP3 from the mutated master
t\master_stereo.mp3':
  Metadata:
    TSSE            : Lavf63.1.100
  Stream #0:0: Audio: mp3, 48000 Hz, stereo, s32p, 192 kb/s
    Metadata:
      encoder         : Lavc63.1.100 libmp3lame
size=     768KiB time=00:00:40.94 bitrate= 153.7kbits/s speed=79.6x elapsed=0:00:00.51    
size=    1792KiB time=00:01:21.98 bitrate= 179.1kbits/s speed=79.6x elapsed=0:00:01.02    
[out#0/mp3 @ 000002056cf4e9c0] video:0KiB audio:2110KiB subtitle:0KiB other streams:0KiB global headers:0KiB muxing overhead: 0.028696%
size=    2111KiB time=00:01:29.98 bitrate= 192.1kbits/s speed=79.9x elapsed=0:00:01.12    

91,
      "expected_db": 0.99,
      "ok": true
    },
    {
      "seg": "C",
      "file": ".mp3",
      "ch": 0,
      "delta_db": -1.04,
      "expected_db": -1.01,
      "ok": true
    },
    {
      "seg": "C",
      "file": ".mp3",
      "ch": 1,
      "delta_db": 0.91,
      "expected_db": 0.99,
      "ok": true
    }
  ],
  "isolation_probes": [
    {
      "seg": "A",
      "file": ".wav",
      "ls_down_in_R_db": -29.8,
      "rs_down_in_L_db": -33.7
    },
    {
      "seg": "A",
      "file": ".mp3",
      "ls_down_in_R_db": -29.8,
      "rs_down_in_L_db": -33.7
    },
    {
      "seg": "B",
      "file": ".wav",
      "ls_down_in_R_db": -29.8,
      "rs_down_in_L_db": -33.7
    },
    {
      "seg": "B",
      "file": ".mp3",
      "ls_down_in_R_db": -29.8,
      "rs_down_in_L_db": -33.7
    },
    {
      "seg": "C",
      "file": ".wav",
      "ls_down_in_R_db": -29.8,
      "rs_down_in_L_db": -33.6
    },
    {
      "seg": "C",
      "file": ".mp3",
      "ls_down_in_R_db": -29.8,
      "rs_down_in_L_db": -33.6
    }
  ],
  "lfe_probes": [
    {
      "file": ".wav",
      "ch": 0,
      "db": -39.813552,
      "ok": false
    },
    {
      "file": ".wav",
      "ch": 1,
      "db": -39.909637,
      "ok": false
    },
    {
      "file": ".mp3",
      "ch": 0,
      "db": -40.085889,
      "ok": false
    },
    {
      "file": ".mp3",
      "ch": 1,
      "db": -40.183664,
      "ok": false
    }
  ],
  "final": 0.0,
  "reason": "hard gate failed"
}
0.0

failed gates: ['lfe_excluded']
[N2 LFE leaked into both channels] score = 0.0 (expect 0.0)

$ N3: re-encode MP3 at 128 kbps
ster_stereo.tmp.mp3':
  Metadata:
    TSSE            : Lavf63.1.100
  Stream #0:0: Audio: mp3, 48000 Hz, stereo, fltp, 128 kb/s
    Metadata:
      encoder         : Lavc63.1.100 libmp3lame
size=     512KiB time=00:00:33.38 bitrate= 125.6kbits/s speed=65.8x elapsed=0:00:00.50    
size=    1024KiB time=00:01:10.82 bitrate= 118.4kbits/s speed=68.3x elapsed=0:00:01.03    
[out#0/mp3 @ 000001fbf7aaef00] video:0KiB audio:1407KiB subtitle:0KiB other streams:0KiB global headers:0KiB muxing overhead: 0.029714%
size=    1407KiB time=00:01:29.98 bitrate= 128.1kbits/s speed=69.9x elapsed=0:00:01.28    

: 0.91,
      "expected_db": 0.99,
      "ok": true
    },
    {
      "seg": "C",
      "file": ".mp3",
      "ch": 0,
      "delta_db": -1.04,
      "expected_db": -1.01,
      "ok": true
    },
    {
      "seg": "C",
      "file": ".mp3",
      "ch": 1,
      "delta_db": 0.91,
      "expected_db": 0.99,
      "ok": true
    }
  ],
  "isolation_probes": [
    {
      "seg": "A",
      "file": ".wav",
      "ls_down_in_R_db": -29.8,
      "rs_down_in_L_db": -33.7
    },
    {
      "seg": "A",
      "file": ".mp3",
      "ls_down_in_R_db": -29.8,
      "rs_down_in_L_db": -33.6
    },
    {
      "seg": "B",
      "file": ".wav",
      "ls_down_in_R_db": -29.8,
      "rs_down_in_L_db": -33.7
    },
    {
      "seg": "B",
      "file": ".mp3",
      "ls_down_in_R_db": -29.8,
      "rs_down_in_L_db": -33.7
    },
    {
      "seg": "C",
      "file": ".wav",
      "ls_down_in_R_db": -29.8,
      "rs_down_in_L_db": -33.6
    },
    {
      "seg": "C",
      "file": ".mp3",
      "ls_down_in_R_db": -29.8,
      "rs_down_in_L_db": -33.6
    }
  ],
  "lfe_probes": [
    {
      "file": ".wav",
      "ch": 0,
      "db": -53.059699,
      "ok": true
    },
    {
      "file": ".wav",
      "ch": 1,
      "db": -57.005191,
      "ok": true
    },
    {
      "file": ".mp3",
      "ch": 0,
      "db": -53.779034,
      "ok": true
    },
    {
      "file": ".mp3",
      "ch": 1,
      "db": -57.718148,
      "ok": true
    }
  ],
  "final": 0.0,
  "reason": "hard gate failed"
}
0.0

failed gates: ['mp3_integrated_-23pm0.5', 'mp3_192k_cbr']
[N3 MP3 at 128 kbps] score = 0.0 (expect 0.0)

$ N4: boost the FC pilot to unity gain in both channels (no re-conform)
(native) -> pcm_s24le (native))
Press [q] to stop, [?] for help
Output #0, wav, to 'C:\Users\mnb92\AppData\Local\Temp\neg01_aj_pufln\out\master_stereo.tmp.wav':
  Metadata:
    ISFT            : Lavf63.1.100
  Stream #0:0: Audio: pcm_s24le ([1][0][0][0] / 0x0001), 48000 Hz, stereo, s32 (24 bit), 2304 kb/s
    Metadata:
      encoder         : Lavc63.1.100 pcm_s24le
[out#0/wav @ 000001454687cd80] video:0KiB audio:25308KiB subtitle:0KiB other streams:0KiB global headers:0KiB muxing overhead: 0.000394%
size=   25308KiB time=00:01:29.98 bitrate=2304.0kbits/s speed=1.83e+03x elapsed=0:00:00.04    

$ re-derive MP3 from the mutated master
t\master_stereo.mp3':
  Metadata:
    TSSE            : Lavf63.1.100
  Stream #0:0: Audio: mp3, 48000 Hz, stereo, s32p, 192 kb/s
    Metadata:
      encoder         : Lavc63.1.100 libmp3lame
size=     768KiB time=00:00:37.32 bitrate= 168.6kbits/s speed=  73x elapsed=0:00:00.51    
size=    1536KiB time=00:01:15.60 bitrate= 166.4kbits/s speed=73.7x elapsed=0:00:01.02    
[out#0/mp3 @ 000001b9f2e9d700] video:0KiB audio:2110KiB subtitle:0KiB other streams:0KiB global headers:0KiB muxing overhead: 0.028696%
size=    2111KiB time=00:01:29.98 bitrate= 192.1kbits/s speed=73.9x elapsed=0:00:01.21    

3.61,
      "expected_db": 0.99,
      "ok": false
    },
    {
      "seg": "C",
      "file": ".mp3",
      "ch": 0,
      "delta_db": 1.88,
      "expected_db": -1.01,
      "ok": false
    },
    {
      "seg": "C",
      "file": ".mp3",
      "ch": 1,
      "delta_db": 3.61,
      "expected_db": 0.99,
      "ok": false
    }
  ],
  "isolation_probes": [
    {
      "seg": "A",
      "file": ".wav",
      "ls_down_in_R_db": -28.1,
      "rs_down_in_L_db": -32.6
    },
    {
      "seg": "A",
      "file": ".mp3",
      "ls_down_in_R_db": -28.1,
      "rs_down_in_L_db": -32.6
    },
    {
      "seg": "B",
      "file": ".wav",
      "ls_down_in_R_db": -27.9,
      "rs_down_in_L_db": -32.5
    },
    {
      "seg": "B",
      "file": ".mp3",
      "ls_down_in_R_db": -27.9,
      "rs_down_in_L_db": -32.5
    },
    {
      "seg": "C",
      "file": ".wav",
      "ls_down_in_R_db": -27.8,
      "rs_down_in_L_db": -32.4
    },
    {
      "seg": "C",
      "file": ".mp3",
      "ls_down_in_R_db": -27.8,
      "rs_down_in_L_db": -32.4
    }
  ],
  "lfe_probes": [
    {
      "file": ".wav",
      "ch": 0,
      "db": -55.666964,
      "ok": true
    },
    {
      "file": ".wav",
      "ch": 1,
      "db": -58.983921,
      "ok": true
    },
    {
      "file": ".mp3",
      "ch": 0,
      "db": -55.942881,
      "ok": true
    },
    {
      "file": ".mp3",
      "ch": 1,
      "db": -59.255532,
      "ok": true
    }
  ],
  "final": 0.0,
  "reason": "hard gate failed"
}
0.0

failed gates: ['integrated_-23pm0.5', 'mp3_integrated_-23pm0.5', 'center_minus3db_ok']
[N4 center at unity, not re-conformed] score = 0.0 (expect 0.0 — the 0.7x trim breaks the loudness gates, and at the tightened 2.2 dB margin the center gate rejects it too)

$ N5: unity center fold (all three FC pilots +3.01 dB) + loudnorm re-conform
m_s24le
size=    4864KiB time=00:00:17.59 bitrate=2264.0kbits/s speed=34.2x elapsed=0:00:00.51    
size=    9984KiB time=00:00:35.99 bitrate=2271.9kbits/s speed=  35x elapsed=0:00:01.02    
size=   15616KiB time=00:00:55.79 bitrate=2292.6kbits/s speed=35.9x elapsed=0:00:01.55    
size=   20992KiB time=00:01:14.89 bitrate=2296.0kbits/s speed=36.2x elapsed=0:00:02.06    
[out#0/wav @ 0000024a3f191900] video:0KiB audio:25308KiB subtitle:0KiB other streams:0KiB global headers:0KiB muxing overhead: 0.000394%
size=   25308KiB time=00:01:30.00 bitrate=2303.6kbits/s speed=36.8x elapsed=0:00:02.44    

$ re-derive MP3 from the mutated master
t\master_stereo.mp3':
  Metadata:
    TSSE            : Lavf63.1.100
  Stream #0:0: Audio: mp3, 48000 Hz, stereo, s32p, 192 kb/s
    Metadata:
      encoder         : Lavc63.1.100 libmp3lame
size=     768KiB time=00:00:41.23 bitrate= 152.6kbits/s speed=79.6x elapsed=0:00:00.51    
size=    1792KiB time=00:01:22.29 bitrate= 178.4kbits/s speed=79.8x elapsed=0:00:01.03    
[out#0/mp3 @ 000001c2a34cc7c0] video:0KiB audio:2110KiB subtitle:0KiB other streams:0KiB global headers:0KiB muxing overhead: 0.028696%
size=    2111KiB time=00:01:29.98 bitrate= 192.1kbits/s speed=79.5x elapsed=0:00:01.13    

8.63,
      "expected_db": 0.99,
      "ok": false
    },
    {
      "seg": "C",
      "file": ".mp3",
      "ch": 0,
      "delta_db": 6.82,
      "expected_db": -1.01,
      "ok": false
    },
    {
      "seg": "C",
      "file": ".mp3",
      "ch": 1,
      "delta_db": 8.63,
      "expected_db": 0.99,
      "ok": false
    }
  ],
  "isolation_probes": [
    {
      "seg": "A",
      "file": ".wav",
      "ls_down_in_R_db": -23.5,
      "rs_down_in_L_db": -29.7
    },
    {
      "seg": "A",
      "file": ".mp3",
      "ls_down_in_R_db": -23.5,
      "rs_down_in_L_db": -29.7
    },
    {
      "seg": "B",
      "file": ".wav",
      "ls_down_in_R_db": -22.9,
      "rs_down_in_L_db": -29.2
    },
    {
      "seg": "B",
      "file": ".mp3",
      "ls_down_in_R_db": -22.9,
      "rs_down_in_L_db": -29.2
    },
    {
      "seg": "C",
      "file": ".wav",
      "ls_down_in_R_db": -23.4,
      "rs_down_in_L_db": -29.6
    },
    {
      "seg": "C",
      "file": ".mp3",
      "ls_down_in_R_db": -23.4,
      "rs_down_in_L_db": -29.6
    }
  ],
  "lfe_probes": [
    {
      "file": ".wav",
      "ch": 0,
      "db": -56.618412,
      "ok": true
    },
    {
      "file": ".wav",
      "ch": 1,
      "db": -58.754582,
      "ok": true
    },
    {
      "file": ".mp3",
      "ch": 0,
      "db": -56.893531,
      "ok": true
    },
    {
      "file": ".mp3",
      "ch": 1,
      "db": -59.024921,
      "ok": true
    }
  ],
  "final": 0.0,
  "reason": "hard gate failed"
}
0.0

failed gates: ['center_minus3db_ok']
[N5 center at unity, re-conformed to -23 LUFS] score = 0.0 (expect 0.0 — loudness gates now pass, the center gate (2.2 dB margin vs the 3.01 dB unity error) rejects it)

ALL targeted negatives rejected (N1-N5), the re-conformed unity center included
