HTTP fallback leg (docs/19): e2e scenario 13 + docs

- e2e.py: scenario 13 (http fallback) — drives a full turn over the
  HTTP leg (health + POST /v1/frame + SSE /v1/events, no WS) and
  asserts the user echo lands on the SSE stream in < 1.5 s.
- ws_probe.py --http: prints '== user echo in X.XXs' (the docs/19
  sendable-in-fallback timing assertion) alongside the existing
  health/POST/SSE output; same assertion flags as the WS leg.
- docs: 19 status flipped to implemented; 09-pairing-security §9.4
  cross-reference (second door, same lock: token + device allowlist,
  64 KiB cap, rate limit, optional TLS, unauthenticated /v1/health);
  13-testing manual scenario 15 + automated pointers.
This commit is contained in:
ARIA committed 2026-08-22 14:34:14 +02:00
1 parent 7f936fa596
commit 2349a95dd4
5 files changed
+61 -2

No files matched your search

+9
View File
@@ -131,6 +131,15 @@ adb logcat -d > /tmp/logcat.txt
entries drop out); tap a row → the command is sent and the drawer closes;
type an unknown command → the drawer closes (the raw text can still be
sent; hermes answers with its unknown-command reply).
15. **HTTP fallback (docs/19):** with the WS port unreachable (e.g. the
gateway bound WS to a dead port, or a firewall dropping 8790 but not
8791), the app stays sendable: the status pill shows "connected · http"
(green), a sent message echoes back within ~1 s and the agent reply
streams in over SSE; the attach button is disabled (media needs the
live WS). When the WS comes back the pill returns to "connected" and
media works again. Automated: `e2e.py` scenario 13 (health +
`POST /v1/frame` + SSE turn, user-echo < 1.5 s) and
`ws_probe.py --http` (same assertion flags as the WS leg).
## 13.5 Debugging tips