docs: решения R-29..R-33 (интеграционный тест 4.4) в design.md

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
Andrey Epifancev 2026-10-04 03:27:30 +04:00
parent a62d2e24b1
commit 5c96189146

View File

@ -115,3 +115,8 @@ compose-NATS/MinIO — реальный запрос из примера `reques
| 33 | 2026-10-04 | R-26 (D9-9): `error.message` = `Тип: текст` исключения одной строкой, до 1000 символов, без трассировки | spec: сообщение без трассировки | нет |
| 34 | 2026-10-04 | R-27 (D9-12): остановка во время публикации ack закрывается повторной проверкой `_accepting` после ack (warning `error_category=shutdown`, `job_id` убирается из `_in_progress`), без счётчика in-flight `on_request` | после проверки нет `await` до `put_nowait` — гонки нет | при смене модели остановки — переписать |
| 35 | 2026-10-04 | R-28 (D9-13): невалидный запрос с известным (в работе/обработан) `job_id` логируется (warning) и отбрасывается, `job_id` сравнивается без учёта регистра | иначе `SCHEMA_MISMATCH` ушёл бы под тем же `result:<job_id>:<attempt>`, что и настоящий результат | снять guard |
| 36 | 2026-10-04 | R-29 (D10-1): повторный запрос в интеграционном тесте шлётся после завершения обработки; случай «во время обработки» покрыт unit-тестами с gate | заглушка отвечает за миллисекунды — гонку в интеграционном тесте не воспроизвести детерминированно | нет |
| 37 | 2026-10-04 | R-30 (D10-2): `QUIET_WINDOW = 1.5 с` для отрицательных проверок (нет второго результата / нет ack) | заглушка отвечает за единицы мс; окно названо явно | +3 с к прогону; слишком короткое окно — ложный зелёный |
| 38 | 2026-10-04 | R-31 (D10-3): lifespan приложения в интеграционных тестах — function-scoped (новый воркер и LRU на тест) | изоляция LRU и простое завершение | время прогона |
| 39 | 2026-10-04 | R-32 (D10-4): `reply_deadline` из примера запроса не меняется (в прошлом) | сервис его не проверяет; контракт не требует | если сервис начнёт проверять дедлайн — править пример в тесте |
| 40 | 2026-10-04 | R-33 (D10-5): остановка воркера проверяется в teardown через приватный `worker._tasks` | дешёвая проверка чистой остановки (T10.1: проверка тавтологична — править в cleanup) | хрупкая связь с приватным полем |