Problem
@embed describes the source relationship, but loading a row without its vector does not populate it automatically. On 0.10.0 a nullable annotated vector remained null; a required vector caused load rejection. The offline omnigraph embed transform is available, but ingestion through the served graph has no managed population/coverage lifecycle.
Applications need to distinguish a content write that has committed from derived embeddings that are still pending, stale or failed.
Proposed change
Add managed embedding reconciliation for committed source content with observable state and coverage. Provider calls need not block the content-write transaction. Define the contract for nullable versus required derived vectors, source changes, model changes, failure/retry and how queries behave while coverage is incomplete.
Bind generated vectors to the exact source revision and model contract. A delayed job must not overwrite a newer source or attach a stale vector to the current row. Define branch/merge behavior and apply derived writes through normal graph authority.
Acceptance criteria
- Load/mutate of eligible content reliably schedules or exposes pending derivation; no silent assumption that
@embed means the vector is ready.
- Status reports pending/ready/stale/failed counts and actionable failures without exposing provider secrets.
- Duplicate work and provider retries converge; concurrent content edits, deletion, branch changes and restart cannot publish stale vectors as ready.
- Search communicates its coverage contract, including missing embeddings.
Current code: embedding contract, offline embedding command. Query-time text embedding already exists; this request is about stored vector population.
Problem
@embeddescribes the source relationship, but loading a row without its vector does not populate it automatically. On 0.10.0 a nullable annotated vector remained null; a required vector caused load rejection. The offlineomnigraph embedtransform is available, but ingestion through the served graph has no managed population/coverage lifecycle.Applications need to distinguish a content write that has committed from derived embeddings that are still pending, stale or failed.
Proposed change
Add managed embedding reconciliation for committed source content with observable state and coverage. Provider calls need not block the content-write transaction. Define the contract for nullable versus required derived vectors, source changes, model changes, failure/retry and how queries behave while coverage is incomplete.
Bind generated vectors to the exact source revision and model contract. A delayed job must not overwrite a newer source or attach a stale vector to the current row. Define branch/merge behavior and apply derived writes through normal graph authority.
Acceptance criteria
@embedmeans the vector is ready.Current code: embedding contract, offline embedding command. Query-time text embedding already exists; this request is about stored vector population.