- Shipped
- November 15, 2026 at 5:05 PM UTC
- Author
- Kamo
- Commit
- 8972c9d
RoleAudit implements shared-lib's RoleChangeListener: one SECURITY_SETTING_CHANGE row per role created, renamed, deleted or whose rights were granted / revoked / denied, after the commit, member_id = who made it. The description names the member, the role (title + id), the door and the rights by label; the details carry the whole change as JSON. HIGH for a deletion or a change granting 25+ rights at once (the shape of the Phase I escalation), MEDIUM otherwise. Best effort, never fails a write. Every door: the roles API and role templates (OrgRoleService), an organization model's re-seed **************** the background fan-out names the member who saved the model), a new org's default roles, and the boot-time rights sync (RoleRightsSyncService compares every role's rights before and after syncAll, so override seeds, missing rows, the tour grant and orphan removal are all covered; placeholder NOT_SPECIFIED rows are not changes; the row names the pod). Tests: RoleAuditTest 5; RoleRightsSync* (12 suites), SecurityModelRecalc DispatcherTest, SecurityRoleControllerAuthTest 18 green.
