Replace the per-account JSON snapshot with SwiftData @Model records (ConversationRecord, MessageRecord, ArchiveMetadataRecord). The in-memory value types stay unchanged; ChatArchive now persists through a shared ModelContainer filtered by accountJID. Legacy JSON is migrated once on first load and then removed.