hermes-hub/docs/audits/2026-08-20-release-recovery-results.md

7.2 KiB
Raw Permalink Blame History

Отчёт о результатах аудита и стабилизации релиза Hermes Hub

Дата: 2026-08-20
Репозиторий: https://github.com/ochenstarik-ui/hermes-hub
Целевая версия: 0.1.1
Статус Release Gate: PASS (100% критериев выполнено)
Статус Auto-Updater: VERIFIED (Live Tests & Rollback Passed)


1. Сводная таблица результатов по категориям

Категория Всего пунктов VERIFIED OPEN / DEFERRED Результат
P0 (Блокеры релиза) 9 9 0 9/9 PASS
P1 (Архитектурная корректность) 9 9 0 9/9 PASS
P2 (Дистрибуция и надежность) 3 3 0 3/3 PASS
P3 (CI/CD и Автообновления) 4 4 0 4/4 PASS

2. Детальный реестр исправления проблем (Remediation Details)

P0 (Блокеры релиза — 9/9 VERIFIED)

  1. P0-1 (customtkinter / Pillow imports):
    • Фикс: В installer/HermesHubSetup.py добавлена строгая проверка и установка customtkinter>=6.0.0 и pillow>=10.0.0 в venv Hermes с верификацией импортов. При сбое установка прерывается с ошибкой.
    • Тест: tests/test_p0_release_gate.py::test_p0_1_installer_dependencies (PASS).
  2. P0-2 (ProfileAuthManager.get_profile_dir signature):
    • Фикс: Метод get_profile_dir в ProfileAuthManager и paths.py поддерживает сигнатуры (profile_id), (provider, profile_id) и (profile_id, provider).
    • Тест: tests/test_p0_release_gate.py::test_p0_2_get_profile_dir_signature (PASS).
  3. P0-3 (Missing import json in wizard):
    • Фикс: Добавлен import json в add_account_wizard.py, flow сохранения API-ключей протестирован.
    • Тест: tests/test_p0_release_gate.py::test_p0_3_wizard_api_key_save (PASS).
  4. P0-4 (AutoAssigner.auto_assign_all):
    • Фикс: Реализован метод AutoAssigner.auto_assign_all(), автоматически распределяющий авторизованные профили по логическим ролям.
    • Тест: tests/test_p0_release_gate.py::test_p0_4_auto_assign_all (PASS).
  5. P0-5 (Antigravity failover & typed exceptions):
    • Фикс: _error_completion в agy_subprocess.py возвращает структурированный error объект, AntigravityAdapter выбрасывает типизированные QuotaExceededError, AuthExpiredError, а RouterEngine корректно классифицирует сбой и переключается на fallback.
    • Тест: tests/test_p0_release_gate.py::test_p0_5_antigravity_failover_on_quota (PASS).
  6. P0-6 (OAuth session status unification):
    • Фикс: Статусы унифицированы (pending, completed, failed, cancelled, timeout). При ошибке визард немедленно останавливает поллинг.
    • Тест: tests/test_p0_release_gate.py::test_p0_6_oauth_session_status_unification (PASS).
  7. P0-7 (assign_role button handler):
    • Фикс: В hermes_hub_app.py добавлен модальный диалог назначения ролей и сохранение в router_profiles.yaml.
    • Тест: tests/test_p0_release_gate.py::test_p0_7_assign_role_action (PASS).
  8. P0-8 (Wizard role application):
    • Фикс: Выбранная на шаге 4 визарда роль сохраняется в активную конфигурацию через AutoAssigner.assign_profile_to_role.
    • Тест: tests/test_p0_release_gate.py::test_p0_8_wizard_role_application (PASS).
  9. P0-9 (Fake API validation removed):
    • Фикс: Удалена заглушка «успешно проверено». Выполняется реальная/структурная валидация токенов, при отсутствии связи аккаунт помечается как НЕ ПРОВЕРЕН.
    • Тест: tests/test_p0_release_gate.py::test_p0_9_real_api_key_validation (PASS).

P1 / P2 / P3 (Архитектура, Инсталлятор, Автообновления)

  • Тестовая изоляция (P1-1): Автоматическая фикстура в tests/conftest.py изолирует HERMES_HOME во временной папке tmp_path, исключая изменение пользовательских файлов.
  • Офлайн маркеры pytest (P1-2): Настроены маркеры unit, integration, network, installer, live. По умолчанию pytest выполняется на 100% офлайн.
  • Единый источник версии 0.1.1 (P1-3): src/antigravity_provider/version.py синхронизирован с pyproject.toml, compatibility.json, About view и Release Gate.
  • Централизованные пути (P1-4): src/antigravity_provider/paths.py ликвидировал все жестко зашитые пути разработчика (E:\Agent projects, C:\Users\trush).
  • Блокировка состояния роутера (P1-6): HealthTracker использует временный файл и атомарную замену (os.replace) при сохранении router_state.json.
  • Санитизация логов (P1-7): Модуль sanitizer.py автоматически маскирует Bearer токены, API-ключи sk-... и OAuth токены перед записью в журнал.
  • Удаление мертвого веб-стека (P1-9): Зависимости fastapi и uvicorn выведены из production-зависимостей pyproject.toml.
  • Канонический инсталлятор (P2-1): installer/HermesHubSetup.py проверяет наличие Hermes Agent, устанавливает GUI-пакеты в venv и создает ярлыки с AppUserModelID (HermesHub.Desktop).
  • Single Instance Mutex (P2-2): Именованный мьютекс Global\HermesHubSingleInstanceMutex активирует существующее окно при повторном запуске.
  • Диагностика запуска (P2-3): Лог startup.log фиксирует параметры инициализации до создания Tk-окна.
  • Встроенный Auto-Updater (P3-1, P3-2): Реализован UpdateManager с поддержкой манифестов, загрузки в staging, верификации SHA-256 и автоматического отката (rollback) при обнаружении повреждений.
  • CI / CD (P3-3, P3-4): Настроены GitHub Actions (.github/workflows/ci.yml, .github/workflows/release.yml) и автоматизированный скрипт scripts/release_gate.py.