# .importlinter — машинная защита границ слоёв (волна 0, задача 4).
#
# Запуск:  uv run --with import-linter lint-imports
#
# librarykit — оркестратор сессий (L2): не знает про CLI-обвязку, браузерный
# кит, пул аккаунтов (кроме одной намеренной поздней двери — см. ignore_imports
# ниже) и про продукты/домены сверху.

[importlinter]
include_external_packages = True
root_packages =
    librarykit
exclude_type_checking_imports = True

[importlinter:contract:librarykit-no-upstream]
name = librarykit не знает про clikit/adapterkit/accountpoolkit/продукты/домены
type = forbidden
source_modules =
    librarykit
forbidden_modules =
    clikit
    adapterkit
    accountpoolkit
    gateway
    bublictr
    socialkit
    aichatkit
ignore_imports =
    # TODO волна N: librarykit.session_source._provider() лениво импортирует
    # accountpoolkit.session_db для ПОЗДНЕГО самозаполнения слота хранилища
    # сессий (единственное место, единственная строка, под try/except — если
    # домен-кита нет, тихо возвращаем None). Это настоящая связь оркестратора
    # с потребителем сверху, а не мнимая: убрать её значит перепроектировать
    # регистрацию хранилища через явный DI на стороне вызывающего, чего волна 0
    # не делает. Оставлено как долг для будущей волны.
    librarykit.session_source -> accountpoolkit
