0937ac9e05
The old engine_voice returned early for flame == 0 with (DRONE_LANCET, 0.8, 1.6), so the later `P1sun => 1.7` match arm was unreachable. The catalog migration mistook that arm for the played value and stored 1.7, which changed the interceptor drone's flight sound. specs.json is back to 1.6 and specs_generated.rs is regenerated. Adds missile_engine_voices_keep_their_played_values, pinning P1-SUN to (DRONE_LANCET, 0.8, 1.6) and M48N6 to (MISSILE_FLIGHT, 1.0, 0.88). The continuation and handoff text now describe the early return instead of the dead arm, and tools/airdef_assets/catalog.py gets its final newline back. Verified: gen_catalog --check and test_gen_assets, core release 195 passed + 8 scenarios (7 ignored), adapter 64 unit + 1 boundary + 5 scenarios, WASM contract 27 steps.