@@ -72,15 +72,20 @@ def run_once(self) -> None:
7272 scores = scoring .compute_scores (recent , period_end )
7373 self .storage .upsert_scores (scores )
7474 logger .info ("Computed scores" , extra = {"count" : len (scores )})
75- elif enable_discord_role_updates :
75+ else :
7676 scores = list (self .storage .get_scores ())
7777 logger .info (
78- "Scoring disabled; using persisted scores for role plans " ,
78+ "Scoring disabled; using persisted scores" ,
7979 extra = {"count" : len (scores )},
8080 )
81- else :
82- scores = []
83- logger .info ("Scoring disabled by config (enable_scoring: false)" )
81+
82+ suppress_score_based_roles = (not enable_scoring ) and (len (scores ) == 0 )
83+ effective_role_mappings = [] if suppress_score_based_roles else self .config .role_mappings
84+ if suppress_score_based_roles :
85+ logger .info (
86+ "Scoring disabled with empty persisted scores; suppressing score-based role mapping "
87+ "changes while keeping merge/repo role logic active."
88+ )
8489
8590 member_roles = self .discord_reader .list_member_roles ()
8691 role_to_github = build_role_to_github_map (identity_mappings , member_roles )
@@ -145,7 +150,7 @@ def run_once(self) -> None:
145150 member_roles ,
146151 scores ,
147152 identity_mappings ,
148- self . config . role_mappings ,
153+ effective_role_mappings ,
149154 storage = self .storage ,
150155 period_start = period_start ,
151156 period_end = period_end ,
@@ -224,26 +229,19 @@ def run_once(self) -> None:
224229 merge_role_rules = getattr (self .config , "merge_role_rules" , None )
225230 repo_contributor_roles = getattr (self .config , "repo_contributor_roles" , None )
226231 if enable_discord_role_updates :
227- if not enable_scoring and len (scores ) == 0 :
228- logger .info (
229- "Skipping Discord role updates: scoring is disabled and persisted scores are empty; "
230- "not applying score-based role changes to avoid stripping roles. "
231- "Run with enable_scoring enabled once to populate scores, or keep role updates off."
232- )
233- else :
234- apply_discord_roles (
235- self .discord_writer ,
236- member_roles ,
237- scores ,
238- identity_mappings ,
239- self .config .role_mappings ,
240- policy ,
241- storage = self .storage ,
242- period_start = period_start ,
243- period_end = period_end ,
244- merge_role_rules = merge_role_rules ,
245- repo_contributor_roles = repo_contributor_roles ,
246- )
232+ apply_discord_roles (
233+ self .discord_writer ,
234+ member_roles ,
235+ scores ,
236+ identity_mappings ,
237+ effective_role_mappings ,
238+ policy ,
239+ storage = self .storage ,
240+ period_start = period_start ,
241+ period_end = period_end ,
242+ merge_role_rules = merge_role_rules ,
243+ repo_contributor_roles = repo_contributor_roles ,
244+ )
247245 else :
248246 logger .info ("Discord role updates disabled by config (enable_discord_role_updates: false)" )
249247
0 commit comments