feat(config): add explicit default-dark serving gate fields
Adds explicit default-false RuntimeConfig ask_serving_enabled and verified_serving_enabled fields while preserving default-dark helper behavior. Includes focused ASK/VERIFIED gate tests and cross-gate independence coverage. No pass_manager wiring, runtime wiring, verify.py wiring, served behavior, or CLAIMS/metric movement.
This commit is contained in:
parent
45835987b9
commit
3cfaaf9153
4 changed files with 48 additions and 0 deletions
|
|
@ -335,6 +335,15 @@ class RuntimeConfig:
|
|||
# default); the engine never raises its own ceiling.
|
||||
estimation_enabled: bool = False
|
||||
|
||||
# ASK serving gate enable flag. When True, ASK serving is allowed.
|
||||
# Default False (dark).
|
||||
ask_serving_enabled: bool = False
|
||||
|
||||
# VERIFIED serving gate enable flag. When True, VERIFIED serving is allowed.
|
||||
# Default False (dark).
|
||||
verified_serving_enabled: bool = False
|
||||
|
||||
|
||||
|
||||
DEFAULT_IDENTITY_PACK: str = "default_general_v1"
|
||||
DEFAULT_ETHICS_PACK: str = "default_general_ethics_v1"
|
||||
|
|
|
|||
|
|
@ -26,10 +26,14 @@ class _OptInConfig:
|
|||
|
||||
|
||||
def test_default_runtime_config_keeps_ask_serving_dark() -> None:
|
||||
assert hasattr(RuntimeConfig(), "ask_serving_enabled")
|
||||
assert RuntimeConfig().ask_serving_enabled is False
|
||||
assert DEFAULT_CONFIG.ask_serving_enabled is False
|
||||
assert ask_serving_enabled(DEFAULT_CONFIG) is False
|
||||
assert ask_serving_enabled(RuntimeConfig()) is False
|
||||
|
||||
|
||||
|
||||
def test_missing_flag_is_dark_for_legacy_config_shape() -> None:
|
||||
assert ask_serving_enabled(_LegacyConfig()) is False
|
||||
|
||||
|
|
|
|||
31
tests/test_cross_serving_gates.py
Normal file
31
tests/test_cross_serving_gates.py
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
"""Cross-gate configuration field tests.
|
||||
|
||||
Verifies that RuntimeConfig has both ask_serving_enabled and
|
||||
verified_serving_enabled, that both are default false, and that setting
|
||||
one does not implicitly enable the other.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import dataclasses
|
||||
|
||||
from core.config import RuntimeConfig
|
||||
|
||||
|
||||
def test_cross_serving_gates_independence() -> None:
|
||||
# 1. Verify both are present on a fresh config and default to False
|
||||
config = RuntimeConfig()
|
||||
assert hasattr(config, "ask_serving_enabled")
|
||||
assert hasattr(config, "verified_serving_enabled")
|
||||
assert config.ask_serving_enabled is False
|
||||
assert config.verified_serving_enabled is False
|
||||
|
||||
# 2. Verify setting ask_serving_enabled to True does not enable verified_serving_enabled
|
||||
config_ask = dataclasses.replace(config, ask_serving_enabled=True)
|
||||
assert config_ask.ask_serving_enabled is True
|
||||
assert config_ask.verified_serving_enabled is False
|
||||
|
||||
# 3. Verify setting verified_serving_enabled to True does not enable ask_serving_enabled
|
||||
config_verified = dataclasses.replace(config, verified_serving_enabled=True)
|
||||
assert config_verified.ask_serving_enabled is False
|
||||
assert config_verified.verified_serving_enabled is True
|
||||
|
|
@ -30,10 +30,14 @@ class _OptInConfig:
|
|||
|
||||
|
||||
def test_default_runtime_config_keeps_verified_serving_dark() -> None:
|
||||
assert hasattr(RuntimeConfig(), "verified_serving_enabled")
|
||||
assert RuntimeConfig().verified_serving_enabled is False
|
||||
assert DEFAULT_CONFIG.verified_serving_enabled is False
|
||||
assert verified_serving_enabled(DEFAULT_CONFIG) is False
|
||||
assert verified_serving_enabled(RuntimeConfig()) is False
|
||||
|
||||
|
||||
|
||||
def test_missing_flag_is_dark_for_legacy_config_shape() -> None:
|
||||
assert verified_serving_enabled(_LegacyConfig()) is False
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue