[importlinter]
root_package = rememberstack

[importlinter:contract:model-is-independent]
name = Model imports no other rememberstack layer
type = forbidden
source_modules =
    rememberstack.model
forbidden_modules =
    rememberstack.core
    rememberstack.spine
    rememberstack.ports
    rememberstack.adapters
    rememberstack.llm
    rememberstack.workers
    rememberstack.surfaces
    rememberstack.eval
    rememberstack.profiles

[importlinter:contract:core-only-depends-on-model]
name = Core depends only on model
type = forbidden
source_modules =
    rememberstack.core
forbidden_modules =
    rememberstack.spine
    rememberstack.ports
    rememberstack.adapters
    rememberstack.llm
    rememberstack.workers
    rememberstack.surfaces
    rememberstack.eval
    rememberstack.profiles

[importlinter:contract:workers-do-not-import-adapters]
name = Workers do not import adapters
type = forbidden
source_modules =
    rememberstack.workers
forbidden_modules =
    rememberstack.adapters

[importlinter:contract:surfaces-do-not-import-adapters]
name = Surfaces do not import adapters
type = forbidden
source_modules =
    rememberstack.surfaces
forbidden_modules =
    rememberstack.adapters

[importlinter:contract:profiles-own-adapter-composition]
name = Only profiles compose adapters
type = forbidden
source_modules =
    rememberstack.model
    rememberstack.core
    rememberstack.spine
    rememberstack.ports
    rememberstack.llm
    rememberstack.workers
    rememberstack.surfaces
    rememberstack.eval
forbidden_modules =
    rememberstack.adapters
