Are you doing the variant problems too? Have you gone over the solutions provided in the book? If so, do they not provide the insight you’re looking for?
As for corner cases, you can see if my test cases provide the coverage you’re looking for. I’ve completed the first 6 problems, including variants. The tests are here (in Kotlin).
I don’t know of any general rules for adapting binary search, other than the textbook binary search algorithm. This is probably because there are many forms that adaptation can take. So far, I’ve made progress by applying experimentation, persistence, practice, and patience. Keep at it, and you’ll see you’ll develop the intuitions naturally.
It may be helpful to set the problems aside for a bit, implement standard binary search, and play with it like a toy. By that I mean, without any specific goal in mind, making small modifications and seeing what effect it has on the output.