# ADR 0019 — Shadow embedding migrations never mutate production aliases Status: accepted Embedding changes always build a distinct collection with explicit `embedding_space_id`. Progress is checkpointed after complete Qdrant batches and validated from canonical chunk fingerprints. M6 exposes cancel/resume/evaluate but no cutover. This prevents dimension equality, partial writes or evaluation success from silently becoming production state.