Ideally, of course, everything should be hidden behind leak-tight abstractions.
Unfortunately, that is rarely the case.
I recently had a developer reuse a function that generates IDs for some other type of ID.
That function that generates IDs happened to use OS entropy pool directly. It was used before, once every startup of the application so it was deemed OK.
But now with high demand for IDs that is no longer acceptable.
I noticed it because I followed the code to see how the function actually generates IDs. That would not happen in web based tool because there simply isn't convenient way to follow the references from the new code.
That is just a simple example, I get things like that every other day.