mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2026-08-10 00:16:59 +00:00
A CORD-06 Refounding carries no recipient list, so a member left out of the rekey set sits on a dead root while everyone else moves on. Every plane address they still derive is dead, and a dead address returns nothing rather than erroring — so the community rendered as an ordinary quiet one, with no affordance anywhere that could hint otherwise. Recovery ran on a 15-minute timer and logged. Two things were missing, not one. Detection. The rekey drain treated "no blob for me" as nothing to do. But the rotation's wraps sit at an address every current member derives, so an excluded member can watch the rotation happen and find no blob addressed to them — that is a direct signal, not an inference from silence. It is now recorded, gated on ConcordRefounding.isCompleteRotation: the recipient blobs are chunked, so on a partial fetch the absence of ours proves nothing, and exclusion may only be concluded once chunk indices 0..total-1 are all in hand. Reporting. ConcordCommunityHealth per community, rendered by ConcordCommunityBanner above the feed on both the channel list and an open channel — because these states explain what you are seeing, and the composer slot at the bottom is the wrong place to explain an empty feed. Dissolution moves here too; the composer notice could only ever show it to someone already inside a channel. The health value is a single value rather than a set of flags, so two banners cannot stack — that is the difference between a status surface and chrome. The recovery sweep's collapsed `continue`s now distinguish revoked / expired / unreadable / no-anchor, so the copy can ask for a new invite when that is genuinely the fix. A dead link is only reported once it is actually what stands between us and getting back in; on a community we are current with it costs nothing and would be alarming noise. While a way back exists the banner shows progress, since recovery is automatic. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Q3KXHjmCpUDzrSRyxatbyB