feat: ядро моста Jira — агент (bridge-core, #1) #2
Loading…
x
Reference in New Issue
Block a user
No description provided.
Delete Branch "feat/1-bridge-core"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #1
Что сделано
Агент моста Jira на виртуалке банка (Python 3.9, только stdlib) — исполнитель команд хаба (aep/jira-hub PR #2, спека OpenSpec
bridge-coreживёт в хабе; здесь вopenspec/changes/bridge-core/design.md— рулинги агента).prune):claimed→started→finished, восстановление после перезапуска.ensure_issue(поиск дубля с пагинацией по маркеру),ensure_fields,ensure_comment,ensure_status,ensure_link,ensure_sprint— «проверь, потом сделай», идемпотентны.refresh: выгрузка задач по JQL в хаб, спринты из Agile, бисекция ключей при 400.agent_versionв отчётах.Проверка
/usr/bin/python3 -W error::ResourceWarning -m unittest discover -s tests -t .(Python 3.9.6) → Ran 119 tests, OK.key in (...), поле спринта).Rulings I made
tests/__init__.pyдобавляетtests/вsys.path(иначеfrom _common importиз плана не работает приdiscover -t .). Цена ошибки: мелкая, переписать импорты на относительные.except ExceptionвRunner.execute; minor-находки — одной волной. Цена: ложный failedensure_issue(закрыт R-10).claimedв журнал до паузы; расширение формата журнала сверх спеки. Цена: лишний kind в журнале.finished, затемfailed«результат неизвестен, повтор безопасен». Цена: задержки при недоступной Jira.agent_versionв result и/agent/state. Цена: нет (хаб игнорирует лишние поля).527fd89): ожидание перед повтором —max(pause, 30)от момента отказа. Цена: лишнее ожидание не дольше 30 с на попытку.Находки финального ревью (opus)
claimedдо паузы6bcc6f66bcc6f6http.client.HTTPExceptionкак обрыв2e6f47a2e6f47a2e6f47aagent_version6bcc6f66bcc6f62e6f47a2201831last_call_at527fd89Deferred (уйдут в follow-up issue при закрытии)
claimedв recover.report_resultпринимает отчёт по queued-команде; двеensure_issueс одной темой в пакете сопоставятся с одной задачей.unacked_finished; мелочи Task 2 (слабый тест UTC, fd leak при fdopen, E303, fsync каталога).to; T4.11 — target = имя перехода не идемпотентен.Наблюдения
claimedбез записи в журнале6bcc6f6(R-9)log()печатает в stdout, тесты шумятcheck_confirmedсч��тает входящую симметричную связь конфликтом, агент — existedgit add -f)🤖 Generated with Claude Code