Concerns: pushword/conversation, pushword/flat, pushword/quiz
Message and QuizResult now carry a uuid column — the merge identity that lets a local and a production database sync through flat CSV files without sharing auto-increment ids. Run bin/console doctrine:schema:update --force; existing rows are backfilled on their first export.
Behavior changes in pw:flat:sync:
deletedAt tombstone instead of removing the row, so the deletion propagates through the CSV instead of resurrecting on the next merge. Tombstoned messages are hidden from admin, front and API responses.content/<host>/quiz-result.csv (--entity=quiz-result): import creates unknown uuids only, rows are immutable. The admin delete action on results is disabled — a deleted row would come back on the next import.If your deploy rsyncs the SQLite file to production, do one deploy after upgrading before you stop shipping it: that first deploy propagates the backfilled uuids, keeping both databases on the same identities.