Files
amethyst/quartz/src/commonTest
Vitor PamplonaandClaude Opus 5.5 b106394b67 fix(concord): keep a private channel's retired keys, so its history survives a rotation
A rotation replaced the channel's current key in the List and dropped the
old one. `seed` only anchors keys held at join, so a channel created or
privatised later had nowhere else to keep them: after the next restart the
rotator (and every member that adopted the rotation) lost all history from
before it. Seen on RK Test: #p came back empty after a Rotate key.

A rotation now appends the key it replaces to the channel's `priors`
(`{key, epoch, retired_at}`, the reference client's shape, which we already
read), plus any intermediate keys an adoption walk stepped over — the walk
computed them with their publish times and then threw them away.

This leaves CORD-02 §8's preference to keep intermediate keys out of the
List: re-walking from `seed` cannot reach a channel that isn't in `seed`.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 08:25:58 -04:00
..