mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2026-08-11 00:37:41 +00:00
Cold boot bumped the session revision ~292 times for 3 communities, driving 22 Messages rebuilds and re-deriving every plane subscription each time. Three compounding causes, all measured on device: 1. Every refold republished state even when the fold was identical. ConcordCommunityState and its components were plain classes, so StateFlow conflation never applied and a prior-epoch wrap that didn't move the anti-rollback floor still counted as a change. Make the fold result compare by value (AuthorityResolver holds only immutable value fields; a data class with a private constructor is fine). 2. A control wrap bumped twice — once from ingest() returning STRUCTURAL and once from the per-session state watcher reacting to the same refold. Add ConcordIngestOutcome.STRUCTURAL_FOLD for the two control-plane branches so the manager leaves those to the watcher, which (given 1) now fires only on genuine change. Guestbook and base-rekey keep STRUCTURAL: they mutate members/the rekey buffer, not state, so no watcher covers them. 3. refold() and controlFloorsLocked() re-opened the WHOLE wrap buffer on every control wrap, and opening a wrap is a NIP-44 decrypt + parse — making a backfill quadratic in decryptions (~8.6k opens to ingest 93 wraps for one community). Memoize editions by wrap id: one open per wrap, ingest() stays synchronous and results are unchanged. Measured over one cold boot: revision bumps 292 -> 87, Messages rebuilds 22 -> 7, and time from first fold to all 17 channels 43s -> 7.5s. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>