mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2026-08-10 16:33:27 +00:00
Every inbound plane wrap that a session claimed — including a plain chat message — bumped ConcordSessionManager.revision, and the always-on preload, the channel subscription, and the open-channel history subscription each call invalidateFilters() on every bump. So every message re-derived and re-REQ'd every community's control + channel planes. On a cold load of hundreds of buffered messages that is hundreds of re-subscriptions, which the relays answer with "there is a bug in the client, no one should be making so many requests" and close the plane subs mid-load (each needing a fresh NIP-42 AUTH). The result: channels load only their last few messages, or none. ingest() now reports a ConcordIngestOutcome (NOT_MINE / NON_STRUCTURAL / STRUCTURAL). Only a STRUCTURAL wrap — a Control-Plane fold, a guestbook membership change, or a buffered base-rekey — bumps the revision. Chat messages are NON_STRUCTURAL: they still reach the feed via the rumor sink → LocalCache, but no longer churn the subscriptions. The manager keeps its Boolean contract (claimed) for DecryptAndIndexProcessor. Verified on-device: the "so many requests" rate-limit is gone and the plane subscription stays open and drains steadily instead of being closed and reopened per message. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>