Commit graph

4 commits

Author SHA1 Message Date
ochenstarik-ui
2b89372b0f feat(config): A41 чистая конфигурация при первой установке, безопасность учетных данных и сброс
1. P0-1: get_default_router_config() возвращает чистую конфигурацию (0 профилей,
   13 канонических ролей с пустыми цепочками). Миграция не внедряет фиктивные профили.
2. P0-2: Учетные данные (~/.hermes/*_profiles/, hub_settings.json) изолированы и
   никогда не затрагиваются при сбросе или установке.
3. P0-3: Профили создаются динамически при подключении аккаунтов (ag-1, codex-1, etc.).
   Пустые цепочки ролей являются нормальным рабочим состоянием.
4. P0-4: Добавлен экшен reset_router_config и кнопка «Начать настройку заново»
   в настройках с подтверждением и созданием бэкапа router_profiles.yaml.bak_<timestamp>.
5. P0-5: scripts/verify_multi_provider_router.py адаптирован и проходит 10/10 PASS
   как на пустой конфигурации, так и на заполненной.
6. tests/test_a41_clean_install.py: 6 тестов, 490 passed, ruff чисто.
2026-08-31 02:27:42 +07:00
Hermes Team
380c218547 fix(installer): установка на Windows падала с кодом 12 из-за устаревшей проверки
Владелец получил «Ошибка установки (Код: 12)». Код 12 — провал скрипта
scripts/verify_multi_provider_router.py, который виндовый установщик запускает
после развёртывания. На Linux он не запускается, поэтому там всё вставало.

Скрипт пережил три изменения продукта и не был под них обновлён:

1. Требовал роль "orchestrator". A28 переименовал её в "manager", и проверка
   падала на первом же шаге. Теперь актуальное имя спрашивается у реестра
   ролей, а не помнится в скрипте.

2. Требовал непустую цепочку у КАЖДОЙ роли. A28 добавил роли, объявленные без
   реализации — guardian и cost-controller, — у них аккаунтов ещё нет.
   Установка падала из-за роли, которой никто не пользуется. Теперь пустая
   цепочка допустима и лишь отмечается, а обязательна она только у
   оркестрирующей роли: без неё маршрутизация действительно не работает.

3. Зашивал порядок цепочки codex -> antigravity -> opengo-3 и конкретные
   идентификаторы профилей. Но порядок — выбор владельца, он меняет его мышью,
   и любая перестановка роняла установку. Проверка переписана на механизм:
   берётся настоящая цепочка, роняются все профили кроме последнего
   достижимого, и проверяется, что маршрутизатор дошёл именно до него.
   Учтён предел max_failover_attempts — за него цепочка не проходится.

Карта адаптеров дополнена claude, grok и local: раньше в ней были только три
провайдера, и хвост цепочки из остальных не покрывался.

Проверено на конфигурации владельца: 10/10 CHECKS PASSED, код возврата 0.
486 passed, ruff чисто.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-31 02:03:42 +07:00
Hermes Team
36b449bc6c fix(installer): ошибка 12 при установке — проверка требовала конфигурацию от 20 августа
Владелец получил «Ошибка установки (Код: 12)» на чистой машине.

Причина: scripts/verify_multi_provider_router.py, который установщик
запускает после развёртывания, требовал РОВНО 16 профилей и дословно
заданные цепочки ролей. Миграция из A9 законно доводит конфигурацию до
22 профилей, добавляя claude и grok. Проверено: скрипт падал с
«Expected 16 profiles, got 22», то есть установка обрывалась на любой
машине, где миграция отработала.

Проверки переписаны структурными: есть ли профили у каждого провайдера,
непусты ли цепочки ролей и ссылаются ли они только на существующие
профили. Смысл проверки — работоспособна ли маршрутизация, а не совпадает
ли конфигурация с зафиксированной когда-то. Скрипт проходит 10/10.

Отдельно: код 12 возвращался и при отказе проверки, и из общего catch —
владелец видел число без причины. Непредвиденный сбой отделён в код 15,
обе ветки теперь пишут пояснение в интерфейс установщика.

Тесты: 373 passed, ruff чисто. Установщик пересобран.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-24 09:35:36 +07:00
Hermes Team
fdf9eccbdb feat: initialize standalone Hermes Hub 2026-08-20 00:17:11 +07:00