EK
опять же и про второе не всегда верно
я думаю следующим образом srp из solid, coupling и cohesion из grasp, dry это тоже некий "принцип"
пытаться это все в одно объединить это как сову на глобус тянуть, имхо.
для меня проще рабоче крестьянское определение coupling внешние связи между модулями (пакетами и тд), cohesion внутренние и ключевое тут не строки кода а взаимодействие модулей
то что в системе может быть условно 2 пакета разных вендоров предоставляющих алгоритм uuid4 например, которые внутри могут быть форком другова пакета
для меня эта ситуация будет лишь нарушением dry и srp, а модули которые юзали uuid4 при схлопывание этих зависимостей будут иметь столько же внешних связей(coupling) такого же типа (что ничего не поменяется кроме использование другова пакета когда убираться дублирование будет)
но это мое имхо и у каждого своя истина и каждый может ошибаться