Codex R15: duplicate Ring rows from the pre-index race can own different entities (one got battery, another motion); deleting the extras cascaded away already-ingested state. The migration now MERGES — reparents each duplicate's entities and their state onto the earliest row, keeping the survivor's copy on a (device_id,key) collision — then removes the emptied duplicates. Verified on Postgres: survivor keeps battery=90 and gains the reparented motion entity (disjoint data preserved); suite 43 green on SQLite. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| factories | ||
| migrations | ||
| seeders | ||
| .gitignore | ||