4.3 KiB
4.3 KiB
agent-v9-hardening — решения агента
Спека и дизайн изменения — в jira-hub/openspec/changes/agent-v9-hardening/ (issue aep/jira-hub#26, aep/jira-agent#23).
Агентская часть — решения 1–7 дизайна хаба (запускатель run.py v2), 8–14 (агент v9), 15–17 (фейки и тесты),
18 (выкатка).
Решения владельца 14.10.2026: один пакет — #22 (M-3…M-7, M-10), #18 (M-2, M-3, M-5, M-6), #4 (M-10, точность фейков);
устаревший trial → rolled_back; OSError при подмене в запускателе → rejected без повтора; run.py v2 владелец
ставит вручную после самообновления до v9.
Decisions made without discussion
Рулинги R-1…R-5 записаны в jira-hub/openspec/changes/agent-v9-hardening/design.md
(раздел «Decisions made without discussion»); здесь — только решения, принятые при исполнении агентской части.
| Маркер | Дата | Решение | Обоснование | Цена ошибки |
|---|---|---|---|---|
| R-6 | 2026-10-15 | В test_hub_4xx_in_refresh_not_retryable токен «неверный» заменён на «wrong-token» (ASCII) | Кириллица в заголовке Authorization даёт UnicodeEncodeError (latin-1) ещё до запроса, тест не проверял бы 401; проверка (текст «хаб: HTTP 401», retryable=False) не изменилась | Нет: только данные теста; поведение при не-ASCII токене в agent.json — наблюдение O-2 |
| R-7 | 2026-10-15 | В run.py пустой/None sha256 в update.json (state=trial) считается устаревшим пробным периодом: условие not sha or sha256_file(agent) != sha в reconcile и in_trial (в плане — только != sha) |
Если agent.py не читается, sha256_file даёт None и совпал бы с отсутствующим sha — пробный период признан бы живым; пункты 1–2 Review Focus плана требуют обратного | Нет: усиление проверки; худший случай — лишний rolled_back при повреждённом update.json |
| R-8 | 2026-10-15 | В README фраза про код 73 добавлена в конец абзаца «Остановка…» (якорь плана «и перезапускается.» в тексте — «перезапускается).») | Якорь плана не совпал с текстом README; смысл и текст предложения сохранены | Нет: размещение предложения в документации |
| R-9 | 2026-10-15 | Таймеры подсказок в Updater раздельные по виду (hints[kind]), а не один общий, как сказано в решении 10 |
Review Focus 4 плана: подсказка «запускайте через run.py» не должна глушить подсказку о неполной публикации и наоборот | Нет: лишняя строка в логе раз в час |
| R-10 | 2026-10-15 | Финальное ревью I-1: «версия подтверждена», если при живом агенте в update.json увидено любое состояние кроме (trial, тот же sha); после выхода запасное правило — состояние не trial и sha agent.py = sha пробной версии. Подтверждённая версия не откатывается |
Агент после ok сам пишет rejected/staged для следующей версии, запускатель опрашивает раз в секунду и мог не увидеть ok; спека откатывает только при действующем пробном периоде |
Ложное «подтверждено» оставит больную версию без отката (худший случай — перезапуск по обычной паузе) |