diff --git a/openspec/changes/attachment-fetch/design.md b/openspec/changes/attachment-fetch/design.md index a3c0e88..1735e3a 100644 --- a/openspec/changes/attachment-fetch/design.md +++ b/openspec/changes/attachment-fetch/design.md @@ -156,3 +156,13 @@ 15. 2026-10-22 — **при повторе имени «самое новое» вложение — максимум по `(created_at, число id, id)`.** Обоснование: детерминированный выбор при равных временах (Jira отдаёт id по возрастанию). Цена ошибки: ссылка по имени укажет на соседнее вложение — исправляется порядком ключа. +16. 2026-10-22 — **порядок отказов в `request_fetch`: сначала `agent_too_old` (409), потом размер (413).** Обоснование: старый + агент не скачает и маленький файл, а размер человек увидит и так; отказ по агенту не зависит от вложения. Цена ошибки: + для большого файла при старом агенте покажем 409 вместо 413 — несущественно. (R-3, T3.1.) +17. 2026-10-22 — **`TooLarge` наследует `CommandError` (в `POST /batches` — 422), в маршруте `…/fetch` ловится раньше и даёт + 413; `attachment_id` в команде — только цифры; оба отказа `done` (нет файла, чужой размер) дают один текст «хаб: файл + не найден в хранилище».** Обоснование: одна проверка размера на постановку из любого входа; Jira-id — число. + Цена ошибки: поменять класс исключения / текст. (R-4, решение исполнителя Task 3.) +18. 2026-10-22 — **`pacing_from_config` и запасной зазор: `fetch_attachment` = 2 с и там, и в `DEFAULT_PACING`.** Обоснование: + иначе `init` из config расходится с умолчанием и сохранённая настройка без нового типа ломает выдачу. Цена ошибки: нет. + (R-5.)