fix(installer,release): находки agy с живой Windows-машины (A61) #6

Merged
ochenstarik-ui merged 13 commits from installer/a61-port-live-fixes into main 2026-09-03 18:03:14 +00:00
ochenstarik-ui commented 2026-09-03 17:57:42 +00:00 (Migrated from github.com)

Ветка installer/a61-live-verification (agy, коммит b0644a3) частично пересекалась с HUB-1 (#2), частично добавляла то, чего там не было. Пункты взяты по одному, дубли — нет. Подробный разбор — в теле коммита.

Эта ветка стоит поверх #2 и #5 (hub/audit-p0-green-main + linux/a62-installer-desktop-icon, слиты сюда без конфликтов) — поэтому диф здесь показывает больше, чем один коммит, пока те не смёржены в main. Мержить последней в цепочке #2#5 → эта.

Взято у agy

  1. verify_multi_provider_router.py проверял изоляцию пути на ID ag-w2 — на живой машине владельца это существующий подключённый профиль, assert not pdir.exists() падал не из-за бага (код возврата 12). Заменён на заведомо не боевой ag-probe-isolation-test.
  2. HermesHubSetup.cs: CreateStartMenuShortcut/RemoveStartMenuShortcut не уважали HERMES_HUB_NO_REGISTRY — изолированные тесты всё равно писали ярлык в настоящее меню Пуск. Плюс LOCALAPPDATA читается из окружения раньше SpecialFolder.
  3. test_installer.py: /silent-тест линкуется на venv настоящей машины junction'ом/symlink'ом вместо пустых touch-файлов — раньше проверка живых Win32-зависимостей ничего по сути не проверяла.
  4. update_manager.py: запасной перебор известных имён установщика до отката на .zip.
  5. release_gate.py --assets: добавлены нижняя граница размера (усечённая сборка) и сверка SHA-256 каждого установщика с локальным checksums.txt — до публикации. Реализация своя (agy: только HermesHubSetup.exe, несовместимая с --publication-only из HUB-1 CLI-обвязка), но обе живые находки — его.

Проверено полным циклом: собран настоящий dist/hermes-hub-setup.sh, посчитаны настоящие контрольные суммы, --assets прошёл — 12588887 байт, SHA-256 сошёлся.

Не взято — уже шире в HUB-1

  • security_guard.py: точечный $HOME в тексте команды — версия HUB-1 (конвейер: диалект по команде, ${HOME}, %USERPROFILE%, fail-closed) шире и уже зелёная на настоящем Windows CI.
  • test_a59: заглушка os.getuid без проверки ветки Windows — версия HUB-1 параметризована на обе ветки.
  • Скомпилированные .exe — не переносил, пересборка на Windows после этого коммита.

Тесты: 780 → 781 passed. ruff check . чисто.

🤖 Generated with Claude Code

Ветка `installer/a61-live-verification` (agy, коммит `b0644a3`) частично пересекалась с [HUB-1 (#2)](https://github.com/ochenstarik-ui/hermes-hub/pull/2), частично добавляла то, чего там не было. Пункты взяты по одному, дубли — нет. Подробный разбор — в теле коммита. **Эта ветка стоит поверх #2 и #5** (`hub/audit-p0-green-main` + `linux/a62-installer-desktop-icon`, слиты сюда без конфликтов) — поэтому диф здесь показывает больше, чем один коммит, пока те не смёржены в `main`. Мержить последней в цепочке #2 → #5 → эта. ## Взято у agy 1. `verify_multi_provider_router.py` проверял изоляцию пути на ID `ag-w2` — на живой машине владельца это существующий подключённый профиль, `assert not pdir.exists()` падал не из-за бага (код возврата 12). Заменён на заведомо не боевой `ag-probe-isolation-test`. 2. `HermesHubSetup.cs`: `CreateStartMenuShortcut`/`RemoveStartMenuShortcut` не уважали `HERMES_HUB_NO_REGISTRY` — изолированные тесты всё равно писали ярлык в настоящее меню Пуск. Плюс `LOCALAPPDATA` читается из окружения раньше `SpecialFolder`. 3. `test_installer.py`: `/silent`-тест линкуется на venv настоящей машины junction'ом/symlink'ом вместо пустых touch-файлов — раньше проверка живых Win32-зависимостей ничего по сути не проверяла. 4. `update_manager.py`: запасной перебор известных имён установщика до отката на `.zip`. 5. `release_gate.py --assets`: добавлены нижняя граница размера (усечённая сборка) и сверка SHA-256 каждого установщика с локальным `checksums.txt` — до публикации. Реализация своя (agy: только `HermesHubSetup.exe`, несовместимая с `--publication-only` из HUB-1 CLI-обвязка), но обе живые находки — его. Проверено полным циклом: собран настоящий `dist/hermes-hub-setup.sh`, посчитаны настоящие контрольные суммы, `--assets` прошёл — 12588887 байт, SHA-256 сошёлся. ## Не взято — уже шире в HUB-1 - `security_guard.py`: точечный `$HOME` в тексте команды — версия HUB-1 (конвейер: диалект по команде, `${HOME}`, `%USERPROFILE%`, fail-closed) шире и уже зелёная на настоящем Windows CI. - `test_a59`: заглушка `os.getuid` без проверки ветки Windows — версия HUB-1 параметризована на обе ветки. - Скомпилированные `.exe` — не переносил, пересборка на Windows после этого коммита. Тесты: 780 → 781 passed. `ruff check .` чисто. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Sign in to join this conversation.
No description provided.