Andrey Epifancev
87a0d3d36c
feat(hub): agent_release в claim, GET /agent/release, состояние обновления в GET /agent ( #22 )
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 22:11:10 +04:00
Andrey Epifancev
eb66c2144a
feat(hub): публикация версии агента — release.py и jira-hub agent publish ( #22 )
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 22:09:28 +04:00
Andrey Epifancev
bc610a7734
feat(api): раздача веб-приложения по /app… без токена, 503 без сборки; тест M-7 ( #21 )
...
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
2026-10-14 20:03:28 +04:00
Andrey Epifancev
c7d1aaae0a
fix(web): связи из зеркала — только между ключами вида AURORA-1234 (I-1, #17 )
...
Ключ из issue_link попадал в разметку карточки без проверки: строка зеркала с разметкой в target_key исполнялась на странице с токеном.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 18:21:36 +04:00
Andrey Epifancev
4f4fb500dd
feat(web): «Обновить из Jira», перенос раскладки импортом JSON, смена токена ( #17 )
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 18:10:38 +04:00
Andrey Epifancev
e92e7711d6
feat(web): доска на данных хаба — вход по токену, GET /board, «Перечитать» ( #17 )
...
Встроенная выгрузка от 11.10.2026 удалена; CSV и JSON — загрузка файла.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 18:02:48 +04:00
Andrey Epifancev
9bfb8be549
feat(api): страница доски связей по GET / и /links без токена ( #17 )
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 17:56:17 +04:00
Andrey Epifancev
fbd47873b7
feat(api): GET /board — снимок зеркала для доски связей ( #17 )
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 17:54:16 +04:00
Andrey Epifancev
8e82b31d48
fix: правки по финальному ревью bridge-hygiene — права backups/, cwd, чистка work/ по папкам, отмена завершённого пакета ( #13 )
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 13:11:03 +04:00
Andrey Epifancev
615530aa1b
fix(relay): 502 на сбой протокола, work/ чистится один раз на папку, тест serve --host ( #13 )
...
M-1, M-3, M-4 (hub#8).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 12:54:45 +04:00
Andrey Epifancev
bd8c769e75
feat(queue,mcp): отмена пакета сообщает о команде у агента; подсказка про labels ( #13 )
...
cancel_batch возвращает still_claimed — команды пакета в статусе claimed,
которые отмена не останавливает. MCP batch_cancel выводит строку на каждую
такую команду с подсказкой про POST /commands/N/cancel с force. Описание
batch_create предупреждает, что ensure_issue нужны labels с базовой меткой
AWPCA, иначе задача выпадет из базовой JQL и из зеркала.
M-11 (hub#12), T3.7 (agent#4).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 12:51:51 +04:00
Andrey Epifancev
19aa032a25
fix(queue): довыдача refresh не удваивает счётчики, предел выдач закрывает sync_run ( #13 )
...
M-4, M-5, M-10 (hub#12).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 12:46:29 +04:00
Andrey Epifancev
4f0b873db6
fix(queue): обрезка error, поздний done по failed, статус отменённого пакета, пустой полный прогон ( #13 )
...
M-4 (hub#12), T5.6 и M-12 (hub#4).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 12:44:13 +04:00
Andrey Epifancev
a309c9bfb1
fix(commands): проверка типов параметров — 422 вместо 500 ( #13 )
...
M-3 (hub#12).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 12:41:44 +04:00
Andrey Epifancev
7a2f2e694b
fix(mirror): rename_note сливает заметки, а не удаляет заметку под ключом ( #13 )
...
M-3 (hub#4, PR #2 ).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 12:39:49 +04:00
Andrey Epifancev
ec49ed64ba
fix(db): каталог данных 0700, одна копия при миграции под блокировкой ( #13 )
...
M-7 (hub#4), M-2 и M-10 (hub#12).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 12:36:45 +04:00
Andrey Epifancev
1fc27055ba
fix(backup): копия перед миграцией схемы не ротируется; design: один процесс агента, откат без восстановления копии (M-1, I-1, #9 )
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 23:11:32 +04:00
Andrey Epifancev
817c761fb2
feat: ensure_issue закрывается довыдачей, не сверкой; reversed_links в отчёте импорта (R-11, O-3, #9 )
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 22:48:57 +04:00
Andrey Epifancev
bf73299732
feat(queue): 409 на отчёт по невыданной команде, ключ из позднего отчёта по отменённой ensure_issue, 422 на дубль темы ( #9 )
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 22:46:41 +04:00
Andrey Epifancev
958dbe956f
feat(queue): довыдача команды без отчёта, предел 3 выдачи; R-13 и «свежая claimed» удалены ( #9 )
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 22:44:16 +04:00
Andrey Epifancev
4f375fd39c
feat(db): миграция схемы v1→v2 — command.deliveries, копия базы перед миграцией ( #9 )
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 22:40:59 +04:00
Andrey Epifancev
4a82be05cc
fix(relay): самовосстановление при сбоях папки — одно предупреждение вместо потока трассировок (I-1, I-2, #5 )
...
Отказ доступа (TCC), удалённые req/ или work/ больше не сыплют трассировки каждые 0,1 с и не останавливают
реле молча: одно предупреждение на причину, подкаталоги создаются заново; resp/ создаётся до пересылки,
чтобы выданный claim не уходил в никуда.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 01:08:21 +04:00
Andrey Epifancev
aa621a078a
feat(api): реле общей папки запускается в serve; README — транспорт через папку ( #5 )
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 00:41:27 +04:00
Andrey Epifancev
787543ea89
feat(relay): реле через общую папку — запросы агента из файлов в свой HTTP и обратно ( #5 )
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 00:39:36 +04:00
Andrey Epifancev
e025577d05
feat(settings): настройка relay_dir — абсолютный путь папки реле или null ( #5 )
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 00:37:59 +04:00
Andrey Epifancev
1bc6ebe534
fix(mcp): batch_wait и refresh асинхронные, refresh по умолчанию без ожидания (R-12, I-3)
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014Typ5sXWNMFirr2va2uL8o
2026-10-11 23:11:18 +04:00
Andrey Epifancev
4f055a80d0
fix(api): PUT /settings проверяет значения до записи, 422 (I-5); убран мёртвый except, честное имя теста
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014Typ5sXWNMFirr2va2uL8o
2026-10-11 23:09:45 +04:00
Andrey Epifancev
0dba6b7672
fix(queue): зависший определитель пропускает остаток своего пакета, очередь идёт дальше (R-13, I-4)
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014Typ5sXWNMFirr2va2uL8o
2026-10-11 23:08:57 +04:00
Andrey Epifancev
5a5914226f
fix(mirror): флаг neighbor не сбрасывается точечным refresh и ставится полным прогоном (I-2); комментарий про соединение
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014Typ5sXWNMFirr2va2uL8o
2026-10-11 23:08:52 +04:00
Andrey Epifancev
a09b794302
fix(queue): ensure_issue не подтверждается по состоянию без автора (R-11, I-1); reconcile не затирает отчёт и отмену (M-1)
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014Typ5sXWNMFirr2va2uL8o
2026-10-11 23:07:52 +04:00
Andrey Epifancev
e221a18b46
test(hub): промежуточные ассерты сквозного прогона (T10.1–T10.4)
...
Проверяются: одна команда в полёте (второй claim пуст), зеркало не
пишется до /agent/state, заметка переезжает с new:60 на A-90, статус
пакета running с remaining_seconds > 0 между командами и done с 0 в конце,
связь проверяется по полям source_key/target_key/link_type.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014Typ5sXWNMFirr2va2uL8o
2026-10-11 22:54:15 +04:00
Andrey Epifancev
181dd65958
test(hub): сквозной прогон очереди через HTTP с имитацией агента
...
Фикстура останавливает сервер (server_close, join потока), иначе
ResourceWarning о незакрытом сокете.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014Typ5sXWNMFirr2va2uL8o
2026-10-11 22:51:11 +04:00
Andrey Epifancev
d7f82cb611
feat(hub): CLI, README, описание архитектуры
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014Typ5sXWNMFirr2va2uL8o
2026-10-11 22:47:24 +04:00
Andrey Epifancev
f3ac1eb5c2
test(hub): MCP — опрос и потолок batch_wait, точные ассерты refresh/sync_log
...
_client() в batch_wait создаётся один раз перед циклом.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014Typ5sXWNMFirr2va2uL8o
2026-10-11 22:35:41 +04:00
Andrey Epifancev
cc0026bb1c
feat(hub): MCP-сервер — инструменты поверх HTTP API
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014Typ5sXWNMFirr2va2uL8o
2026-10-11 22:32:23 +04:00
Andrey Epifancev
acbc19c7eb
fix(hub): импорт не затирает правки хаба пустыми ячейками CSV, весь импорт в транзакции
...
Пустая ячейка CSV не меняет существующее поле заметки; заметка без непустых полей не пишется,
но учитывается в счётчике как раньше. Импорт обёрнут в db.transaction (set_note — SAVEPOINT).
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014Typ5sXWNMFirr2va2uL8o
2026-10-11 22:29:08 +04:00
Andrey Epifancev
47495fa5db
feat(hub): импорт CSV-пакета admin/jira-sync в заметки, сверка связей
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014Typ5sXWNMFirr2va2uL8o
2026-10-11 22:26:06 +04:00
Andrey Epifancev
600163a9ee
fix(hub): типы полей тела запроса дают 422, а не 500
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014Typ5sXWNMFirr2va2uL8o
2026-10-11 22:23:00 +04:00
Andrey Epifancev
34d5714898
fix(hub): проверка Content-Length и предел тела, тик автообновления, узкая обработка ошибок, тесты долгого claim
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014Typ5sXWNMFirr2va2uL8o
2026-10-11 22:19:54 +04:00
Andrey Epifancev
2558248dc9
feat(hub): HTTP API — маршруты агента и интерфейсов, токены, долгий claim, клиент
...
Соединение SQLite на запрос, сравнение токенов в постоянное время,
400 на битый JSON и нечисловые параметры.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014Typ5sXWNMFirr2va2uL8o
2026-10-11 22:15:59 +04:00
Andrey Epifancev
68b73439a6
fix(hub): сбой резервной копии не блокирует выдачу, SAVEPOINT для вложенных транзакций, настоящий тест исключительной выдачи
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014Typ5sXWNMFirr2va2uL8o
2026-10-11 22:12:38 +04:00
Andrey Epifancev
b41ab0ad25
feat(hub): очередь команд — пакеты, выдача, отчёты, отмена, сверка, автообновление, резервные копии
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014Typ5sXWNMFirr2va2uL8o
2026-10-11 22:07:07 +04:00
Andrey Epifancev
f353d90ec6
feat(hub): вложенные транзакции присоединяются к внешней, db.utcnow и db.parse
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014Typ5sXWNMFirr2va2uL8o
2026-10-11 22:07:07 +04:00
Andrey Epifancev
ccf519c9e7
fix(hub): подтверждение ensure_link с конфликтами и ensure_issue по автору и давности
...
check_confirmed для ensure_link: связь есть и нет конфликтов (другой тип между теми же задачами
или обратное направление любого типа). check_confirmed для ensure_issue: необязательный reporter,
сужает поиск по теме до задач этого автора. Тесты: конфликты, обратное направление при обоих
ключах в зеркале, давность 7 дней, фильтр по reporter, выбор самой новой из двух.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014Typ5sXWNMFirr2va2uL8o
2026-10-11 22:03:59 +04:00
Andrey Epifancev
a19c1ca7e1
feat(hub): контракт команд — валидация, временные ключи, оценка, подтверждение по состоянию
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014Typ5sXWNMFirr2va2uL8o
2026-10-11 22:00:08 +04:00
Andrey Epifancev
3394ddcf4c
fix(hub): транзакции в set_note и rename_note, сохранение заметки при равных ключах
...
rename_note: при old_key == new_key ранний выход (DELETE раньше стирал единственную заметку);
DELETE и UPDATE выполняются в транзакции.
set_note: чтение, слияние и запись в одной транзакции (соединение общее для потоков).
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014Typ5sXWNMFirr2va2uL8o
2026-10-11 21:57:25 +04:00
Andrey Epifancev
e981d62620
feat(hub): зеркало задач, связи, служебные заметки
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014Typ5sXWNMFirr2va2uL8o
2026-10-11 21:53:13 +04:00
Andrey Epifancev
f082541566
feat(hub): настройки, токены, init из config.example.json
...
Модуль settings: значения по умолчанию, версия настроек, защищённые ключи,
перенос проектных настроек из config.example.json (учётные данные остаются у агента).
Фикстура tests/fixtures/config.example.json — копия admin/jira-sync/config.example.json.
.pytest_cache/ добавлен в .gitignore.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014Typ5sXWNMFirr2va2uL8o
2026-10-11 21:50:46 +04:00
Andrey Epifancev
81850783d4
feat(hub): скелет пакета, схема SQLite, транзакции
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014Typ5sXWNMFirr2va2uL8o
2026-10-11 21:41:00 +04:00