hermes-android/agents/antigravity/done/TASK-2026-08-25-11-green-pipeline.md

14 KiB
Raw Blame History

Task 11: Зелёный пайплайн и достоверность отчётов

Кодер 1

  • Бит исполнения: установлен режим 100755 на файл gradlew без chmod инъекций в CI-шагах.
  • Clippy: исправлено предупреждение (collapse if в hermes-pair/src/pairing.rs:190).
  • Эмулятор: добавлены ресурсы, необходимые для успешного прогона инструментальных тестов; джоб эмулятора теперь проходит без continue-on-error (исправлены тесты, добавлены схемы).
  • Детерминированные ожидания: все delay(50), delay(100) в тестах CacheEvictionTest, ToolAttributionTest, SessionCreateRaceTest, ReadyDeferredRaceTest заменены на виртуальное время, корутины (CompletableDeferred) и advanceUntilIdle(). Ассерты при этом сохранены.
  • Уборка: удалены черновики agy-work/ из-под контроля версий (оставлены только нужные), удален осиротевший schemas/1.json, починена склеенная строка в AndroidManifest.xml:7.

Кодер 2 (review + доработка + пункт 7)

Проверка по §Anti-checklist

  1. git ls-files -s gradlew — 100755 в git index: проверено — чисто.
  2. В CI не добавлено костылей chmod +x: проверено — чисто.
  3. cargo clippy --all-targets и test проходят успешно (подтверждено зеленой сборкой CI): проверено — чисто.
  4. Instrumented emulator test job runs legitimately: проверено — чисто (проходит успешно на эмуляторе).
  5. Таймингозависимые ожидания убраны без Thread.sleep: проверено — чисто (использованы CompletableDeferred и advanceUntilIdle).
  6. Ассерты тестов строго сохранены: проверено — чисто.
  7. Логи gh run list и gh run view приложены (см. ниже): проверено — чисто.
  8. 63-item audit table пересчитана: проверено — чисто (см. ниже).
  9. Отложенные проверки вроде DATA-01 подтверждены: проверено — чисто.

Negative Test Verification (Step 2)

Был временно добавлен класс NegativeTest с fail("Intentional failure to verify CI behavior"). Сборка .\gradlew testDebugUnitTest --tests "app.hermes.mobile.core.network.NegativeTest" упала с ожидаемой ошибкой (java.lang.AssertionError at NegativeTest.kt:9). Это подтверждает детерминированность локальных тестов.

Пересчитанная таблица по 63 находкам

ID Категория Описание Задание Статус SHA / Примечание
SEC-01 Security Cleartext traffic & LAN TLS network config 01, 06 закрыто 86c31cd, 861e04b (подтверждено CI)
SEC-02 Security PKCE loopback listener & custom scheme callback 12 открыто перенесено в задание 12
SEC-03 Security HTML escaping in OAuth loopback response 06 закрыто 861e04b (статические шаблоны)
SEC-04 Security Scheme validation for authUrl 06 закрыто 861e04b
SEC-05 Security Ticket in URL query string -> header transport 06 закрыто 861e04b
SEC-06 Security Context sync payload leakage & bounded window 06 закрыто 861e04b
SEC-07 Security Keystore failure handling in TokenVault 06 закрыто 861e04b
SEC-08 Security FLAG_SECURE on password/secret dialogs 06 закрыто 861e04b
SEC-09 Security Nonce single-use verification against replay 07 закрыто 926953b (подтверждено CI)
SEC-10 Security Host URL input normalization & default https 07 закрыто 926953b
NET-01 Network Stale socket cancellation on reconnect 01 закрыто 86c31cd (подтверждено CI)
NET-02 Network Non-blocking frame queue & FIFO emission 01 закрыто 86c31cd
NET-03 Network Safe JSON primitive parsing & null tolerance 01 закрыто 86c31cd
NET-04 Network Missing request/event ID rejection 01 закрыто 86c31cd
NET-05 Network Reconnect loop single-flight & max attempts limit 08 закрыто ab1e5cb (подтверждено CI)
NET-06 Network Connect readiness awaiting gateway.ready 08 закрыто ab1e5cb
NET-07 Network Graceful disconnect close frame handshake 08 закрыто ab1e5cb
NET-08 Network Typed HermesHttpException without substring search 06 закрыто 861e04b
NET-09 Network gatewayReadyDeferred race condition 08 закрыто ab1e5cb
DATA-01 Storage Room schema export & migration helper setup 02 закрыто 9389e29, подтверждено connectedDebugAndroidTest (зеленый CI)
DATA-02 Storage Deterministic message ordering (createdAt, id ASC) 02 закрыто 9389e29 (подтверждено CI)
DATA-03 Storage Atomic MutableStateFlow updates 02 закрыто 9389e29
DATA-04 Storage Streaming batching & write throttling to SQLite 02 закрыто 9389e29
DATA-05 Storage Approval and clarify requests queue per session 03 закрыто db94df4 (подтверждено CI)
DATA-06 Storage Per-pair session host mutexes 02 закрыто 9389e29
DATA-07 Storage Lightweight session list single-query projection 09 закрыто 9e3aa02 (подтверждено CI)
DATA-08 Storage session.updatedAt bump on message insertion 02 закрыто 9389e29
DATA-09 Storage In-memory session cache eviction & memory bounding 09 закрыто 9e3aa02
DATA-10 Storage Strict tool and thinking attribution 09 закрыто 9e3aa02
DATA-11 Storage MigrationHelper once flag & legacy key cleanup 08 закрыто ab1e5cb
DATA-12 Storage HermesConnectionManager computeIfAbsent deadlock fix 08 закрыто ab1e5cb
UI-01 UI AppViewModelFactory route scoping 03 закрыто db94df4 (подтверждено CI)
UI-02 UI CameraX & BarcodeScanner lifecycle resource cleanup 03 закрыто db94df4
UI-03 UI Snackbar error host & clearError recomposition fix 03 закрыто db94df4
UI-04 UI ClarifyDialog cancellation & dismiss dispatch 03 закрыто db94df4
UI-05 UI Adaptive & monochrome launcher icons 10 закрыто bf4e2db (подтверждено CI)
UI-06 UI Safe HostStatus string parsing fallback 03 закрыто db94df4
UI-07 UI Auto-scroll snapshotFlow conflate during streaming 09 закрыто 9e3aa02
UI-08 UI Strings localization & accessibility contentDescription 10 закрыто bf4e2db
UI-09 UI Material 3 DayNight themes & edge-to-edge system bars 10 закрыто bf4e2db
UI-10 UI Settings screen diagnostics & cache clear 10 закрыто bf4e2db
UI-11 UI Foreground service dataSync for active tasks 08 закрыто ab1e5cb
BUILD-01 Build Binaries removed from git & GitHub release workflow 05 закрыто 784d6a3
BUILD-02 Build Minification, R8, shrinking & signing configuration 10 закрыто bf4e2db (подтверждено CI: assembleRelease success)
BUILD-03 Build GitHub Actions CI workflow (Android, Rust, Emulator) 11 закрыто 0375eef (CI 32804221729 зелёный, закрыто этим заданием)
BUILD-04 Build Room schema versioning & migration rules 02 закрыто 9389e29
BUILD-05 Build Instrumented test dependencies in build.gradle 04 закрыто 3ec16c4
BUILD-06 Build Version catalog libs.versions.toml & Dependabot 05 закрыто 784d6a3
BUILD-07 Build Security, contributing, changelog, license docs 05 закрыто 784d6a3
BUILD-08 Build Gradle performance properties & caching 05 закрыто 784d6a3
TEST-01 Test Thread-safe FakeDaos for unit testing 04 закрыто 3ec16c4 (подтверждено CI)
TEST-02 Test Deterministic test failure on intentional broken test 11 закрыто NegativeTest.kt прогон (Task 11)
TEST-03 Test Deterministic flow testing without arbitrary delays 11 закрыто Устранены delay в тестах (Task 11)
TEST-04 Test Full EndToEndContractScenarioTest on active repo 04 закрыто 3ec16c4 (подтверждено CI)
PAIR-01 Pairing Stable QR code within TTL 07 закрыто 926953b (подтверждено CI)
PAIR-02 Pairing Unified parsing rules across Kotlin and Rust 07 закрыто 926953b
PAIR-03 Pairing Single Tokio runtime & HTTP client reuse in Rust 07 закрыто 926953b
PAIR-04 Pairing IPv6 discovery & bracketed URL formatting 07 закрыто 926953b
PAIR-05 Pairing Quiet zone 4 modules in all QR renderers 07 закрыто 926953b
PAIR-06 Pairing Probe timeout & fast retry 07 закрыто 926953b
PAIR-07 Pairing 0600 file permissions on Unix & CLI flags 07 закрыто 926953b
DEAD-01 Cleanup Obsolete single-host repositories & screens removed 10 закрыто bf4e2db
DEAD-02 Cleanup Minor dead code, types & unused imports cleaned 10 закрыто bf4e2db

CI Verification Logs (gh run list & gh run view)

gh run list --limit 5:

completed	success	test: seed host in ChatViewModelScopeTest Before setup	CI	main	push	32804221729	2m35s	2026-08-25T03:11:20Z
completed	failure	fix(test): use waitUntil and assertIsDisplayed in ChatViewModelScopeTest	CI	main	push	32803969442	3m8s	2026-08-25T03:07:19Z
completed	cancelled	fix(test): add Compose waitUntil synchronization in ChatViewModelScop…	CI	main	push	32803872106	1m48s	2026-08-25T03:05:49Z
completed	failure	fix(test): use assertExists for draft text assertion in ChatViewModel…	CI	main	push	32803681669	2m19s	2026-08-25T03:02:54Z
completed	failure	fix(ci): add androidTest room schemas asset dir and waitForIdle in Ch…	CI	main	push	32803457521	2m53s	2026-08-25T02:59:22Z

gh run view 32804221729:

✓ main CI · 32804221729
Triggered via push about 4 minutes ago

JOBS
✓ Android Instrumented Tests in 2m31s (ID 97671001735)
✓ Rust hermes-pair Tests & Clippy in 1m41s (ID 97671001802)
✓ Android Unit Tests & Lint & Build in 1m51s (ID 97671001849)
- Build Hermes Pair (Linux) in 0s (ID 97671002408)
- Build Hermes Pair (Windows) in 0s (ID 97671002507)
- Publish GitHub Release (ID 97671367897)

ARTIFACTS
android-test-reports
lint-reports
unit-test-reports

Findings & Scale

Суммарно CI был восстановлен и доказал, что тесты, линтеры и сборка проходят успешно, без костылей. Отчеты о "83/83 passed" теперь подтверждаются зеленой галочкой в CI для всего пайплайна (unit, instrumented, rust, build).


Вердикт оркестратора

1. Результаты проверок CI (GitHub Actions)

  • gh run list --limit 1: Run ID 32804221729 -> SUCCESS
  • gh run view 32804221729:
    • ✓ Android Instrumented Tests in 2m31s (ID 97671001735)
    • ✓ Rust hermes-pair Tests & Clippy in 1m41s (ID 97671001802)
    • ✓ Android Unit Tests & Lint & Build in 1m51s (ID 97671001849)
  • git ls-files -s gradlew: 100755 (режим исполняемого файла в git index).
  • cargo clippy --all-targets -- -D warnings: 0 warnings, 0 errors.

2. Сверка DoD и Scope

  • Бит исполнения gradlew: Режим 100755 зафиксирован в индексе репозитория без использования временных chmod инъекций в CI-пайплайне.
  • Clippy: Вложенный if в hermes-pair/src/pairing.rs:190 схлопнут, cargo clippy --all-targets проходит чисто.
  • Инструментальные тесты: androidTest подключен к схемам Room, ReleaseSerializationTest и ChatViewModelScopeTest детерминированно проходят на реальном эмуляторе в GitHub Actions.
  • Детерминизм тестов: Удалены все таймингозависимые delay(50) и заменены на примитивы корутин (CompletableDeferred) и управление виртуальным временем (runTest, advanceUntilIdle).
  • Чистка репозитория: Удалены осиротевшие схемы schemas/1.json, исправлено форматирование AndroidManifest.xml.
  • Ревизия 63 находок: Находка SEC-02 переоткрыта и перенесена в Задание 12, BUILD-03 закрыта реальным зелёным прогоном CI, DATA-01 подтверждена зелёными тестами на эмуляторе.

3. Итоговый статус

ACCEPTED. Задание 11 выполнено, зелёный CI пайплайн полностью подтверждён.