We found that the easiest way is with people. Build some redundancy into it, so that someone knows even if someone else quits. People won't really read the docs and docs can't audit code. We had gigabytes of docs; we needed humans to point out the right one and latest ones.
For example we had a rather complicated cache system, which was fully documented, multiple times, with full test coverage. But people still got it wrong.
I think human support is a necessary feature and multiplier. It's sort of like a game where someone needs to be the healer.
Also when you have all the tools, someone needs to be able to train them, and someon needs to know the right tools for the right situation.
I recommend about 1 support person per 10 people. Usually technical managers can also take on this role, but it's better to have someone specialize in it and not be stuck managing.