126 lines
6.9 KiB
Markdown
126 lines
6.9 KiB
Markdown
# Hermes Hub — Final Release Candidate Audit & Review Request (v0.1.1)
|
||
|
||
**Date:** 2026-08-20
|
||
**Target Candidate:** `v0.1.1`
|
||
**Base Commit:** `42dfe2c` → **Head Commit:** (Clean working tree)
|
||
**Reviewer:** Claude (Роль «Ревьюер»)
|
||
**Status:** ALL RELEASE BLOCKERS CLOSED & LIVE VERIFIED (FEATURE FREEZE ACTIVE)
|
||
|
||
---
|
||
|
||
## 1. Summary of Verified Fixes
|
||
|
||
| Requirement | Implementation & Changes | Verification Status |
|
||
|---|---|---|
|
||
| **1. Canonical Installer (`HermesHubSetup.cs` -> `HermesHubSetup.exe`)** | Updated `HermesHubSetup.cs` to version `0.1.1`, added `EnsurePythonDependencies` (`customtkinter`, `Pillow`, `PyYAML`, `psutil`), `assets/` recursive copying to target & plugin directories, and post-install import smoke test. Recompiled via `build_installer.ps1` to `dist/HermesHubSetup.exe`. | `[LIVE VERIFIED]` ✅ |
|
||
| **2. P0-1 Dependency Installation** | If `customtkinter` or `PIL` are absent in the target Hermes venv, installer bootstraps `ensurepip` / `pip` / `uv` and installs required packages, verifying import before completing. | `[LIVE VERIFIED]` ✅ |
|
||
| **3. Branding & Provider Assets** | `assets/branding/` and `assets/providers/` deployed into installation and plugin directory; `paths.get_branding_dir()` and `paths.get_providers_assets_dir()` resolve from installed locations without repository path fallbacks. | `[LIVE VERIFIED]` ✅ |
|
||
| **4. Post-Install Import Smoke Test** | Executes `python.exe -c "import customtkinter; from PIL import Image; import antigravity_provider.router.hermes_hub_app; print('HERMES_HUB_IMPORT_OK')"`; non-zero exit or missing sentinel fails installation. | `[LIVE VERIFIED]` ✅ |
|
||
| **5. Clean Live Install Test** | Executed `HermesHubSetup.exe /silent` in a clean disposable sandbox venv without `customtkinter`/`Pillow`. Verified dependencies installed, assets present, and native UI module imported without crash. | `[LIVE VERIFIED]` ✅ |
|
||
| **6. P0-1 Test Coverage** | `test_p0_1_installer_dependencies` verifies installer source specification for dependencies, assets, smoke test, and runtime availability. | `[UNIT VERIFIED]` ✅ |
|
||
| **7. S7 Test Isolation** | Canonical installer documentation and test isolation policy defined in `installer/README.md`; unit tests isolated from Registry / Start Menu. | `[UNIT VERIFIED]` ✅ |
|
||
| **8. M1 Dev URL Bypass Closure** | `is_allowed_update_host(..., allow_dev_local=False)` in production path. Local files/paths are strictly rejected in production mode and allowed only with `HERMES_HUB_DEV_MODE=1`. | `[UNIT VERIFIED]` ✅ |
|
||
| **9. M2 Release Gate Counters** | Aligned all headings and messages to exact count `16/16`. | `[UNIT VERIFIED]` ✅ |
|
||
| **10. M3 Settings Caching** | Implemented mtime-based cache in `settings_service.py` with cache invalidation on save to eliminate JSON disk I/O on every LLM routing request. | `[UNIT VERIFIED]` ✅ |
|
||
| **11. Public Release Feed** | Created public repository `ochenstarik-ui/hermes-hub-releases`. Published `update_manifest.json` returning HTTP 200 without BOM. | `[LIVE VERIFIED]` ✅ |
|
||
|
||
---
|
||
|
||
## 2. Mandatory Evidence (A–J)
|
||
|
||
### A. Canonical Installer Binary
|
||
- **Source:** [`installer/HermesHubSetup.cs`](file:///E:/Agent%20projects/hermes-hub/installer/HermesHubSetup.cs)
|
||
- **Binary:** `dist/HermesHubSetup.exe` (SHA256: `1D41B9D669952CE9B409675C3A9FDDF317197341645016456B134E1BCA1BA97F`)
|
||
- **Compiler:** Microsoft (R) Visual C# Compiler (csc.exe) via [`installer/build_installer.ps1`](file:///E:/Agent%20projects/hermes-hub/installer/build_installer.ps1).
|
||
|
||
### B & C. Clean Sandbox Venv Pre/Post Install
|
||
- **Pre-Install Check:**
|
||
```
|
||
PASS: customtkinter is absent as expected
|
||
PASS: PIL is absent as expected
|
||
```
|
||
- **Installer Execution:**
|
||
```
|
||
Running HermesHubSetup.exe /silent on sandbox without customtkinter/pillow...
|
||
Installer ExitCode: 0
|
||
```
|
||
- **Post-Install Verification:**
|
||
```
|
||
PASS: customtkinter successfully installed: 6.0.0
|
||
PASS: Pillow successfully installed: ...\site-packages\PIL\Image.py
|
||
PASS: PyYAML successfully installed
|
||
PASS: Hermes Hub App successfully imported!
|
||
```
|
||
|
||
### D & E. Assets & App Loading from Installed Path
|
||
```
|
||
Logo 1024: True
|
||
App Icon: True
|
||
Antigravity icon: True
|
||
OpenAI icon: True
|
||
OpenCode icon: True
|
||
Hermes Hub App Module loaded successfully: ...\plugins\antigravity-provider\src\antigravity_provider\router\hermes_hub_app.py
|
||
```
|
||
|
||
### F & G. Production vs Dev Mode Updater Host Allowlist
|
||
- **Production Mode (No Dev Env):**
|
||
- `file:///C:/local/update.zip` -> `REJECT` (`False`)
|
||
- `C:\local\update.zip` -> `REJECT` (`False`)
|
||
- `https://evil-server.com/malicious_update.zip` -> `REJECT` (`False`)
|
||
- **Development Mode (`HERMES_HUB_DEV_MODE=1`):**
|
||
- `file:///C:/local/update.zip` -> `ALLOW` (`True`)
|
||
- `C:\local\update.zip` -> `ALLOW` (`True`)
|
||
- `http://localhost:8000/manifest.json` -> `ALLOW` (`True`)
|
||
- `https://evil-server.com/malicious_update.zip` -> `REJECT` (`False`)
|
||
|
||
### H. Public Release Feed HTTP 200
|
||
```
|
||
URL: https://raw.githubusercontent.com/ochenstarik-ui/hermes-hub-releases/main/update_manifest.json
|
||
HTTP Status: 200
|
||
Product: Hermes Hub Version: 0.1.1
|
||
```
|
||
|
||
### I. Pytest Suite Exact Output
|
||
```
|
||
============================= test session starts =============================
|
||
platform win32 -- Python 3.11.16, pytest-9.1.1, pluggy-1.6.0
|
||
rootdir: E:\Agent projects\hermes-hub
|
||
configfile: pyproject.toml
|
||
testpaths: tests
|
||
plugins: anyio-4.12.1
|
||
collected 58 items / 3 deselected / 55 selected
|
||
|
||
====================== 55 passed, 3 deselected in 8.14s =======================
|
||
```
|
||
|
||
### J. Release Gate Verification Exact Output
|
||
```
|
||
======================================================================
|
||
Hermes Hub — Release Gate Verification Suite (Target: v0.1.1)
|
||
======================================================================
|
||
|
||
Running 1. Version Consistency ([UNIT VERIFIED])...
|
||
[UNIT VERIFIED] Version 0.1.1 is consistent across all manifests
|
||
|
||
Running 2. P0 Release Blockers (16/16) ([UNIT VERIFIED])...
|
||
[UNIT VERIFIED] 16/16 P0 release blockers & regression checks verified
|
||
|
||
Running 3. Auto-Updater & Rollback ([INTEGRATION VERIFIED])...
|
||
[INTEGRATION VERIFIED] Auto-updater, SHA-256 verification, and rollback verified
|
||
|
||
Running 4. Full Offline Pytest Suite ([INTEGRATION VERIFIED])...
|
||
[INTEGRATION VERIFIED] All unit and integration tests passed offline
|
||
|
||
Running 5. Zero Hardcoded Developer Paths ([STATIC VERIFIED])...
|
||
[STATIC VERIFIED] Zero hardcoded developer paths in src/
|
||
|
||
Running 6. Zero Credentials & AST Secret Scan ([SECURITY VERIFIED])...
|
||
[SECURITY VERIFIED] Zero secret files, live tokens, or obfuscated secret assignments in src/
|
||
|
||
Running 7. Public Production Update Feed ([LIVE STATUS])...
|
||
[LIVE STATUS] Public update manifest live at https://raw.githubusercontent.com/ochenstarik-ui/hermes-hub-releases/main/update_manifest.json (v0.1.1)
|
||
|
||
======================================================================
|
||
[RELEASE GATE: PASSED] All criteria verified. Ready for Candidate v0.1.1
|
||
======================================================================
|
||
```
|