{ "id": "permission-cache", "name": "Permission Cache Invalidation Bug", "description": "Fix permission cache not invalidating when roles change", "task": "Fix: permission cache doesn't invalidate when user roles change. Users see stale permissions for hours after their roles are updated.", "naive_fix": { "description": "Add .clear() call somewhere", "changes": [ { "file": "src/services/team.service.ts", "function": "somewhere", "change": "Call memoizedPermissions.clear()" } ], "issues": [ "Doesn't identify WHEN cache should clear", "Missing BusTeamRoleChange subscription", "Missing BusTeamMemberRoleChange subscription", "Doesn't fix roles.controller.ts missing broker events" ] }, "correct_fix": { "description": "Subscribe to all role-related broker events", "required_changes": [ { "file": "src/services/team.service.ts", "function": "constructor", "change": "Subscribe to BusTeamRoleChange, clear cache on event", "line_reference": "line 30" }, { "file": "src/services/team.service.ts", "function": "constructor", "change": "Subscribe to BusTeamMemberRoleChange, clear cache on event", "line_reference": "line 30" }, { "file": "src/controllers/roles.controller.ts", "function": "createRole", "change": "Emit BusTeamRoleChange event after creating role", "line_reference": "line 22" }, { "file": "src/controllers/roles.controller.ts", "function": "deleteRole", "change": "Emit BusTeamRoleChange event before deleting role", "line_reference": "line 62" } ], "required_broker_subscriptions": [ { "service": "team.service.ts", "event": "BusTeamRoleChange", "action": "Clear permission cache" }, { "service": "team.service.ts", "event": "BusTeamMemberRoleChange", "action": "Clear permission cache" } ], "pattern_references": [ "roles.controller.ts:updateRole - shows correct broker event emission" ] }, "validation_criteria": { "must_mention": [ "BusTeamRoleChange", "BusTeamMemberRoleChange", "createRole", "deleteRole", "team.service" ], "must_identify_root_cause": "Cache only clears on team switch, not role changes", "should_reference_pattern": "roles.controller.ts:updateRole" } }