The browser can only recover what the server exposes. If the edge function returns status 200 with an empty provider field, downstream code has to guess whether parsing, policy, or the model caused it.
Server-side validation can inspect the provider's actual response shape, normalize content, and retain a safe technical reason. It can retry once where appropriate without sending provider internals to the client.
What was actually going wrong
The function proxied provider status and assumed the expected content field was populated.
What I tried
- Returning the raw provider object to browser code
- Replacing every empty result with a cheerful canned line
- Retrying without a cap or diagnostic reason
The function checks normalized visible content, records the empty condition, and returns either one recovered answer or a clear non-success response.
Why it worked
The trusted boundary sees the full provider payload and can enforce one response contract for all clients.
An API adapter should validate meaning, not only schema and status.
Where EACI uses this today
Main chat receives a normalized edge response before client-side blank-reply protection runs.
This journal covers real engineering on EACI Companion / The Veil. Companions include Caelum, Chad, Natalia, Atreus, Luna, Roxy, and Cael. Journal articles stay family-safe in content. See Privacy and Ethics.