32b0f41be9
The bug (re-added user rejoins without a usable own_leaf, so they can neither decrypt new group messages nor send) reproduces entirely with two in-process MlsGroup instances — no relay or second Nostr client needed. A pure Quartz unit test runs in seconds and catches the regression deterministically, where the bash interop version depended on whitenoise-rs, wnd daemons and a local relay. - quartz: add MlsGroupLifecycleTest.testReaddAfterRemove_RejoinerCanEncryptAndDecrypt covering create → add → round-trip → remove → re-add with a fresh KeyPackage → round-trip again, asserting leafIndex and both encrypt/decrypt directions on the rejoined instance. - interop: drop test_17_readd_after_remove from the headless suite and its registration, since the unit test supersedes it. https://claude.ai/code/session_01JaeqZwVNLKvUUvXWRzPmRP