All BLE stack operation needs execution of Cy_BLE_ProcessEvents. Therefore, better not to put Cy_BLE_GATTS_WriteAttributeValueLocal and CyCLE_GATS_SendNotification in a ADC ISR. Instead, use a global flag to call the APIs in main loop.
Let me know if it's the cause.
I think I have this worked out.
There were two things happening: the first is a logic error on my part that was causing the 'ADC_StartConvert' function to be called repeatedly and before the scan had been completed. This caused the ISR to not ever be called.
The second is that the debugger appears to stop the 'deep sleep' functionality - see 'Bob's comment in the 2nd to last note in Debug and Programming, why is not working after programming? .
I did do as 'WangS_81' suggested (which I should have done anyway) but I really can't tell if this contributed or not as I don't think the ISR was ever called except when the debugger was running as (I think!) the time required for the debugger to reverse the deep sleep was probably enough time for the scan to be completed and the ISR called.
Anyway: problem solved so thank you for your assistance.