docs: документация переведена на канон av-dev-pm

- беклог и план переехали в docs/tasks (38 задач, 11 целей), слаги
  переименованы с транслита на английские, 85 ссылок поправлены
- conventions.md разобран в docs/conventions/, local-research.md — в
  docs/research/, review-journal.md — в docs/review.md с разделом настройки
  конвейера; заведены security.md, adr/ и .pm.json
- шаг docs.py check добавлен в task gate; поведение в architecture.md помечено
  девятью маркерами долга, database.md получил настройки с числовым значением
This commit is contained in:
av
2026-08-03 17:14:53 +03:00
parent de7b15d48c
commit d79189be18
94 changed files with 1234 additions and 566 deletions
@@ -0,0 +1,29 @@
# Управление токенами и секретами
**Секция:** инфра · **Хук:** Проверка токенов выключена, config.docker.toml коммитится — так нельзя выезжать наружу · **Теги:** goal:deploy
Сейчас проверка токенов выключена сознательно — доверенная локальная сеть, — и
`config.docker.toml` коммитится без секретов. Для локальной разработки это
правильно, но это же делает выезд наружу опасным: одна забытая настройка
открывает историю здоровья всему интернету.
**Контуров теперь два, а не один.** С появлением каталога
(`GET /api/v1/metrics`, change `2026-08-02-katalog-i-rod-agregacii`) заработал
токен чтения, и цена у контуров разная: открытый приём означает мусор во входе,
открытое чтение — выгрузку всей истории здоровья любому, кто нашёл порт. Сервис
предупреждает на старте обоими сообщениями (`write auth disabled`,
`read auth disabled`), образцы конфига цену называют комментарием — но отказа
старта нет, и это решение осталось здесь.
Решается перед деплоем, не раньше — так договорились.
Шаги:
- раздельные токены приёма и чтения, генерация и хранение вне репозитория;
- сервис громко предупреждает на старте, если проверка выключена (уже есть),
и **отказывается стартовать**, если адрес прослушивания публичный, а токенов
нет;
- проверка в гейте, что в коммит не уехал файл с токеном (частично закрыта
`gitleaks`).
Готово, когда запуск без токенов возможен только на localhost, а на rivendell
оба контура закрыты разными токенами.