Andrey Epifancev ad286f203d docs(openspec): архив folder-transport, спеки транспорта через папку в openspec/specs (#5)
Рулинг R-3 дописан в design.md; CLAUDE.md больше не ссылается на активный change.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 21:39:53 +04:00

3.9 KiB
Raw Blame History

Why

Живой запуск моста 12.10.2026 упёрся в сеть: доступ к Jira банка на виртуалке даёт VPN «Континент ZTN», и его пакетный фильтр (pf-anchor continentztn) закрывает локальную сеть в обе стороны — роутер 192.168.0.1 отвечает, Mac mini (192.168.0.108) нет, nc на порт хаба 8790 — таймаут; входящие на виртуалку (:22) тоже режутся. Фильтр включается при первом подключении Континента и остаётся загруженным после отключения VPN, до выхода из клиента или перезагрузки. Агенту одновременно нужны Jira (только через VPN) и хаб, поэтому сеть для моста не годится. Править правила Континента нельзя — это средство защиты банка.

Канал, который фильтр не видит, — общая папка гипервизора UTM (VirtioFS): на Mac mini /Volumes/externalSSD/utm/rshb, на виртуалке /Volumes/My Shared Files/RSHB. Проверка 12.10.2026 при включённом Континенте: 30 обменов из 30 через временный файл и переименование, время круга 0,75–0,82 с независимо от размера (200 Б – 300 КБ), недописанных и «залипших» удалённых файлов 0 с обеих сторон.

Решения владельца 12.10.2026 (сессия brainstorming): транспорт через общую папку; вариант A — реле внутри jira-hub serve (не отдельный процесс и не обмен пакетами целиком); HTTP API хаба и обработчики не меняются; у агента транспорт выбирается по hub_url; HTTP-транспорт остаётся; дизайн частей 1–4 (формат обмена, ошибки и уборка, настройки и запуск, тесты) одобрен.

What Changes

  • jira-hub: поток реле в serve, включаемый настройкой relay_dir. Реле забирает файлы-запросы агента из <relay_dir>/req/, пересылает их в свой HTTP на 127.0.0.1:<port> и кладёт ответы в <relay_dir>/resp/. Новая настройка relay_dir (строка или null), проверяется при записи.
  • jira-agent: транспорт folder: — hub_url = "folder:<путь>" создаёт файловый клиент хаба с тем же интерфейсом, ошибки сводятся к тем же ConnectionError/HttpError; check сообщает транспорт; версия агента 2.
  • Спеки: hub-api (ADDED: реле), data-model (MODIFIED: настройки), agent (MODIFIED: состав и настройки; ADDED: транспорт через общую папку).

Non-goals

  • Изменения HTTP API, обработчиков, токенов, очереди и контракта команд.
  • Обмен пакетами команд целиком через файлы (вариант C), работа агента без хаба.
  • Несколько агентов на одной папке, шифрование файлов в общей папке.
  • Обход или настройка фильтра Континента; запрос исключения в ИБ банка — вне репозиториев.
  • Исправление находки M-2 (потерянный ответ claim) в общем виде; здесь только защита по запасу времени для реле.