The "information for packagers" doc section is often referred to as a Makefile.
It enumerates minimum versions of shared libraries, as well as explicit versions of static libraries.
It enumerates minimum versions of shared libraries, as well as explicit versions of static libraries.
The only real way to avoid that is for a project to include a bunch of compliance tests, that validate that an underlying library correctly performs the operations the project needs it to do. But this is actually a lot of work, so in reality it will almost never be done. Which leads us back to the discussion about the wisdom of packagers changing libs without understanding the on downstream projects.