Andrey Epifancev 8c606ff8a0 Архив OpenSpec: sp-estimation-board (#113)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 22:29:43 +04:00

5.6 KiB
Raw Blame History

Context

Основа — main af70ba8 (после sprints-backlog #108, схема v9, агент v15). Issue #113, ветка feat/113-sp-estimation-board. Агент — jira-agent#53, ветка feat/53-v16-sp-estimation, design-only change agent-v16-sp-estimation.

Что есть сейчас:

  • агент v15 пишет story_points в PUT /rest/api/2/issue/{key} вместе с остальными полями (do_ensure_fields);
  • Jira банка 25.10.2026 отклонила запись: поле оценки не на экране редактирования;
  • хаб дописывает board_id только в ensure_sprint (по проекту задачи, hooks._assign_boards) и в команды спринта (по проекту пакета, hooks._assign_project_board); retry_params снимает его у этих типов;
  • живые данные: доска 4216 (AWPCA, scrum), поле оценки доски customfield_15852 = field_ids.story_points хаба.

Goals / Non-Goals

Goals: оценки из чата ставятся в Jira банка; повтор без изменений — без записи; контракт ensure_fields для остальных полей не меняется.

Non-Goals: см. proposal.

Decisions

  1. Оценка — через ресурс оценки доски /rest/agile/1.0/issue/{key}/estimation?boardId=… (владелец, 25.10.2026: «давай» на предложенную схему после проверки ресурса в браузере). Так ставит оценку бэклог Scrum; экран редактирования не нужен.
  2. Доска — по проекту задачи, как у ensure_sprint (владелец, 25.10.2026). Те же 422; текст для канбана — свой: «у проекта P канбан-доска, оценка — только на scrum-доске»; задача вне проектов — «… доску для оценки не определить».
  3. board_id только при story_points в параметрах. ensure_fields без оценки проверок доски не проходит — задачи вне проектов правятся, как раньше.
  4. Повтор (command_retry) снимает board_id у ensure_fields — доска определяется заново, как у ensure_sprint.
  5. Подтверждение по зеркалу не меняется: story_points в зеркале — то же поле customfield_15852.

Risks / Trade-offs

  • Формат value в PUT …/estimation. Документация Atlassian показывает строку ("8.5"), Jira отдаёт число (1.0). Агент шлёт число; если Jira банка не примет — правка агента после живой проверки на одной задаче (до пакета).
  • Частичная запись. Остальные поля PUT /issue пишутся до оценки; ошибка оценки — failed, повтор команды остальные поля не меняет (уже совпадают).

Decisions made without discussion

Дата Решение Обоснование Цена ошибки
25.10.2026 R-1. Без board_id в команде агент v16 ставит оценку через PUT /issue, как v15 совместимость с хабом до этого change; агент выкатывается после хаба, но порядок не гарантирован нет: без доски поведение то же, что сейчас
25.10.2026 R-2. Порядок в агенте: сначала PUT /issue с остальными полями, затем оценка оценка — новый путь с риском ошибки; остальные поля не должны зависеть от неё частичная запись при ошибке оценки — повтор безопасен
25.10.2026 R-3. GET /issue не делается, если в команде только оценка пакет оценок — 64 команды; минус один вызов Jira на команду нет
25.10.2026 R-4. Текст 422 для канбана у ensure_fields — отдельный «спринтов нет» вводит в заблуждение для оценки косметика
25.10.2026 R-5. value в PUT …/estimation — число (null — очистить) Jira отдаёт значение числом; проверяется вживую до пакета одна правка агента
25.10.2026 I-1 (финальное ревью): между PUT /issue и PUT …/estimation одной команды — зазор ensure_fields политика темпа: зазор между записями внутри команды пакет «оценка + поля» идёт медленнее
25.10.2026 I-2 (финальное ревью): fieldId оценки доски сверяется с field_ids.story_points (если задан), расхождение — failed без записи иначе число уйдёт в чужое поле доски другого проекта лишний отказ, если поле настроено неверно — правится настройкой