From 3dbca034ad74b86a9d1a1eae7a09c5522cc78eb7 Mon Sep 17 00:00:00 2001 From: Andrey Epifancev Date: Sun, 25 Oct 2026 21:39:19 +0400 Subject: [PATCH] Design-only change agent-v16-sp-estimation (#53) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Оценка из ensure_fields через /rest/agile/1.0/issue/{key}/estimation доски: поле оценки не на экране редактирования Jira банка. Контракт — sdlc-hub#113. Co-Authored-By: Claude Opus 5.5 --- .../changes/agent-v16-sp-estimation/design.md | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 openspec/changes/agent-v16-sp-estimation/design.md diff --git a/openspec/changes/agent-v16-sp-estimation/design.md b/openspec/changes/agent-v16-sp-estimation/design.md new file mode 100644 index 0000000..33abe4c --- /dev/null +++ b/openspec/changes/agent-v16-sp-estimation/design.md @@ -0,0 +1,34 @@ +# agent-v16-sp-estimation — решения агента + +Спека и дизайн изменения — в `sdlc-hub/openspec/changes/sp-estimation-board/` (issue aep/sdlc-hub#113, aep/jira-agent#53). +Агентская часть: требование `agent` «Спринты, ранг и оценки» (MODIFIED: оценка через доску) и строка `ensure_fields` +в `commands` «Команда — желаемый результат на одной задаче» (MODIFIED: `board_id` при `story_points`, чтение и запись +оценки через `/rest/agile/1.0/issue/{key}/estimation`). Версия агента — 16. + +## Причина + +Jira банка 25.10.2026 отклонила `PUT /rest/api/2/issue/{key}` с `customfield_15852`: «Field cannot be set. It is not on +the appropriate screen, or unknown». Поле оценки не на экране редактирования; бэклог Scrum ставит его через доску. +Владелец проверил в браузере: `GET /rest/agile/1.0/issue/AURORA-1704/estimation?boardId=4216` → +`{"fieldId":"customfield_15852","value":1.0}`. + +## Решения агента + +1. **`ensure_fields` с `story_points` и `board_id`:** `GET AGILE/issue/{key}/estimation?boardId=`, сравнение + `_same_points(value, want)`; отличается — `PUT` туда же `{"value": want}` (`null` — очистить). `field_ids.story_points` + и `GET /field` для этого не нужны. +2. **Остальные поля — как v15**, `PUT /issue` только с ними; `GET /issue` — только если в команде есть поля, кроме + оценки (`key`, `board_id`, `story_points` не считаются). +3. **Порядок:** сначала `PUT /issue` с остальными полями, затем оценка. Ошибка оценки — исключение HTTP наружу, как у + прочих вызовов Jira (команда `failed` с текстом Jira). +4. **Без `board_id`** — оценка через `PUT /issue` в поле `field_ids.story_points`/найденное по имени, как v15. +5. **Проверка значения** (`число ≥ 0 или null`) — до любых вызовов Jira, как v15. + +## Decisions made without discussion + +| Дата | Решение | Обоснование | Цена ошибки | +|---|---|---|---| +| 25.10.2026 | R-1: без `board_id` — путь v15 | совместимость с хабом до #113 | нет | +| 25.10.2026 | R-2: сначала остальные поля, затем оценка | новый путь не должен ломать остальные поля | частичная запись, повтор безопасен | +| 25.10.2026 | R-3: без `GET /issue`, если в команде только оценка | минус вызов Jira на команду в пакете оценок | нет | +| 25.10.2026 | R-5: `value` — число как есть | Jira отдаёт число; живая проверка до пакета | одна правка агента |