File size: 1,158 Bytes
5e0b58b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
"""Orthogonal runtime state and observability modes."""

from __future__ import annotations

from enum import StrEnum
from typing import Final


class StateMode(StrEnum):
    """Persistence and lifecycle boundary for a running Brain-5D state."""

    OPERATOR = "operator"
    EXPERIMENT = "experiment"
    DEV = "dev"


class ObservabilityProfile(StrEnum):
    """Independent amount of telemetry and rendering work."""

    FULL = "full"
    SCIENTIFIC = "scientific"
    MINIMAL = "minimal"
    COMPUTE = "compute"


STATE_MODES: Final[tuple[str, ...]] = tuple(item.value for item in StateMode)
OBSERVABILITY_PROFILES: Final[tuple[str, ...]] = tuple(
    item.value for item in ObservabilityProfile
)


def validate_modes(state_mode: str, observability: str) -> None:
    """Reject invalid mode values at configuration boundaries."""
    if state_mode not in STATE_MODES:
        raise ValueError(f"state_mode must be one of {STATE_MODES}, got {state_mode!r}")
    if observability not in OBSERVABILITY_PROFILES:
        raise ValueError(
            "observability must be one of "
            f"{OBSERVABILITY_PROFILES}, got {observability!r}"
        )