Skip to content

Commit 26f8d7d

Browse files
committed
fix: use persisted scores when scoring disabled and suppress score mappings when empty
1 parent a99cfc5 commit 26f8d7d

1 file changed

Lines changed: 24 additions & 26 deletions

File tree

src/ghdcbot/engine/orchestrator.py

Lines changed: 24 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)