I don't really know. And there are loads of different situations where clipping can occur that all look completely different.
Here's a thought:
Say I *know* that exactly *1* sample is clipped (over a period of time, say 1000 samples).
Then I could try to reconstruct EACH sample separately (assuming that the others are all valid). The sample that moves the most from the input is most likely to have been clipped. (If the sample doesn't move much, the clipping will also not be very noticeable. So I could just flag, say, the 10 samples that moved the most as clipped, and start reconstruction from there).
Unfortunately this requires a huge amount of computation power (1000 reconstructions just to FIND a clipped sample! On top of that, I would also have to run each combination of 2, 3, 4, 5, ... samples). So this isn't really a solution. But it does indicate that clipping CAN be detected.
Now "all" I need to do is find an efficient way to do it. (And I actually have one

which seems to work reasonably well).
I will know more when I have implemented the last "note to self" idea - that MIGHT solve everything - or not...