From 1def5497e8772788ad555f6bfd36db15a2a84c5a Mon Sep 17 00:00:00 2001 From: Andrey Epifancev Date: Thu, 22 Oct 2026 14:20:08 +0400 Subject: [PATCH] =?UTF-8?q?design.md:=20=D1=80=D0=B5=D1=88=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D1=8F=2014=E2=80=9315=20=D0=BF=D0=BE=20Task=202=20(#83)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 --- openspec/changes/attachment-fetch/design.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/openspec/changes/attachment-fetch/design.md b/openspec/changes/attachment-fetch/design.md index 87c7fb1..a3c0e88 100644 --- a/openspec/changes/attachment-fetch/design.md +++ b/openspec/changes/attachment-fetch/design.md @@ -148,3 +148,11 @@ может не отдать размер; отказывать в таком вложении — терять файл. Цена ошибки: агент читает до 10 МБ лишнего. 13. 2026-10-22 — **пустое вложение принимается от агента.** Обоснование: в Jira бывают пустые файлы; иначе вечный `failed`. Цена ошибки: нет. +14. 2026-10-22 — **`command_id`/`batch_id` в состоянии вложения: при `fetching` — у живой (`queued`/`claimed`) команды, иначе у + последней `fetch_attachment` по этому id; `ready` требует и строку `attachment_file`, и файл в хранилище.** Обоснование: + повторный `POST …/fetch` должен вернуть ту же команду, что идёт, а не историческую; строка без файла — «не скачано» + (решение 2). Цена ошибки: интерфейс покажет чужой command_id в нейтральных состояниях — правка одной функции. + (R-1, правило исполнителя Task 2.) +15. 2026-10-22 — **при повторе имени «самое новое» вложение — максимум по `(created_at, число id, id)`.** Обоснование: + детерминированный выбор при равных временах (Jira отдаёт id по возрастанию). Цена ошибки: ссылка по имени укажет на + соседнее вложение — исправляется порядком ключа.