Files
slm-design/DRAFT/rules/level-3.md

4.8 KiB
Raw Blame History

Правила SLM третьего уровня

Проект Level 3 соблюдает правила Levels 1-2, кроме заменённого SLM-L2-DOMAIN-R001 и расширенного состава Groups внутри слоя domains, и дополнительные правила этого реестра.

Граница Domain

SLM-L3-DOMAIN-R001

Предметная граница Domain

Каждая самостоятельная предметная область слоя domains представлена ровно одним Domain; его role modules относятся только к этой области.

SLM-L3-DOMAIN-A002

Корень Domain

Корень Domain не содержит файлов реализации, изменяемого состояния, ресурсов жизненного цикла, публичного API или реэкспортов и содержит только допустимые role modules и Groups.

Business и factory

SLM-L3-BUSINESS-R003

Business contract Domain

Каждый Domain содержит ровно один module business, который определяет публичные business scenarios, business contracts, domain errors и семантику domain state.

SLM-L3-BUSINESS-A004

Изоморфный graph business

Production import graph, достижимый из public entrypoint business, не достигает framework code, environment boundary, platform API, concrete runtime, adapter, preset или framework module.

SLM-L3-FACTORY-R005

Contract factory

Business factory получает полный набор собственных ports и создаёт стабильный business API независимо от execution environment; среда не выражается через mode, optional port или метод, намеренно недоступный в части сред.

SLM-L3-FACTORY-R006

Создание API instance

Вызов business factory не выполняет ввод-вывод, не читает скрытое окружение, не запускает ресурс жизненного цикла, не выбирает concrete adapter и не выполняет framework lifecycle.

SLM-L3-PORT-R007

Business-owned port

Каждая runtime capability, вызываемая business, описывается минимальным business-owned port, public contract которого не раскрывает concrete runtime, framework или environment types.

Assembly

SLM-L3-ADAPTER-R008

Ответственность adapter

Adapter преобразует concrete runtime в business port и не определяет business invariant, domain fallback или domain error.

SLM-L3-PRESET-R009

Роль preset

Preset module собирает business API для одного именованного execution context выбором implementations ports и не изменяет business contract или scenarios.

SLM-L3-ASSEMBLY-R010

Исполнение lifecycle contract

Graph owner удерживает API instance только в scope, объявленном module-владельцем, и вызывает предоставленные ему lifecycle operations; module-владелец определяет lifecycle contract resource по правилам Level 1.

Междоменные и environment зависимости

SLM-L3-DEPENDENCY-R011

Междоменная runtime-граница

Business одного Domain не создаёт и не импортирует runtime API другого Domain; необходимая capability описывается собственным port и передаётся graph owner при assembly.

SLM-L3-ENVIRONMENT-A012

Environment import graph

Public entrypoint, обозначенный как client-only, server-only или isomorphic, не импортирует и не реэкспортирует transitive graph несовместимой среды выполнения.

Framework и verification

SLM-L3-FRAMEWORK-R013

Framework module Domain

Framework-specific code находится в module Domain, названном именем framework, получает готовый business API и не реализует business decisions или concrete adapters.

SLM-L3-TEST-R014

Проверка business contract

Каждый public business scenario проверяется factory-level tests с controlled implementations ports; primary tests adapter, preset и framework module проверяют их собственную границу и не дублируют scenario matrix business.