Files
hermes-mobile/docs/BLOCKERS.md
T
2026-07-24 21:17:14 +00:00

6.7 KiB

Hermes Mobile Blockers

R1 — Emulator/device accessibility matrix

R1 cannot be marked complete from the current sandbox. On 2026-07-24, the required recovery preflight passed immediately before this run, but a direct writable-cache Gradle retry was blocked before project execution because the sandbox prohibits Gradle's TCP control socket (java.net.SocketException: Operation not permitted). ADB 37.0.0 is installed at /opt/android-sdk/platform-tools/adb, but its daemon cannot create the local smart-socket listener or netlink socket (Operation not permitted). No emulator executable, AVD, /dev/kvm, USB device bus, or running target is available. No successful attached-target query, physical-device walkthrough, emulator walkthrough, or device evidence was possible.

Required unblock evidence: run the required preflight and focused Android tests in an environment that permits them, then record the small-phone, normal-phone, and tablet checks in docs/ROADMAP.md across portrait/landscape, font scaling, TalkBack, light/dark contrast, touch targets, reduced motion, and IME behavior. Source review, git diff --check, and direct execution of cached test classes are supporting evidence only and do not complete R1.

R2 — Clean beta build/install verification

The v0.1.0-beta.1 Android package metadata and direct-gateway build/install guide are present in source. On 2026-07-24, Task 5 source-current re-verification passed the external recovery preflight and documented offline Gradle :app:testDebugUnitTest :app:assembleDebug command (43 tasks, 1 executed); the generated Gradle XML report records 106 tests with 0 failures/errors, including 29 SetupWizardReducerTest cases. A localhost gateway health probe returned HTTP 200, establishing reachability only. The debug APK reports package cloud.molberg.hermesmobile, version 0.1.0-beta.1 (10001), and SHA-256 45e4ab4783a74eb766070b0f670a2631a9ebdc044468bbe03087788f8106f150. No ADB device/emulator or /dev/kvm was available, so installation verification cannot be completed in the current sandbox.

A later Task 5 rerun on 2026-07-24 was blocked before project execution: the guide's exact Gradle command could not determine a usable wildcard IP, and the offline/no-daemon variant could not open Gradle's daemon TCP socket (java.net.SocketException: Operation not permitted). Both attempts left the existing ignored APK unchanged. The source-current generated XML reports still record 106 tests with 0 failures/errors, including 29 SetupWizardReducerTest cases, while fresh aapt and SHA-256 inspection reconfirmed the package/version/hash above. ADB 37.0.0 was present at /opt/android-sdk/platform-tools/adb but could not create its smart-socket/netlink sockets; /dev/kvm and /dev/bus/usb were absent. This rerun provides no fresh Gradle test/assembly, device, authentication, release, or end-to-end evidence.

The first-run Setup Wizard is also source-complete and unit/build verified, including None/Bearer/password choices and direct password-session cookie handling. No real None/Bearer/password credential flow has been exercised against a live gateway, so R2 must include the chosen authentication mode and observed connection result without recording credentials.

ADB is installed, but the R1 evidence above confirms that its daemon sockets are prohibited and that no emulator executable, AVD, /dev/kvm, USB device bus, or running target is available. Package metadata and the SHA-256 of the existing ignored source-current APK were inspected, but no fresh assembly, clean uninstall/install, launch, or direct-gateway device connection was verified here. No APK was published or uploaded, and no final release criterion is claimed.

Required unblock evidence: in a permitted environment, run the preflight and Android checks from docs/ANDROID_BETA_BUILD.md, record aapt package/version output and the APK SHA-256, clean-install on one named real device or emulator, launch the app, configure the upstream Hermes gateway directly, and record the connection result in docs/ROADMAP.md.

Stable gateway identity binding

The documented direct gateway routes currently available to Hermes Mobile (GET /health and authenticated GET /v1/models) do not expose a verified stable gateway instance identifier.

B2 therefore protects local-first routing by requiring explicit HTTPS URLs, disabling redirects and cleartext traffic, probing /health without credentials, and sending a bearer token only for the documented /v1/models compatibility check. This confirms TLS reachability and authenticated API compatibility, but it cannot cryptographically prove that separately configured Local and Remote URLs terminate at the same Hermes gateway identity.

Upstream compatibility needed for stronger binding: a documented stable gateway instance ID signed or authenticated consistently across both routes, or an upstream-supported certificate/public-key pin that the Android client can bind to the single logical profile. Until then, Local and Remote pairing remains an explicit user trust decision and diagnostics identify only the active route, not internal URLs.

Direct gateway session search contract

The official Hermes Agent API server documentation checked on 2026-07-24 documents authenticated GET /v1/capabilities and session endpoint capability entries for list, create, get, update, delete, messages, fork, chat, and chat streaming. It does not document a session-search endpoint, query parameter/body schema, response envelope, or a session_search capability entry.

B3 therefore keeps searchSessions in the Android repository contract and verifies it with the fake repository, but deliberately provides no direct-gateway HTTP mapping for search. Current official upstream API-server behavior represents capability endpoints as structured {method, path} objects; the earlier Android B3 string-only endpoint parser has not been exercised against a live gateway and is not treated as verified compatibility.

A localhost Hermes gateway health probe returned HTTP 200 on 2026-07-24. This establishes only that the health endpoint was reachable; no authenticated session operation, session-search contract, or end-to-end gateway flow was exercised, so no live session compatibility verification is claimed.

Upstream evidence needed to unblock B3: official documentation for session search including capability key, HTTP method, path, query/body schema, response envelope, and empty/error semantics, followed by a live compatibility exercise against an upstream Hermes gateway.

Sources checked on 2026-07-24: https://hermes-agent.nousresearch.com/docs/user-guide/features/api-server/; installed official upstream checkout NousResearch/hermes-agent at commit 36f2a966c, including gateway/platforms/api_server.py capability and session-stream behavior.