Andrey Epifancev 20747c2b65 Агент v16: зазор между записями и сверка поля оценки доски (#53, I-1, I-2)
I-1: если ensure_fields записал поля через PUT /issue, перед записью оценки — зазор
ensure_fields. I-2: fieldId оценки доски сверяется с field_ids.story_points; расхождение —
failed без записи.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 22:28:19 +04:00

3.9 KiB
Raw Blame History

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=<board_id>, сравнение _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 отдаёт число; живая проверка до пакета одна правка агента
25.10.2026 I-1 (финальное ревью): между PUT /issue и PUT …/estimation одной команды — зазор ensure_fields политика темпа: зазор между записями внутри команды пакет «оценка + поля» идёт медленнее
25.10.2026 I-2 (финальное ревью): fieldId оценки доски сверяется с field_ids.story_points (если задан), расхождение — failed без записи иначе число уйдёт в чужое поле доски другого проекта лишний отказ, если поле настроено неверно — правится настройкой