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 (OpenSpec change
bridge-core): хаб на Mac mini — единственный источник истины вместо CSV-курьерства через виртуалку.project = AURORA AND labels = AWPCA(read-only), заметки, настройки, очередь команд и пакетов, журнал синхронизаций, резервные копии перед выдачей.ensure_*(«проверь, потом сделай»):ensure_issue,ensure_fields,ensure_link,ensure_sprint,ensure_transition,refresh; подтверждение по состоянию Jira (confirmed_by_state), временные ключиnew:<n>.http.server(порт 8790, токен агента) и клиент.admin/jira-sync/(tasks/new_tasks/epics/links).jira-hub mcp, пакетmcp>=1.2,<2): 14 инструментов — чтение зеркала, заметки, пакеты,batch_wait,refresh, журнал.init,import,serve,mcp), README, ARCHITECTURE.md, CLAUDE.md.Агент на виртуалке — отдельный PR в aep/jira-agent (ветка
feat/1-bridge-core).Проверка
uv run pytest -q→ 137 passed.uv run pytest -W error::ResourceWarning tests/test_api.py tests/test_e2e_hub.py tests/test_mcp.py→ 56 passed.serve, регистрация MCP в~/.claude.json, сквозной прогон с реальным агентом и Jira банка) не выполнялась — пункт чеклиста закрытия.Rulings I made
check_confirmed(..., reporter=None)new:<n>обязан быть объявленensure_issueраньше по списку пакета (строже спеки)db.transactionвложенная (присоединяется к внешней):rename_note/set_noteвызываются внутриreport_resultdb.transactionиспользует SAVEPOINT; соединение не делится между потоками4f055a8)set_noteтолько непустые значенияmcp>=1.2,<2(uv ставит mcp 2.3.0, где FastMCP удалён)ensure_issueне подтверждается по состоянию, пока автор неизвестен; настройкаreporterне вводится (логин Jira в настройках запрещён спекой data-model)ensure_issueлечится только восстановлением агента по журналу; follow-up: агент передаётjira_userв claimbatch_wait/refresh— async,refreshпо умолчаниюwait=Falserefreshensure_issue, пропускается вместе с остатком пакета, выдача идёт к следующемуВсе рулинги записаны в
openspec/changes/bridge-core/design.md, раздел## Decisions made without discussion.Находки финального ревью (opus)
ensure_issueподтверждался чужой задачейa09b794(R-11)5a59142batch_wait/refreshблокировали event loop1bc6ebe(R-12)0dba6b7(R-13)4f055a8AND status='claimed'a09b794Deferred (уйдут в follow-up issue при закрытии)
Приоритетные:
epics.csvбез «Ключ» пропускаются (спека:new:<номер строки>).jira_userв claim, правка спек data-model/agent.claimed.ensure_issueтеряет созданный ключ.serve --portне виден MCP;HubClient.from_homeпишет в БД.rename_noteудаляет заметку по настоящему ключу вместо слияния.new:<строка>импорта делится сtemp_keyпакетов.--config.migrateна новой базе.sprint_names; нет миграции по версии схемы;agent_statusотдаёт online вместо offline;errorне обрезается до 1500;GET /issuesотдаёт полные строки; коды 413/500/501 сверх перечня; автообновление отsync_run, а не «очередь пуста» (T5.16);page/last_pageигнорируются; MCPrefreshвозвращает вид пакета.Прочие minor: T1.2–T1.5, T2.1–T2.5, T3.3–T3.8, T3.11, T4.4–T4.14, T5.7–T5.10, T5.12–T5.18, T6.7–T6.11, T6.13, T6.14, T6.17–T6.19, T6.21, T7.4–T7.7, T7.8 (частично), T7.9–T7.11, T8.3, T8.4, T8.7–T8.10, T9.2–T9.6, T10.5, T10.6, M-6, M-9 (частично), M-10, M-11 (
is_full_refreshсравнивает jql с текущимbase_jql), M-12 (полный прогон с 0 задач помечает всех соседями).Наблюдения
.pytest_cache/не было в .gitignoreneighbor_keys) в worktree0dcf0acBASE $(git rev-parse...)в ledgerstartedпосле паузыclaimedв журнал до паузы)jira_userдля R-11 — пункт о передаче через claim в спеке🤖 Generated with Claude Code