mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2026-10-06 11:48:24 +00:00
Brings the Concord implementation up to spec main b84554e for the three changes that landed since we last tracked it, and adds the conformance review that drives the rest. CORD-02 §8 — the Community List moves from the retired kind 13302 to fragmented addressable kind 33302 (d = fragment index): - ConcordListFragments: the wire codec. Unpadded base64url for every 32-byte value the section names, snapshots without community_id, seed omitted when equal to current (after rewriting its cosmetic fields), tombstoned entries dropped, unknown fields verbatim and sorted. Packing and bytes match the reference client exactly: the tests pin fragments produced by Armada's own listFrag.ts serializer. - ConcordListFragmentSet: newest copy per index, declared count (ties to the larger), completeness, union; writes repack only with the complete List and otherwise rewrite just the fragment holding the change, always with created_at above the previous copy and under the byte ceiling. - Leaving now writes a tombstone instead of just dropping the entry. - The retired 13302 event is still read and unioned in, so the next write (or the import, once relays confirm no fragment exists) migrates it. - Offline backup, cache storage, account-list REQ and amy concord import follow the new kind. CORD-02 §9 — dissolution: - ConcordDissolution derives dissolved_pk, builds the owner-signed tombstone with eid = community_id, and verifies it (owner author, plaintext seal, eid bound; the old all-zero eid is refused). - Sessions subscribe/AUTH the dissolved plane and seal the community on a valid tombstone; the Control Plane fold no longer reads vsk 10, which skipped the binding check. Owners can dissolve from the app's actions and with `amy concord dissolve --yes`. CORD-02 §6 / CORD-08 — Control entity edits keep what they don't model (ConcordJson.encodePreserving over the authorized head), so renaming a community no longer wipes custom fields or turns off another client's disappearing-messages timer. MetadataEntity parses message_expiration. The per-channel voice flag is gone (every Channel is callable). Review: quartz/plans/2026-09-29-concord-spec-conformance.md Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PmuzkD5qdqgv6dMeRMoC5N