I should have posted this but a trace shows
2025-12-15 16:48:04.237 AbstractHeadMountable DEBUG: TopCam.moveTo((104.000000, 326.000000, -21.800000, 0.000000 mm), 1.0)
2025-12-15 16:48:04.241 AbstractPandaplacerVisionFeeder DEBUG: calibrating sprocket holes pass 0 midPoint is (12.100000, 296.600000, -21.800000, 0.000000 mm)
2025-12-15 16:48:04.241 ReferenceHead DEBUG: H1.moveToSafeZ(1.0)
2025-12-15 16:48:04.242 AbstractHeadMountable DEBUG: N1.moveToSafeZ(1.0)
2025-12-15 16:48:04.243 AbstractHeadMountable DEBUG: TopCam.moveToSafeZ(1.0)
2025-12-15 16:48:04.243 AbstractHeadMountable DEBUG: TopCam.moveTo((104.000000, 326.000000, 0.000000, 0.000000 mm), 1.0)
2025-12-15 16:48:04.244 AbstractHeadMountable DEBUG: TopCam.moveTo((12.100000, 296.600000, 0.000000, 0.000000 mm), 1.0)
2025-12-15 16:48:04.247 GcodeDriver DEBUG: [PPMC_V3:COM6] >> M204 S8399, 15000
2025-12-15 16:48:04.250 GcodeDriver DEBUG: [PPMC_V3:COM6] >> G1 X12.100 Y296.600 F50396 ; move to target, 15000
2025-12-15 16:48:04.251 GcodeDriver DEBUG: [PPMC_V3:COM6] >> M400 ; Wait for moves to complete before returning, 15000
2025-12-15 16:48:04.572 AbstractHeadMountable DEBUG: TopCam.moveTo((12.100000, 296.600000, -21.800000, 0.000000 mm), 1.0)
2025-12-15 16:48:04.788 AbstractSettlingCamera DEBUG: autoSettleAndCapture in 213 ms
2025-12-15 16:48:04.791 ReferenceActuator DEBUG: TopCamLight.actuate(false)
2025-12-15 16:48:04.792 GcodeDriver DEBUG: [PPMC_V3:COM6] >> M42 I P22 S0, 15000
2025-12-15 16:48:04.794 GcodeDriver DEBUG: [PPMC_V3:COM6] >> M400 ; Wait for moves to complete before returning, 15000
2025-12-15 16:48:04.795 GcodeAsyncDriver DEBUG: [PPBFC-V3:COM7] commandQueue offer >> M400 ; Wait for moves to complete before returning
2025-12-15 16:48:04.903 FeederVisionHelper DEBUG: Ransac algorithm has not found any lines of sprocket holes with 4.0mm pitch, allowed pitch and line tolerance is ±0.6mm
2025-12-15 16:48:04.908 MessageBoxes DEBUG: Error: java.lang.Exception: No line of sprocket holes can be recognized
Which seems to show the light is indeed being shut off after the move