mirror of
https://github.com/gromlab-ru/slm-design.git
synced 2026-08-22 07:30:16 +03:00
74 lines
4.0 KiB
Markdown
74 lines
4.0 KiB
Markdown
---
|
||
title: SLM Design Specification
|
||
version: 0.1.0-draft
|
||
status: draft
|
||
normative: true
|
||
---
|
||
|
||
# SLM Design Specification
|
||
|
||
Эта директория содержит единый нормативный корпус SLM Design 2.0. Спецификация разделена на главы, но имеет общую версию, общий статус и единый приоритет правил.
|
||
|
||
Пока статус равен `draft`, документы описывают проектируемую архитектуру и не заменяют действующую документацию в `docs/`.
|
||
|
||
## Нормативный язык
|
||
|
||
| Термин | Значение |
|
||
|---|---|
|
||
| `ОБЯЗАН` | Требование необходимо выполнить для соответствия спецификации |
|
||
| `ЗАПРЕЩЕНО` | Действие является нарушением спецификации |
|
||
| `СЛЕДУЕТ` | Рекомендуемое решение; отступление требует явного обоснования |
|
||
| `МОЖЕТ` | Допустимый, но необязательный вариант |
|
||
|
||
Правила имеют стабильные идентификаторы вида `SLM-AREA-NNN`. Точное нормативное требование принадлежит только той главе, где объявлен его rule ID. Обзорная глава может ссылаться на правило, но не должна объявлять его повторно под новым ID.
|
||
|
||
## Приоритет
|
||
|
||
**SLM-DOC-001 - ОБЯЗАН.** При конфликте между главами спецификации и любым ненормативным материалом приоритет имеет спецификация.
|
||
|
||
**SLM-DOC-002 - ЗАПРЕЩЕНО.** Ненормативный документ не может вводить новое обязательное правило, исключение или архитектурную границу.
|
||
|
||
**SLM-DOC-003 - ОБЯЗАН.** Изменение принятого архитектурного правила должно вноситься в главу, которая владеет соответствующим rule ID.
|
||
|
||
## Главы
|
||
|
||
### Основы
|
||
|
||
- [Основные инварианты](./foundations.md)
|
||
- [Терминология](./terminology.md)
|
||
- [Архитектурная модель](./architecture-model.md)
|
||
|
||
### Слои
|
||
|
||
- [Обзор слоёв](./layers/index.md)
|
||
- [App](./layers/app.md)
|
||
- [Compositions](./layers/compositions.md)
|
||
- [Domains](./layers/domains/index.md)
|
||
- [Infra](./layers/infra.md)
|
||
- [UI](./layers/ui.md)
|
||
- [Shared](./layers/shared.md)
|
||
|
||
### Внутренняя модель Domains
|
||
|
||
- [Business](./layers/domains/business.md)
|
||
- [Framework surface](./layers/domains/framework.md)
|
||
- [Ports и adapters](./layers/domains/ports-and-adapters.md)
|
||
- [Client и server assembly](./layers/domains/client-and-server.md)
|
||
- [Cross-domain boundary](./layers/domains/cross-domain-boundary.md)
|
||
|
||
### Общие правила
|
||
|
||
- [Модули и группы](./modules-and-groups.md)
|
||
- [Сегменты](./segments.md)
|
||
- [Public API и импорты](./public-api-and-imports.md)
|
||
- [State и data](./state-and-data.md)
|
||
- [Runtime и lifecycle](./runtime-and-lifecycle.md)
|
||
- [Тестирование и соответствие](./testing-and-conformance.md)
|
||
- [Монорепозитории](./monorepo.md)
|
||
|
||
## Область текущего draft
|
||
|
||
Спецификация фиксирует уже согласованные границы слоёв, доменов, business-фабрик, adapters, runtime assembly и cross-domain composition.
|
||
|
||
Точная форма React Providers, окончательная политика package extraction для domains и единая модель query cache не фиксируются сверх явно объявленных в соответствующих главах инвариантов.
|