из канона удалены пустые локальные регионы
- 31 регион `<!-- local:имя -->` в двенадцати файлах удалён, а не перенесён: локальное принадлежит копии и живёт ниже маркера `<!-- conv:local -->` (META-22), так что наполнять регионы в каноне нечем - вместе с ними ушли два опустевших раздела «Связано» — в arch и ansible слоях app-directories канонических ссылок нет, а пустой заголовок ничего не адресует; CLAUDE.md уточнён: раздел заводят, когда ссылки есть - форма проверена скриптом: у всех правил модальность и «Почему», префиксы сходятся с реестром, дыр в нумерации нет
This commit is contained in:
@@ -153,14 +153,3 @@ prefix: DIRS
|
||||
предупреждения. Вдобавок директория конфигурации может быть подключена
|
||||
только на чтение — тогда запись отказывает в рантайме. Ни то ни другое не
|
||||
видно в момент, когда приложение настраивают.
|
||||
|
||||
<!-- local:отступления -->
|
||||
<!-- /local -->
|
||||
|
||||
## Связано
|
||||
|
||||
<!-- local:эталон -->
|
||||
<!-- /local -->
|
||||
|
||||
<!-- local:связано -->
|
||||
<!-- /local -->
|
||||
|
||||
@@ -85,8 +85,6 @@ prefix: CONF
|
||||
Приложение, которое запускается вообще без конфигурации, этой конвенцией не
|
||||
описывается: это отдельный случай и отдельная конвенция.
|
||||
|
||||
<!-- local:проверки -->
|
||||
<!-- /local -->
|
||||
### CONF-4. В репозитории лежит образец, а не рабочий конфиг
|
||||
|
||||
**НЕ ДОЛЖЕН.** Реальный конфиг не коммитится; в репозитории — образец.
|
||||
@@ -233,9 +231,6 @@ prefix: CONF
|
||||
записи. Типичный источник утечки — отладочный дамп разобранного конфига при
|
||||
старте.
|
||||
|
||||
<!-- local:секретные-поля -->
|
||||
<!-- /local -->
|
||||
|
||||
### CONF-17. Конфиг валидируется на старте, до приёма трафика
|
||||
|
||||
**ДОЛЖЕН.** Невалидный конфиг — запись уровня `ERROR` и выход с ненулевым
|
||||
@@ -301,6 +296,3 @@ prefix: CONF
|
||||
конфигурируемый параметр времени, семантика описана там.
|
||||
- конвенция `app-directories` — конфиг лежит в категории «конфигурация» и
|
||||
доступен приложению только на чтение.
|
||||
|
||||
<!-- local:связано -->
|
||||
<!-- /local -->
|
||||
|
||||
@@ -134,12 +134,6 @@ KEYS-1 требует **сортируемый** строковый иденти
|
||||
внутри одной миллисекунды порядок произволен, если генератор не монотонный,
|
||||
— на порядок событий это не влияет.
|
||||
|
||||
<!-- local:отступления -->
|
||||
<!-- /local -->
|
||||
|
||||
## Связано
|
||||
|
||||
- конвенция `time` — метки времени тоже генерирует приложение, а не схема.
|
||||
|
||||
<!-- local:связано -->
|
||||
<!-- /local -->
|
||||
|
||||
@@ -179,17 +179,8 @@ prefix: TIME
|
||||
Зона по умолчанию здесь та же, что и для отображения (TIME-11); календарная
|
||||
логика, которой нужна другая, получает её тем же явным аргументом.
|
||||
|
||||
<!-- local:механизировано -->
|
||||
<!-- /local -->
|
||||
|
||||
<!-- local:отступления -->
|
||||
<!-- /local -->
|
||||
|
||||
## Связано
|
||||
|
||||
- конвенция `config` — где задаётся зона отображения.
|
||||
- конвенция `db-identifiers` — то же правило «генерирует приложение» для
|
||||
идентификаторов.
|
||||
|
||||
<!-- local:связано -->
|
||||
<!-- /local -->
|
||||
|
||||
@@ -220,16 +220,7 @@ zoneinfo, а сообщение указывает не на ту причину
|
||||
во внешний сервис и записать в базу от имени процесса, который потом
|
||||
объявит, что не стартовал.
|
||||
|
||||
<!-- local:поля -->
|
||||
<!-- /local -->
|
||||
|
||||
<!-- local:механизировано -->
|
||||
<!-- /local -->
|
||||
|
||||
## Связано
|
||||
|
||||
- конвенция `time` — зона отображения и формат времени.
|
||||
- конвенция `logging` — `slog`, которым падает невалидный конфиг.
|
||||
|
||||
<!-- local:связано -->
|
||||
<!-- /local -->
|
||||
|
||||
@@ -126,9 +126,3 @@ HTTP-кодов. В случае GKEY-8.1 снаружи это неотличи
|
||||
строка не найдена, потому что store её искал. Сфабрикованный транспортом,
|
||||
он утверждает непроверенное, и по типу ошибки перестаёт быть видно, был ли
|
||||
вообще поход в хранилище — а на этом держится вся диагностика по ошибкам.
|
||||
|
||||
<!-- local:механизировано -->
|
||||
<!-- /local -->
|
||||
|
||||
<!-- local:отступления -->
|
||||
<!-- /local -->
|
||||
|
||||
@@ -189,18 +189,9 @@ down останавливает сразу и заставляет пересо
|
||||
вставке — против этого пренебрежима. Для новых таблиц вопрос не возникает:
|
||||
там ключ строковый (MIGR-11).
|
||||
|
||||
<!-- local:механизировано -->
|
||||
<!-- /local -->
|
||||
|
||||
<!-- local:отступления -->
|
||||
<!-- /local -->
|
||||
|
||||
## Связано
|
||||
|
||||
- конвенция `time` — формат меток времени.
|
||||
- конвенция `db-identifiers` — выбор первичных ключей.
|
||||
- конвенция `errors` — граничные ошибки `database/sql` транслируются в
|
||||
доменные у источника, в слое store.
|
||||
|
||||
<!-- local:связано -->
|
||||
<!-- /local -->
|
||||
|
||||
@@ -224,9 +224,6 @@ HTTP-клиентов, файловой системы, внешних SDK.
|
||||
его в `ERROR` вместо `DEBUG`. Второе хуже первого — штатные отказы начинают
|
||||
шуметь в логе ровно там, где по нему ищут настоящие поломки.
|
||||
|
||||
<!-- local:маппинг -->
|
||||
<!-- /local -->
|
||||
|
||||
### GERR-25. Непокрытая маппингом ошибка — 500 и `ERROR` с признаком
|
||||
|
||||
**ДОЛЖЕН.** Доменная ошибка, для которой в маппинге (GERR-15) нет ветви, отдаёт
|
||||
@@ -391,6 +388,3 @@ HTTP-клиентов, файловой системы, внешних SDK.
|
||||
|
||||
- конвенция `logging` — где и когда ошибка попадает в лог.
|
||||
- `KEYS-7` — формат корреляционного ключа из `GERR-14`.
|
||||
|
||||
<!-- local:механизировано -->
|
||||
<!-- /local -->
|
||||
|
||||
@@ -238,9 +238,6 @@ dev-выводом перестаёшь ежедневно гонять собс
|
||||
появлением нескольких инстансов различающее поле (`service.version`)
|
||||
добавляется одной строкой при старте.
|
||||
|
||||
<!-- local:словарь -->
|
||||
<!-- /local -->
|
||||
|
||||
## Корреляция
|
||||
|
||||
### SLOG-18. Ключ корреляции — идентификатор сущности, а не `trace_id`
|
||||
@@ -317,9 +314,6 @@ ctx = logctx.With(ctx, log) // достаём логгер из ctx в кажд
|
||||
знает лишь то, что ему вернули ошибку. Побочный эффект того же выбора:
|
||||
транспорты остаются тонкими.
|
||||
|
||||
<!-- local:границы -->
|
||||
<!-- /local -->
|
||||
|
||||
### SLOG-24. Транспорт не логирует ошибку повторно
|
||||
|
||||
**НЕ ДОЛЖЕН.** Транспорт переводит возвращённую ошибку в свой ответ
|
||||
@@ -530,9 +524,6 @@ API-ключи и токены, `Authorization`-заголовки, аутент
|
||||
санитизацию в каждой такой точке, и одна забытая сводит остальные на нет.
|
||||
Заголовок снимает задачу в источнике: чего нет в URL, того нет и в ошибке.
|
||||
|
||||
<!-- local:секреты -->
|
||||
<!-- /local -->
|
||||
|
||||
## Куда пишем
|
||||
|
||||
### SLOG-39. Логи идут в `stdout` одним потоком
|
||||
@@ -563,6 +554,3 @@ API-ключи и токены, `Authorization`-заголовки, аутент
|
||||
санитизации (SLOG-37).
|
||||
- конвенция `db-identifiers` — откуда берутся стабильные идентификаторы,
|
||||
на которых держится корреляция (SLOG-18).
|
||||
|
||||
<!-- local:механизировано -->
|
||||
<!-- /local -->
|
||||
|
||||
@@ -183,9 +183,6 @@ func utcTime(_ []string, a slog.Attr) slog.Attr {
|
||||
Календарные вычисления бизнес-логики берут зону явно — как описано в
|
||||
базовом слое.
|
||||
|
||||
<!-- local:механизировано -->
|
||||
<!-- /local -->
|
||||
|
||||
## Связано
|
||||
|
||||
- базовый слой — UTC как формат хранения, нормализация чужого входа, явная
|
||||
|
||||
@@ -56,9 +56,6 @@ extends: arch/app-directories.md
|
||||
изоляцией по приложениям решают разные задачи, и навязывать одну модель
|
||||
обоим значит гарантировать вечное отступление.
|
||||
|
||||
<!-- local:модель-владельца -->
|
||||
<!-- /local -->
|
||||
|
||||
### ANSD-4. Список бэкапа собирается из тех же переменных
|
||||
|
||||
**ДОЛЖЕН.** Плейбук кладёт в `base_dir` файл `backup-targets`, строки
|
||||
@@ -116,11 +113,3 @@ extends: arch/app-directories.md
|
||||
деплой такого приложения. Способ вынужденный: секрет попадает в метаданные
|
||||
контейнера и в compose-файл на диске. Приложение, научившееся читать
|
||||
секреты из файла, переводится на ANSD-8 при ближайшем касании.
|
||||
|
||||
<!-- local:отступления -->
|
||||
<!-- /local -->
|
||||
|
||||
## Связано
|
||||
|
||||
<!-- local:связано -->
|
||||
<!-- /local -->
|
||||
|
||||
@@ -493,9 +493,3 @@ diff'е — у закоммиченного минифицированного
|
||||
третья сторона, видящая каждый запрос пользователя. Самодостаточный бинарь
|
||||
вдобавок разворачивается в сети без выхода наружу, где CDN просто не
|
||||
отвечает.
|
||||
|
||||
<!-- local:эталоны -->
|
||||
<!-- /local -->
|
||||
|
||||
<!-- local:отступления -->
|
||||
<!-- /local -->
|
||||
|
||||
Reference in New Issue
Block a user