diff --git a/openspec/changes/slice-0-skeleton/design.md b/openspec/changes/slice-0-skeleton/design.md index 62ef6d1..e807d7d 100644 --- a/openspec/changes/slice-0-skeleton/design.md +++ b/openspec/changes/slice-0-skeleton/design.md @@ -122,3 +122,8 @@ compose-NATS/MinIO — реальный запрос из примера `reques | 40 | 2026-10-04 | R-33 (D10-5): остановка воркера проверяется в teardown через приватный `worker._tasks` | дешёвая проверка чистой остановки (T10.1: проверка тавтологична — править в cleanup) | хрупкая связь с приватным полем | | 41 | 2026-10-04 | R-34 (отменяет R-11, I-1 финального ревью): добавляется `.dockerignore` (исключает `api/.env`, `api/.venv`, кэши, `api/tests`, `.superpowers`), строка `.dockerignore` убирается из `.gitignore` | образ собирается `make check-full` из рабочего дерева с `api/.env` и `api/.venv` (проверено: в образе были `.env` с паролем MinIO и `.venv` 159 МБ; `SERVER__HOST=127.0.0.1` из `.env.example` сделал бы контейнер недоступным) | вернуть строку в `.gitignore`, удалить файл | | 42 | 2026-10-04 | R-35 (M-1 финального ревью): `SERVICE_NAME` остаётся настройкой с типом `Literal["tabular-parser"]`; queue group — константа `REQUEST_QUEUE_GROUP`; формулировки «SERVICE_NAME — имя queue group» исправляются | настройка не управляла группой и могла привести к падению lifespan при другом значении | снять Literal | +| 43 | 2026-10-04 | R-36: `.dockerignore` исключает сверх перечня также `api/.env.test`, `.claude`, `setup`, `.gitignore`, `.bounded`, `**/*.pyc`, `**/.DS_Store`; `api/.env.example` остаётся в образе | документация без секретов; образ без dev-артефактов | лишний файл в образе / одна строка | +| 44 | 2026-10-04 | R-37: отказ в правах NATS логируется на каждый `-ERR` без лимита частоты (`error_category=nats_permission`) | сервер шлёт -ERR на каждую запрещённую операцию; видимость важнее шума | шум в логе (до 8 строк на задание при запрете публикации); лимит — как у ошибок подключения | +| 45 | 2026-10-04 | R-38: `DRAIN_TIMEOUT = 10 с` для NATS | 10 (STOP_TIMEOUT) + 10 (drain) + закрытие S3 < 30 с grace-периода платформы | константа | +| 46 | 2026-10-04 | R-39: тест «старт с минимальным окружением» разнесён: умолчания Settings — `test_config.py`, `/healthcheck` — `test_app.py`; фабрика Settings в `tests/conftest.py` | фикстуры фейковых NATS/S3 живут в test_app.py; тестовые модули не импортируют друг друга | перенос | +| 47 | 2026-10-04 | R-40: страж зависимостей сравнивает имена пакетов по PEP 503 | `argon2_cffi` = `argon2-cffi` | ложный пропуск при нестандартном написании |