mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2026-08-11 00:37:41 +00:00
Ban is only a soft removal — the member still holds the room key and can decrypt everything; clients just decline to show their posts. This wires CORD-06 Refounding: the hard removal that rotates the community_root so a removed member's key stops working for anything sent afterwards. Quartz: - ConcordKeyDerivation: baseRekeyAddress / channelRekeyAddress (the rekey stream addresses) and epochKeyCommitment (prevcommit, CORD-02 A.5). - ConcordRekey: signer-based blobForSigner / findNewKeyWithSigner so a bunker account opens its blob with a single nip44Decrypt. - ConcordRefounding: compactControlPlane (re-wrap each head edition's original plaintext seal under the new root, preserving signatures), buildBaseRekeyWraps, build, findNewRoot. OpenedStreamEvent now carries the inner seal for compaction. ConcordRefoundingTest. Commons: - ConcordActions: guestbookPlane / nextBaseRekeyPlane, buildGuestbookJoin / guestbookMembers, buildRefounding, openBaseRekey. - ConcordCommunitySession folds the Guestbook plane into members (the recipient set), buffers inbound base-rekey wraps, exposes controlPlaneWraps, and AUTHs to + subscribes the Guestbook and next-epoch base-rekey planes. - ConcordSessionRegistry.sync rebuilds a session when its entry's root/epoch changed; ConcordSubscriptionPlanner.auxiliaryPlaneSubs REQs the new planes. Amethyst: - Account announces a Guestbook JOIN on create/join; refoundConcordCommunity (owner / BAN-holder) bans + rolls + publishes + persists; drainConcordRekeys adopts an inbound rotation from an authorized rotator; adoptConcordRoot persists the new root (prior kept as a HeldRoot) and re-seeds the new epoch's Guestbook, guarded against double-adopt. - AccountViewModel.removeConcordMember; ConcordMembersScreen "Remove from community" action + confirmation dialog. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CzJ2Cwo8tg4oZq43oRa3ig