Спека агента: устойчивость самообновления — агент v9, run.py v2 (#26) #30

Merged
aep merged 2 commits from feat/26-agent-v9-spec into main 2026-10-14 23:51:10 +03:00
Owner

Closes #26. Только OpenSpec change agent-v9-hardening (proposal, design, дельта specs/agent); код хаба не меняется. Код — aep/jira-agent PR #24 (issue aep/jira-agent#23).

Что меняется в спеке agent

  • «Цикл выполнения»: занятый журнал — код 73 (было 1); источник обрыва в логе и ошибке — «Jira» или «хабом»; сценарий остановки во время долгого claim.
  • «Ограничение темпа и 429»: при времени журнала в будущем — одна строка лога; сценарий остановки в паузе.
  • «Чтение состояния»: ошибки хаба в refresh — префикс «хаб: », повтор как обрыв с источником «хаб».
  • «Самообновление агента»: OSError — временный сбой; формат agent_release (целое, sha256 из 64 hex).
  • «Запускатель run.py»: сверка update.json с sha256 agent.py при старте и перед запуском, повторная проверка ok после таймаута, код 73, OSError при подмене, очистка *.tmp, OSError при записи update.json не роняет запускатель; новые сценарии.

openspec validate agent-v9-hardening --strict — valid. Merge с текущим main (после web-app) без конфликтов.

Rulings I made

  • R-1 код «журнал занят» — 73 (EX_CANTCREAT); R-2 подлежащее «хаб: » при обёртке в refresh, не в тексте FolderTransport; R-3 неверный agent_release — игнор с логом раз в час, без rejected; R-4 ok в последний момент — перезапуск без паузы; R-5 фейки — только project, created, долгий claim.
  • Решения владельца (brainstorming 14.10.2026): устаревший trial → rolled_back; OSError при подмене в запускателе → rejected без повтора.
  • Рулинги исполнения R-6…R-10 — в design.md агента и в PR aep/jira-agent#24; решение 10 здесь обновлено под R-9 (раздельные таймеры подсказок).

🤖 Generated with Claude Code

Closes #26. Только OpenSpec change `agent-v9-hardening` (proposal, design, дельта `specs/agent`); код хаба не меняется. Код — aep/jira-agent PR #24 (issue aep/jira-agent#23). ## Что меняется в спеке agent - «Цикл выполнения»: занятый журнал — код 73 (было 1); источник обрыва в логе и ошибке — «Jira» или «хабом»; сценарий остановки во время долгого `claim`. - «Ограничение темпа и 429»: при времени журнала в будущем — одна строка лога; сценарий остановки в паузе. - «Чтение состояния»: ошибки хаба в `refresh` — префикс «хаб: », повтор как обрыв с источником «хаб». - «Самообновление агента»: `OSError` — временный сбой; формат `agent_release` (целое, sha256 из 64 hex). - «Запускатель run.py»: сверка `update.json` с sha256 `agent.py` при старте и перед запуском, повторная проверка `ok` после таймаута, код 73, `OSError` при подмене, очистка `*.tmp`, `OSError` при записи `update.json` не роняет запускатель; новые сценарии. `openspec validate agent-v9-hardening --strict` — valid. Merge с текущим main (после web-app) без конфликтов. ## Rulings I made - **R-1** код «журнал занят» — 73 (`EX_CANTCREAT`); **R-2** подлежащее «хаб: » при обёртке в `refresh`, не в тексте `FolderTransport`; **R-3** неверный `agent_release` — игнор с логом раз в час, без `rejected`; **R-4** `ok` в последний момент — перезапуск без паузы; **R-5** фейки — только `project`, `created`, долгий `claim`. - Решения владельца (brainstorming 14.10.2026): устаревший `trial` → `rolled_back`; `OSError` при подмене в запускателе → `rejected` без повтора. - Рулинги исполнения R-6…R-10 — в design.md агента и в PR aep/jira-agent#24; решение 10 здесь обновлено под R-9 (раздельные таймеры подсказок). 🤖 Generated with [Claude Code](https://claude.com/claude-code)
aep added 2 commits 2026-10-14 23:48:52 +03:00
aep merged commit 594c5f8aca into main 2026-10-14 23:51:10 +03:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: aep/sdlc-hub#30
No description provided.