b671fb629a
The embedding client does not go through the chat onion -- embed() runs its own chain down to _emit(), which builds a ChatRequest on the spot and so far only fills session_id and parent_call_id. Changing chat() alone would have left every embed row with empty dimensions, which is exactly what the issue's second request asks for. The bigger find: the draft claimed serialization could not fail because the entry check already restricts values to scalars. It can. A float passes a naive type check and json.dumps writes it as the literal NaN, which is not valid JSON and which JSONB rejects; the failure then lands in the emitter's degrade path and turns a caller's input error into silently dropped telemetry. Now rejected at the entry with isfinite and again at serialization with allow_nan=False. Also states the validation runs at both public entries, not just chat(), and adds the RLS template the design had promised but never wrote down.