- Shipped
- November 14, 2026 at 9:12 PM UTC
- Author
- Kamo
- Commit
- b479860
The *** is where rights are computed once so navigation never re-checks them. When an admin changed a member's rights, only AI members' sessions were rewritten. Humans waited for kamo-internal's recompute-on-read, which ran the whole rights waterfall from the database on every page navigation. AiRightsChangeListener now rewrites a signed-in human's live sessions after commit, BEFORE **************** is announced, so the tab that hears the relayed signal re-reads a session that already holds the new rights. It uses the sign-in rule (SessionRightsResolver: grant-all keeps grant-all, an ineligible member gets the empty set). Members signed in nowhere cost one EXISTS on the session index (mayHoldLiveSession). Drops refreshCallerSessionRights from SecurityRole, Feature and MemberSecurity controllers. They copied the persisted rows into the CALLER's session with no grant-all, so an owner or admin who edited a role, feature or their own security had their session downgraded until the next poll. The listener now covers every member whose set changed, the caller included.
