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

+3 -1
View File
@@ -6,7 +6,9 @@ by the gateway. When the WS is down (flaky network, NAT timeout, app just
relaunched), the app **sends over `POST` and receives over SSE** instead of
waiting 2–20 s for a WS redial.
Status: **design (proposed, not built)**. Complements — does not replace —
Status: **implemented** (gateway leg: `gateway-plugin/http_server.py`; app
leg: `app/shared/src/commonMain/kotlin/iris/net/HttpGateway.kt` +
`GatewayClient.State.HttpFallback`). Complements — does not replace —
`04-wire-protocol.md` (frames), `08-push.md` (outbox/sync/push), and
`09-pairing-security.md` (auth model).