- Delete a group chat from GroupInfoView or via a swipe in the chat list: remove the conversation and its messages from SwiftData, clean per-chat state, and leave the room on the server first when joined. - Keep "Покинуть комнату" as leave-without-deleting and suppress deleted rooms for the session so roomState events cannot recreate them; an explicit rejoin or a fresh invitation clears the suppression. - Add verify.sh invariants and document the behaviour in ARCHITECTURE.md.