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>