Every function in context.cpp, modules.cpp, and version.cpp carries a Doxygen block, and the bodies explain the decisions the code alone does not show: why dlerror is cleared before dlsym rather than testing the returned address, what RTLD_NOW and RTLD_LOCAL buy, why missing contract symbols are collected into one report, why a candidate that fails validation is logged and skipped instead of failing the listing, and why version parsing tests the first character itself. Functions declared in a header carry a brief and implementation prose rather than a second parameter list; Doxygen was reporting duplicate documentation sections for each of them. READMEs in include/internal and src/cli state what those directories hold.
Internal Headers
libdpm-core.so's own headers, used by its sources and never installed.
They declare the types and functions the library's translation units share with each other: the definitions behind the opaque handles <dpm/core.h> exposes, and the helpers those sources call across file boundaries.
Nothing here is part of the public interface. The install rule ships include/dpm/ alone, so a consumer or a module compiles against <dpm/core.h> and never sees this directory.