Files
amethyst/commons
Alex Gleason d7226b7021 concord: implement CORD-02 §2 staff-held control_root write gate
Track the spec change in concord2 96f0647 (CORD-01 Write-Restricted
Streams) and its review follow-up bbc67b6: the Control Plane's stream
key splits, the signer keypair deriving from a new control_root held
only by the owner and staff (concord/control-signer), while every member
holds the delivered control_pk to subscribe and verify, reading under
the community_root-derived read key the old concord/control derivation
still yields.

- ControlPlaneKeys models the three views of an epoch: staff (signer
  held), member (address held, read-only), legacy (pre-split, one key).
  ConcordStreamEnvelope gains write-restricted wrap/open forms; wrapping
  without the write key fails loudly instead of missigning.
- Genesis mints the control_root beside the community_root; invites,
  the kind-13302 join material, and held roots carry control_pk (and,
  staff-side, control_root) since a split address is held, never
  derivable. A same-epoch list merge fills either side's missing key
  material, so a holder's own second device converges (CORD-02 §8);
  across epochs it is never inherited, being stale by construction.
- Promotion delivers the secret inside the staff-making Grant itself:
  GrantEntity.control_wrap, a 40-byte epoch_be8‖control_root pairwise
  ciphertext (ControlRootWrap), adopted only when it derives to the
  held control_pk — fails closed. PIN_MESSAGES claims frozen bit 11 and
  the staff set is the six Control-writing bits, a normative list.
- Refoundings roll the pair: base rekey blobs are now width-per-form
  (72 channel/legacy, 104 member +control_pk, 136 staff +control_root),
  a mismatched staff pair is refused, and a legacy 72-byte base blob is
  honored when reading old rotations, never minted anew — so a legacy
  community upgrades as a side effect of its next base rotation.
- Sessions, the plane registry, the subscription planner, amy, and the
  app read the plane by held address per epoch; moderation verbs take
  ControlPlaneKeys, and both amy and the app refuse a Control write
  without the secret rather than throwing out of the envelope. Rank and
  possession diverge for as long as a promotee waits on delivery, so the
  app gates its mod affordances on the write key too. Stored control
  material only ever backstops its own epoch. The account drains
  staff-making Grants on the revision tick.

Possession stays a spam gate, never authority: every edition is still
judged by its sealed actor's rank in the owner-rooted Roster.
2026-08-06 19:42:57 -05:00
..