ensure
Ensure the index, and say whether there is one now.
False means there is still no embedding model — the ordinary answer on a host that has not been given a key yet, and not an error. A host may call this hopefully.
CREATES, AND NEVER RESHAPES. IndexManager.ensure is deliberately non-destructive: against an index of a different shape it reports org.drivine.schema.EnsureResult.Drift and changes nothing. That is the right default — recreating an index silently would strand every vector already in it — and it is why this cannot follow a model CHANGE.
It does not need to. reembedAll reconciles the index around its own rewrite, so the only job left here is the one it was written for: making the index the FIRST time a key arrives, when there is nothing stored to re-embed.