EACI Development Journal · Reliability

Why Do AI Companion Replies Come Back Blank?

A successful request can still leave the chat bubble empty. The visible-text recovery path treats that as a first-class failure instead of blaming the user.

Reliability ~8 min issue-tagged
Issue this fixes

The model endpoint could finish normally while producing no text that survived parsing and cleanup. From the browser's point of view, the send worked; from the user's point of view, the companion simply disappeared.

The August 14 sanitized export grouped 63 events as `blank_eaci_reply`. That count mattered because it separated an empty visible result from a network exception and made the failure reproducible.

What was actually going wrong

Success was inferred from HTTP completion, while stream parsing, hidden reasoning removal, and final text cleaning could still reduce the displayed payload to an empty string.

What I tried

What finally worked

The display pipeline now validates cleaned visible text, logs `blank_eaci_reply`, and supplies a controlled recovery response when nothing usable remains.

Why it worked

Validation happens at the user-visible boundary, after every transformation that can remove text.

What I learned

Transport success and conversational success are different signals.

Where EACI uses this today

The guard protects Main chats for Caelum, Chad, Natalia, Atreus, Luna, Roxy, and Cael.

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.