Files
slm-design/DRAFT/level-3/domains
2026-07-30 10:05:46 +03:00
..
2026-07-30 10:05:46 +03:00
2026-07-30 10:05:46 +03:00
2026-07-30 10:05:46 +03:00
2026-07-30 10:05:46 +03:00
2026-07-30 10:05:46 +03:00
2026-07-30 10:05:46 +03:00
2026-07-30 10:05:46 +03:00
2026-07-30 10:05:46 +03:00
2026-07-30 10:05:46 +03:00

Domains: рабочие заметки

Статус: исследовательский черновик. Материалы в этой папке не являются спецификацией и пока не задают обязательных правил SLM.

Эта папка фиксирует текущую гипотезу о новой сущности Domain, business-модуле внутри неё, framework-neutral factory, ports, adapters, presets и framework bindings.

Идентификаторы вида DOM-N001 и FAC-N001 являются стабильными якорями заметок. Они нужны для обсуждения и последующего переноса решений в спецификацию, но не являются идентификаторами нормативных правил.

Основная формула

Business определяет ЧТО делать.
Ports описывают ЧТО business нужно.
Factory создаёт business API из ports.
Adapters реализуют ports в конкретной среде.
Preset выбирает adapters, scope и lifecycle.
Framework binding подключает готовый API к React, Vue, Next.js и другим фреймворкам.

Краткая схема:

                         ┌─ browser preset
                         ├─ SSR request preset
Business factory + ports ├─ server action preset
                         ├─ per-test assembly
                         └─ другой application preset

готовый business API instance
  ├─ framework bindings
  ├─ compositions
  └─ другие business factories через ports

Зафиксированные гипотезы

DOM-N001: Domain является отдельной архитектурной сущностью

Domain является границей владения одной предметной областью. Он содержит modules и logical groups с разной технической ролью, но общей доменной принадлежностью.

DOM-N002: Business внутри Domain является модулем

business имеет собственную ответственность и public API, поэтому это module, а не segment. types/, services/, errors/ и lib/ внутри business остаются segments.

FAC-N001: Один business-контракт имеет одну factory

Разные среды выполнения не требуют разных factories, если они предоставляют один и тот же API. Различия среды выражаются ports, adapters и presets.

PRE-N001: Одна factory допускает несколько presets

Browser, SSR, server action, tests и другие контексты могут собирать одну factory с разными реализациями ports.

FAC-N002: Business и factory нейтральны к framework и environment

Изоморфный business import graph не достигает React, Vue, Next.js, browser-only, server-only, SDK, storage implementations и других concrete runtimes.

PRE-N002: Среда является свойством preset

Client/server/request различия определяются preset и выбранными adapters, а не mode внутри factory. Tests создают отдельную per-test assembly напрямую через factory и не требуют общего test preset.

Карта заметок

Предварительная структура приложения

src/
├── app/
├── compositions/
├── domains/
├── infra/
├── ui/
└── shared/

domains/ пока рассматривается как новая верхнеуровневая область, заменяющая разнесение одной доменной ответственности между business/{domain} и compositions/business/{domain}.