The single source of truth for how embedding text becomes a vector:
provider + model + endpoint + key. Resolved once (from env for direct
engine/CLI callers, or from an applied cluster providers.embedding profile
at server boot) and shared by the query path and the offline CLI so stored
and query vectors stay same-space by construction.
Which embedding API a client speaks. Each variant owns its request shape,
auth, and response parsing; everything else (retry, deadline, normalization,
tracing) is provider-independent.