leaking abstraction. Это когда у тебя есть зависимость например и твой код учитывает особенности работы этой зависимости. То есть "знание о том как оно там работает" вытекает наружу и влияет на клиентский код (тот который зависимостью пользуется).
Мне оч нравится тут пример - есть у тебя скажем mysql с автоинкрементами, значения которых ты получаешь уже после вставки, и всякие postgresql с секвенсами где значение идентификатора можно получить до вставки. При попытке "закрыть" это какой-то абстракцией клиентскому коду придется учитывать как это все работает.
Проблема текущих абстракций - если абстракция не закрывает собой знание о том как чего работает то вместо упрощения мы часто можем получить усложнение системы. Цель абстракции все же "скрывать" от нас детали реализации, если они скрываются не полностью это увеличивает сложность и как следствие может приводить к проблемам.
При этом "протечки" абстракций могут происходит и с соблюдением инверсии зависимостей и т.д.