- Removed fabricated used_percent numbers and fake *_api source tags from quota_collector.py - Marked quota snapshot sources as baseline/estimated and added visual estimation indicators in accounts_view.py - Eliminated silent fallback on fake user_code/device_code in codex_oauth.py and grok_oauth.py - Gated mock OAuth sessions strictly behind HERMES_HUB_DEV_MODE=1 with visible UI warnings - Documented Google, OpenAI, xAI, and Claude OAuth clients in docs/OAUTH_CLIENT.md - Relocated unused gui_server.py and gui_cockpit.html to legacy/ - Added test_data_truthfulness_and_oauth_security.py covering fail-closed and source truthfulness invariants - Verified 98 passed tests (100%) and 7/7 release gate checks
4.5 KiB
4.5 KiB
Отчёт: Правдивость данных и готовность к релизу v0.1.1
Дата: 2026-08-21
Исполнитель: Antigravity
Статус: Выполнено (100% PASS, Release Gate 7/7)
1. Контекст и Выполненные Работы
Устранены дефекты показа недостоверных данных и тихого создания фиктивных кодов авторизации.
1.1 P0-1. Честный сбор и маркировка квот (quota_collector.py, account_identity.py, accounts_view.py)
- Исключены выдуманные проценты: Удалены захардкоженные
used_percent(12%, 9%, 1%, 2%, 5%, 10%, 6%, 9%, 14%, 13%, 1%). При отсутствии сетевого API провайдера для измерения точного расходаused_percentиremaining_percentустанавливаются вNone. - Честный источник: Источники квот маркируются как
"baseline"(или"estimated"/"runtime_event"), а не фиктивными*_api. - Визуальный признак в UI: В
AccountCardWidgetдля оценочных/базовых данных отображается явная подпись(оценка)и бейдж• оценкаво времени обновления. - Честная формулировка доступности:
QuotaBucket.formatted_remaining()возвращает"Доступна", а при runtime-исчерпании квоты (429) —"Исчерпана (Сброс через ...)".
1.2 P0-2. Устранение тихого фолбэка на поддельный код авторизации (codex_oauth.py, grok_oauth.py, claude_oauth.py)
- Fail-Closed при сетевой ошибке: При недоступности эндпоинта провайдера в
CodexOAuthSessionиGrokOAuthSession:start()немедленно переходит в статусstatus = "failed"с возвратом ошибки.- Поток поллинга
poll_threadне запускается. - Фиктивные коды
CDX-...иGRK-...не генерируются.
- Строгий DEV_MODE: Фолбэк на локальную сессию разрешён только при явном флаге
HERMES_HUB_DEV_MODE=1с визуальным предупреждением в мастере⚠️ ТЕСТОВЫЙ РЕЖИМ (HERMES_HUB_DEV_MODE). - Claude OAuth: В
handle_auth_code()при сбое обмена кода возвращается ошибка; прямой приём строки допускается только для явных ключейsk-ant-или вHERMES_HUB_DEV_MODE=1.
1.3 P1-3. Документация OAuth-клиентов (docs/OAUTH_CLIENT.md)
- Документированы 4 публичных клиента (Google Antigravity, OpenAI Codex
app_EMoamEEZ73f0CkXaXp7hrann, xAI Grokb1a00492-073a-47ea-816f-4c329264a828, Anthropic Claude9d1c250a-e61b-44d9-88ed-5944d1962f5e). - Описаны модели угроз и обоснования по RFC 8252 (Native Apps), RFC 7636 (PKCE) и RFC 8628 (Device Authorization Grant).
1.4 P1-4. Очистка неиспользуемого gui_server.py
- Неиспользуемые файлы
gui_server.pyиgui_cockpit.htmlвынесены изsrc/вlegacy/. - Зависимости
fastapiиuvicornизолированы в секцию[project.optional-dependencies] legacy.
2. Результаты Тестирования и Release Gate
-
Новый набор тестов (
tests/test_data_truthfulness_and_oauth_security.py):- Проверка честной маркировки источников квот
source != '*_api'иis_estimated=True. - Проверка немедленного
failedстатуса и отсутствия поллинга в Codex и Grok при сетевых сбоях. - Проверка работы mock-сессий строго под
HERMES_HUB_DEV_MODE=1. - Проверка отклонения невалидных кодов в Claude.
- Проверка честной маркировки источников квот
-
Полный прогон Pytest:
- Команда:
pytest -v - Результат: 98 passed, 7 skipped, 3 deselected in 9.63s (100% PASS).
- Команда:
-
Release Gate Verification (
scripts/release_gate.py):- Результат: 7/7 PASSED.