diff --git a/services/torghut/scripts/run_governance_policy_dry_run.py b/services/torghut/scripts/run_governance_policy_dry_run.py index a6b0fb17c5..03ea365686 100644 --- a/services/torghut/scripts/run_governance_policy_dry_run.py +++ b/services/torghut/scripts/run_governance_policy_dry_run.py @@ -274,7 +274,12 @@ def _int_field_or_default( default: int, ) -> int: value = payload.get(key) - return default if value is None else int(value) + if value is None or (isinstance(value, str) and not value.strip()): + return default + try: + return int(value) + except (OverflowError, TypeError, ValueError): + return default def main() -> int: diff --git a/services/torghut/tests/test_governance_policy_dry_run.py b/services/torghut/tests/test_governance_policy_dry_run.py index d9b85403d7..5c50575ea2 100644 --- a/services/torghut/tests/test_governance_policy_dry_run.py +++ b/services/torghut/tests/test_governance_policy_dry_run.py @@ -336,10 +336,25 @@ def test_dry_run_preserves_zero_expert_router_route_count(self) -> None: reasons = output["promotion_prerequisites"]["reasons"] self.assertIn("expert_router_registry_route_count_below_minimum", reasons) + def test_dry_run_defaults_blank_expert_router_route_count(self) -> None: + output = self._run_harness(expert_router_route_count="") + + self.assertTrue(output["promotion_progression_allowed"]) + + def test_dry_run_defaults_invalid_expert_router_route_count(self) -> None: + output = self._run_harness(expert_router_route_count="not-an-integer") + + self.assertTrue(output["promotion_progression_allowed"]) + + def test_dry_run_defaults_infinite_expert_router_route_count(self) -> None: + output = self._run_harness(expert_router_route_count=float("inf")) + + self.assertTrue(output["promotion_progression_allowed"]) + def _run_harness( self, *extra_args: str, - expert_router_route_count: int | None = None, + expert_router_route_count: object | None = None, ) -> dict[str, object]: now = datetime.now(timezone.utc) repo_root = Path(__file__).resolve().parents[3]