Files
amethyst/cli/src
Claude 1350533850 feat(concord): fragmented Community List, bound dissolution, lossless entity edits
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
2026-09-29 13:33:52 +00:00
..