I despise seeing private methods in public documentation. That belongs in a document like Foo::Internals or somesuch. Something that makes it obvious this is for developers only, not consumers.
The point of documenting your contract is twofold:
You're telling people what they can do (informational)
You're telling people what you promise (legal)
If someone does something outside of what you promised and it hurts them, then that's their problem. You aren't responsible for my asinine abuse of your product.
My criteria for good software:
Does it work?
Can someone else come in, make a change, and be reasonably certain no bugs were introduced?