3.5 KiB
3.5 KiB
agent-v13-change-history — решения агента
Спека и дизайн изменения — в jira-hub/openspec/changes/change-history/ (issue aep/jira-hub#70, aep/jira-agent#39).
Агентская часть — решения 7–11 и 17 дизайна хаба и требование agent «Журнал изменений» (ADDED); контракт команд —
commands «Журнал изменений в refresh» (refresh.history, результат history); приём — hub-api «Приём журнала
изменений» (POST /agent/history). Версия агента — 13.
Decisions made without discussion
Решения хаба записаны в jira-hub/openspec/changes/change-history/design.md (раздел «Decisions made without
discussion»); здесь — только решения агентской части, принятые при исполнении.
| Маркер | Дата | Решение | Обоснование | Цена ошибки |
|---|---|---|---|---|
| R-3 | 2026-10-22 | Ошибка GET /field или дочитывания GET /issue относится к той части журнала, которую она прервала: в регулярной — history.error, в стартовой — backfill_error |
Спека называет только search и отправку; ошибка чтения — свойство части, которую она прервала |
Стартовая часть, упавшая на GET /field, не держит отметку — как задумано для разовой стартовой загрузки |
| R-4 | 2026-10-22 | Ошибка одной части журнала не отменяет другую и отправку уже прочитанного | Меньше потерь; спека требует этого для обратного случая («регулярная часть при этом выполняется») | При error отметка не сдвинется, следующий прогон дочитает — дубли хаб отбросит |
| R-5 | 2026-10-22 | Неразбираемый history.since — history.error с текстом, refresh остаётся done |
Анти-цель «журнал не ломает обновление зеркала» | Нет: хаб шлёт since сам в одном формате |
| R-6 | 2026-10-22 | Недоступность хаба только на /agent/history в тестах имитирует FakeHub.reject_history = "drop" (обрыв соединения без ответа) |
Нужен обрыв именно на шаге журнала | Нет (тестовый фейк) |
| R-7 | 2026-10-22 | По I-1 финального ревью: стартовая часть (history.jql) выполняется первой и берёт журнал целиком; регулярная не запрашивает уже прочитанные задачи; ключ помечается прочитанным только после разбора его журнала. Хаб: design #19 |
Задача из обеих выборок теряла записи старше since; упавшая на задаче стартовая часть не должна «съедать» её для регулярной |
Нет лишних вызовов Jira; при сбое стартовой на задаче регулярная добирает только записи после since |