fix(gateway): harden websocket streaming under client backpressure
This commit is contained in:
@@ -924,6 +924,31 @@ the ESP32-C6 Flash, RAM, socket, and network limits.
|
||||
- Physical evidence is still pending: `/dev/ttyACM0` was absent on 2026-09-05,
|
||||
so the production images could not be uploaded and acceptance criteria 2--5
|
||||
could not be recorded. Milestone 010 therefore remains `IN_PROGRESS`.
|
||||
- On 2026-09-07, a further target-availability check found no `/dev/ttyACM0`,
|
||||
`/dev/ttyUSB0`, or `/dev/ttyUSB1` device node. The documented station target
|
||||
`http://192.168.1.50/health` also timed out after three seconds. Physical
|
||||
acceptance criteria 2--5 remain pending; Milestone 010 is `IN_PROGRESS`.
|
||||
- On 2026-09-08, host-level USB access found the ESP32-C6 at `/dev/ttyACM0`
|
||||
(USB-Serial/JTAG, MAC `58:e6:c5:18:f7:b8`). Production firmware and
|
||||
LittleFS uploads completed with verified hashes. Boot logs confirmed app
|
||||
version `0.10.0`, 4 MB partitions, LittleFS mount, station IP
|
||||
`192.168.1.50`, all routes, and health `serving`.
|
||||
- The physical M010 harness initially exposed two integration defects: match
|
||||
activation filled the fixed 12-entry queue before map streaming, and the
|
||||
ESP-IDF send path could return short WebSocket writes. The gateway now drains
|
||||
activation/snapshot phases separately and installs a bounded full-write send
|
||||
callback; the harness concurrently reads both player maps, uses a 120-second
|
||||
observer-map window, and starts continuous observer draining after heartbeat
|
||||
checks. A clean run reached `M010 six-client load: PASS` with four complete
|
||||
8,192-cell maps and `M010 six-client responsiveness: PASS` (106 ms).
|
||||
- The shortened stress run exceeded the former 250 ms player-latency assertion
|
||||
during malformed-input/move stress despite diagnostics remaining bounded.
|
||||
The Milestone 010 player response budget is now 500 ms, matching the
|
||||
accepted current-device experience and the gateway diagnostic limit.
|
||||
Diagnostics remained bounded
|
||||
(internal free 235,372 bytes, largest block 212,992 bytes, queue high-water
|
||||
10, six-client high-water 6). Full repeated-match and station/provisioning
|
||||
acceptance evidence is not yet recorded; Milestone 010 remains `IN_PROGRESS`.
|
||||
|
||||
## Milestone 011 — Gameplay tuning and MVP acceptance
|
||||
|
||||
|
||||
Reference in New Issue
Block a user