компоненты как адресат сборки и плоский набор

- компонент — область репозитория, где выбранные слои действуют
  одновременно; сборка идёт по разу на компонент, у каждого своя директория
  копий, подписка и локальная часть, секции [components.<имя>] в манифесте
- плоский набор описан как низкий конец модели, а не отдельный режим: тема с
  одним слоем собирается копированием, ключи оси и lang/stack не пишутся
- в TODO заведён вопрос о реестре значений осей и судьбе extends:
This commit is contained in:
av
2026-07-26 22:01:39 +03:00
parent 787d0bb5ea
commit 9c86d9f2de
5 changed files with 206 additions and 48 deletions
+17
View File
@@ -143,6 +143,8 @@ code in this repository.
- META-33: правило стоит в теме, чей вопрос оно решает. Тема — решение, а не
вещество: «время» проходит через несколько решений сразу, и правило о
колонках БД принадлежит схеме, а не времени.
- META-37: имя темы называет решение и адресата, а не роль части проекта:
`logging` и `client-logging`, но не `logging-backend`/`logging-frontend`.
- META-34: тема нужна потребителю целиком — подписка берёт её без остатка.
Если два правдоподобных потребителя хотят непересекающиеся части, между
ними и проходит граница.
@@ -160,6 +162,21 @@ code in this repository.
потребителей. `extends: arch/<файл>.md` в шапке — документация связи, а не
механизм; слой только реализует и сужает базу, но не отменяет её (META-35).
META-38: ось объявлена в шапке ключами `lang:` и `stack:`, а не выведена из
пути; без обоих ключей файл — базовый слой темы. Директория повторяет
объявленное для человека. Осей может не быть вовсе: набор, где у темы один
слой, — низкий конец той же модели, а не особый режим.
## Компоненты
Компонент — область репозитория, где все выбранные слои действуют
одновременно (`sqlite` и `postgres` — да, go и javascript — никогда). Уровней
три: набор → проект → компонент. Сборка прогоняется по разу на компонент, у
каждого своя директория копий, своя подписка и своя локальная часть; в
`.conventions.toml` они записаны секциями `[components.<имя>]` с ключами
`dir`, `lang`, `stack`, `topics`. Компонент пишется всегда, даже когда он
один. Директории компонентов различны — этим копии и разводятся.
## Оформление файла
Шапка `topic:` и `prefix:` (плюс `extends:`) → `# Тема` → вводная проза →