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>
ensure_fields со story_points и board_id читает и пишет оценку через
/rest/agile/1.0/issue/{key}/estimation?boardId=… — поле оценки в Jira банка не на экране
редактирования, PUT /issue его отклоняет. Остальные поля — как раньше; без board_id — путь v15.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
M-1: при ошибке чтения настроек kanban-доски kanban_backlog = null и запрос бэклога не делается.
M-2: ensure_sprint_meta с rename_to, имя которого занято только закрытым спринтом, — failed «имя занято».
M-3: sprint_state принимает только целый id > 0 и непустое строковое name, нестроковые
даты и goal дают null (как check_boards хаба).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
C-1 финального ревью: ensure_sprint_state closed определял готовые задачи по именам
через молча неполный кэш /status и мог необратимо перенести выполненные задачи.
Теперь id статусов последней колонки берутся из configuration, у задач — status.id;
пустой набор id — failed без записи, задача без status.id считается незавершённой.
В board_columns неизвестный id один раз за команду перечитывает /status, затем пишет
в лог; колонка без строкового имени пропускается с логом. Решение R-83.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Версия 15: команды ensure_sprint_meta, ensure_sprint_state, ensure_rank,
story_points в ensure_fields, расширение refresh (rank, story_points,
sprint_ids, boards). Документация: README, ARCHITECTURE, CLAUDE.md;
решения R-64…R-75 перенесены в design.md; исправлен способ получения
смещения дат спринта (R-68). Версии 14 в тестах test_folder и test_history
подняты до 15.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Команда ищет спринт доски по имени, создаёт его или записывает только
отличающиеся имя, даты (по дню), цель. Повтор после переименования
находит спринт по новому имени; оба имени заняты — ошибка без записи.
Даты проверяются первыми, доска берётся только из команды.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Пути ../sdlc-hub, команды sdlc-hub tokens и sdlc-hub agent publish
(sdlc-hub#97, PR #99). src/agent.py и src/run.py — со следующим релизом.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Поле comment в том же search; при неполном списке — дочитывание /issue/{key}/comment по 100.
Спека: jira-hub/openspec/changes/issue-card-modal/ (agent, «Чтение состояния»).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
wait_child запоминает подтверждение (любое состояние update.json, кроме trial этой версии, пока агент жив),
а итоговое решение учитывает и случай, когда ok и следующая запись уложились между опросами.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Диск полон или нет прав при записи agent.py.new, selftest или update.json
больше не роняет агент трейсбеком: это временный сбой, повтор через 5 минут.
Ошибка записи update.json при отказе версии только логируется.
Неполная публикация (version не int, sha256 не 64 hex в нижнем регистре)
отбрасывается с подсказкой не чаще раза в час; таймеры подсказок разделены по видам.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Jira банка на GET /rest/agile/1.0/issue/{key}?fields=sprint у задачи без спринта отвечает без ключа fields;
агент падал с KeyError. Фейк Jira теперь отвечает так же.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>