75 Commits

Author SHA1 Message Date
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
Andrey Epifancev
a3247d6f2d Тест версии в состоянии refresh — 16 (#53)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 21:52:45 +04:00
Andrey Epifancev
cb8203f0e1 Агент v16: оценка через estimation доски (#53)
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>
2026-10-25 21:49:05 +04:00
Andrey Epifancev
d71c2f5180 Доработки по финальному ревью v15: kanban без колонок, имя закрытого спринта, строгий фильтр (#49)
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>
2026-10-24 19:46:46 +04:00
Andrey Epifancev
9d3958e337 Сравнивать «готово» при закрытии спринта по id статусов, а не по именам (#49)
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>
2026-10-24 19:42:58 +04:00
Andrey Epifancev
3693578648 Агент v15: версия и документация спринтов, ранга и оценок (#49)
Версия 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>
2026-10-24 19:26:55 +04:00
Andrey Epifancev
5dba989015 Агент: команда ensure_rank — выше или ниже другой задачи (#49)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 19:18:19 +04:00
Andrey Epifancev
33d8a1e7e3 Агент: команда ensure_sprint_state — запуск и завершение спринта с переносом (#49)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 19:10:58 +04:00
Andrey Epifancev
54f5781b98 Агент: команда ensure_sprint_meta — создание и правка спринта (#49)
Команда ищет спринт доски по имени, создаёт его или записывает только
отличающиеся имя, даты (по дню), цель. Повтор после переименования
находит спринт по новому имени; оба имени заняты — ошибка без записи.
Даты проверяются первыми, доска берётся только из команды.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 19:04:39 +04:00
Andrey Epifancev
255784c858 Агент: оценка story_points в ensure_fields (#49)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 18:57:12 +04:00
Andrey Epifancev
0ea1438b1e Агент: колонки, kanban-бэклог и все спринты досок в первой пачке refresh (#49)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 18:47:22 +04:00
Andrey Epifancev
9de78842b1 Агент: ранг, оценка и все спринты задачи в состоянии refresh (#49)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 18:37:03 +04:00
Andrey Epifancev
21374bef08 Агент: поиск полей ранга, спринта и оценки с кэшем и перекрытием field_ids (#49)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 18:30:55 +04:00
Andrey Epifancev
3a5bd9a109 Агент: оборванное тело — обрыв связи, перенаправления только на свой адрес, README v14 (#43)
По финальному ревью: M-1, M-4, M-6.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 14:36:29 +04:00
Andrey Epifancev
4819950738 Агент v14: команда fetch_attachment (#43)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 14:19:50 +04:00
Andrey Epifancev
711f62e1df Агент: скачивание байтов из Jira без чужих перенаправлений, файл хабу (#43)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 14:15:46 +04:00
Andrey Epifancev
0d72369875 Агент v14: список вложений в состоянии refresh (#43)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 14:10:44 +04:00
Andrey Epifancev
faed8b9c7a Журнал: стартовая часть первой, задача в обеих выборках не теряет историю (#39, I-1)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 10:47:11 +04:00
Andrey Epifancev
05e3f2c114 Тест версии агента: 13 (#39)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 10:34:43 +04:00
Andrey Epifancev
71e182a162 Агент v13: журнал изменений в refresh (#39)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 10:31:47 +04:00
Andrey Epifancev
de2d5b5252 Разбор журнала изменений Jira и фейк журнала (#39)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 10:27:00 +04:00
Andrey Epifancev
ced48cf9db fix(agent): ошибка спринтов refresh называет доску, доска-канбан пропускается (I-1, M-2..M-5, #35)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 20:31:59 +04:00
Andrey Epifancev
719d4bceef chore(agent): версия 12, README и решения агента для досок проектов (#35)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 20:21:25 +04:00
Andrey Epifancev
9dd3dd7d9d feat(agent): refresh по доскам проектов — тип доски, спринты со всех scrum-досок, результат boards (#35)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 20:16:52 +04:00
Andrey Epifancev
fc87f54cf9 feat(agent): ensure_sprint по доске из команды, кэш спринтов по доскам (#35)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 20:12:30 +04:00
Andrey Epifancev
93e5595c40 chore(agent): версия 11, README и решения агента для bug-and-attachments (#31)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-16 01:55:08 +04:00
Andrey Epifancev
d75c1a5567 feat(agent): команда ensure_attachment — вложение по имени и размеру, файл у хаба с проверкой sha256 (#31)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-16 01:52:03 +04:00
Andrey Epifancev
2bf87a6fa2 feat(agent): multipart-загрузка вложения в Jira и файл вложения у хаба (#31)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-16 01:48:38 +04:00
Andrey Epifancev
90dc429434 feat(agent): тип задачи из issue_types с ошибкой конфигурации, тип bug (#31)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-16 01:44:30 +04:00
Andrey Epifancev
cd8213b71c fix(agent): refresh не падает на комментариях без id и на 403/404 при дочитывании (M-1, M-2 #30, #31)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-16 01:41:24 +04:00
Andrey Epifancev
28b21e0d54 test(agent): вернуть проверки test_refresh_empty_keys, потерянные при вставке тестов комментариев (I-1, #27)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 13:14:50 +04:00
Andrey Epifancev
06375b9d90 chore(agent): версия 10, README и решения агента для комментариев (#27)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 13:04:19 +04:00
Andrey Epifancev
f5ea74bbcd feat(agent): комментарии задач в состоянии refresh (#27)
Поле comment в том же search; при неполном списке — дочитывание /issue/{key}/comment по 100.
Спека: jira-hub/openspec/changes/issue-card-modal/ (agent, «Чтение состояния»).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 13:01:21 +04:00
Andrey Epifancev
b57f815846 fix(agent): OSError при подтверждении версии — только лог, повтор на следующем claim (M-3)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 00:47:57 +04:00
Andrey Epifancev
af3e9c47c4 fix(agent): ограничить длину значений в подсказке о неполной публикации (M-4)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 00:36:03 +04:00
Andrey Epifancev
6b3109863d fix(run): подтверждённая версия не откатывается после записей агента в update.json (I-1)
wait_child запоминает подтверждение (любое состояние update.json, кроме trial этой версии, пока агент жив),
а итоговое решение учитывает и случай, когда ok и следующая запись уложились между опросами.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 00:36:03 +04:00
Andrey Epifancev
69f9ffe690 feat(agent): run.py v2 — сверка update.json с файлом, ok в последний момент, код 73, OSError при подмене (M-3…M-7, M-10 #22)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 00:25:56 +04:00
Andrey Epifancev
fa936ba716 test(agent): фейки — project и created в поиске дубля, долгий claim хаба (M-10 #4)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 00:19:35 +04:00
Andrey Epifancev
b90c639eaa fix(agent): код 73 при занятом журнале, одна строка темпа, источник ошибки хаба в refresh (M-7 #22; M-2, M-3, M-5, M-6 #18)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 00:14:58 +04:00
Andrey Epifancev
c51651717c fix(agent): OSError при подготовке версии — временный сбой; формат agent_release (M-6, M-10 #22)
Диск полон или нет прав при записи agent.py.new, selftest или update.json
больше не роняет агент трейсбеком: это временный сбой, повтор через 5 минут.
Ошибка записи update.json при отказе версии только логируется.
Неполная публикация (version не int, sha256 не 64 hex в нижнем регистре)
отбрасывается с подсказкой не чаще раза в час; таймеры подсказок разделены по видам.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 00:09:03 +04:00
Andrey Epifancev
47a7424eca feat(agent): версия 9; тесты без жёстких номеров версий (#23)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 00:03:41 +04:00
Andrey Epifancev
20b858c984 fix(agent): run.py — выход 0 без Ctrl-C как падение, сигнал перед запуском, pause без отрицательного sleep (I-1, M-1, M-2, #19)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 22:40:59 +04:00
Andrey Epifancev
866f9d7b4d test(agent): сквозной тест самообновления; README, ARCHITECTURE, CLAUDE.md — run.py и публикация (#19)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 22:26:53 +04:00
Andrey Epifancev
7512acb083 feat(agent): запускатель run.py — подмена версии, пробный период, откат, перезапуск (#19)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 22:24:30 +04:00
Andrey Epifancev
3aa8823929 feat(agent): самообновление в паузе — скачивание, sha256, selftest, выход 75 (#19)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 22:22:32 +04:00
Andrey Epifancev
140f921ce5 test(agent): версия 5 в test_folder (#19)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 22:19:29 +04:00
Andrey Epifancev
82428ea869 feat(agent): update.json, selftest, update_state и launcher_version в claim, версия 5 (#19)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 22:17:52 +04:00
Andrey Epifancev
cd2dafe487 feat(agent): prune под блокировкой журнала, версия 4, README (#15)
T2.3 (agent#4).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 12:48:23 +04:00
Andrey Epifancev
4f1b85c9c0 fix(agent): ответ папки с неверными типами — ConnectionError; лог без повтора «хаб» (#15)
M-2, O-3 (agent#8).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 12:44:15 +04:00
Andrey Epifancev
3736fb3948 fix(agent): полная пауза при времени журнала в будущем, claim без оценки из журнала (#15)
M-6, M-7 (agent#12).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 12:40:46 +04:00