Since it'll break all of a sudden and then work as usual I'd add a TRY CATCH block to the sproc where the CATCH block would call a separate sproc that would perform the tests I posted, again wrapped in a separate TRY CATCH block to identify the one that fails.
Remember: If you're forced to work against the three-letter-word-that-must-not-be-named you'll have to add double and triple checks down to the level of pure stupidity to lower the risk of your code crashes due to changes on their side...
Been there. Done that. Glad I left it behind me. Still have nightmares occasionally.