Upgrade to 1.0.0-rc802

Concerns: pushword/conversation, pushword/flat, pushword/quiz

Flat sync survives split databases (conversation, 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:

  • Conversation import matches rows by uuid (id only for not-yet-backfilled rows), and after an import the merged union is re-exported so database-only messages flow back into the CSV. A sync never deletes.
  • Deleting a message (admin or API) now sets a 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.
  • Quiz results round-trip through 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.