# .importlinter — машинная защита границ (волна 3, задача 3).
#
# Запуск:  uv run --with import-linter lint-imports
#
# sessionkit — ВЛАДЕЛЕЦ сессии, не её реализация. Носители (файловое дерево
# authkit_client, база accountpoolkit) объявляют себя entry-points группы
# `sessionkit.stores` и грузятся по имени из метаданных установки; librarykit —
# оркестратор выше по слою и ПОТРЕБИТЕЛЬ двери. Ни одно из трёх имён кит не
# импортирует нигде — ни наверху модуля, ни лениво внутри функции: ленивый
# импорт тоже импорт, и grimp его видит. До 0.1.0 discovery.py называл два
# чужих пакета прямо и был единственным таким местом; контракт держит «ноль».

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

[importlinter:contract:sessionkit-owns-no-implementations]
name = sessionkit не импортирует носители и оркестраторы
type = forbidden
source_modules =
    sessionkit
forbidden_modules =
    authkit_client
    accountpoolkit
    librarykit
    clikit
    adapterkit
    browserkit
    netkit
    gateway
    bublictr
