[importlinter]
root_package = master_orchestrator
include_external_packages = False

# 基础层：纯数据/工具，不允许依赖任何业务模块
[importlinter:contract:foundation-isolation]
name = Foundation layer cannot import business modules
type = forbidden
source_modules =
    master_orchestrator.model
    master_orchestrator.config
    master_orchestrator.exceptions
    master_orchestrator.json_utils
    master_orchestrator.log_context
    master_orchestrator.schema_version
forbidden_modules =
    master_orchestrator.autonomous
    master_orchestrator.orchestrator
    master_orchestrator.self_improve
    master_orchestrator.simple
    master_orchestrator.review_engine
    master_orchestrator.cli

# 存储层：不允许 import 高阶编排
[importlinter:contract:store-isolation]
name = Store layer cannot import business orchestration
type = forbidden
source_modules =
    master_orchestrator.store
forbidden_modules =
    master_orchestrator.autonomous
    master_orchestrator.orchestrator
    master_orchestrator.self_improve
    master_orchestrator.simple
    master_orchestrator.review_engine

# 任务/上下文建模：不允许 import 编排器
[importlinter:contract:task-context-isolation]
name = Task & context layers cannot import orchestrators
type = forbidden
source_modules =
    master_orchestrator.task
    master_orchestrator.context
forbidden_modules =
    master_orchestrator.autonomous
    master_orchestrator.orchestrator
    master_orchestrator.self_improve

# CLI 不能被业务模块反向 import
[importlinter:contract:cli-is-top]
name = CLI must be the top of the stack
type = forbidden
source_modules =
    master_orchestrator.orchestrator
    master_orchestrator.autonomous
    master_orchestrator.simple
    master_orchestrator.store
    master_orchestrator.task
    master_orchestrator.context
    master_orchestrator.self_improve
    master_orchestrator.review_engine
    master_orchestrator.scheduler
forbidden_modules =
    master_orchestrator.cli

# 兼容 shim 不能被业务模块 import
[importlinter:contract:no-legacy-shim-import]
name = Business modules cannot import compatibility shims
type = forbidden
source_modules =
    master_orchestrator
forbidden_modules =
    claude_orchestrator
    codex_orchestrator

# 分层（最严格的一条；如违反过多，CI 阶段可暂时把此契约 disable）
[importlinter:contract:layers]
name = Module layers (loose)
type = layers
containers =
    master_orchestrator
layers =
    cli
    autonomous : self_improve : simple
    orchestrator : review_engine : convergence
    scheduler : claude_cli : codex_cli : provider_router
    store : task : context : architecture
    model : config : exceptions : json_utils : log_context : schema_version
ignore_imports =
    # 渐进式：先豁免已知违反，逐步收紧
    master_orchestrator.cli -> master_orchestrator.**
    master_orchestrator.autonomous.** -> master_orchestrator.**
    master_orchestrator.orchestrator.** -> master_orchestrator.**
exhaustive = False
