"""The intentionally small, evidence-backed initial RCI signal catalog."""

from mountain_twin.rci.contracts import (
    HysteresisPolicy,
    QualificationMode,
    QualificationPolicy,
    SignalDefinition,
    SignalDefinitionRegistry,
    ThresholdOrigin,
    ThresholdProvenance,
)

CATALOG_VERSION = "rci_catalog_v0_1"
POLICY_VERSION = "rci_policy_v0_1"


def initial_signal_registry() -> SignalDefinitionRegistry:
    """Return active definitions whose rules are already upstream deterministic states.

    Weather, precipitation, wind, gust and thermal signals remain absent: the
    repository currently has values but no accepted RCI rule/threshold for
    their activation. The two solar definitions compare an existing terrain
    visibility enum; they introduce no numerical scientific threshold.
    """
    state_policy = ThresholdProvenance(
        ThresholdOrigin.MT_RND_POLICY,
        reference_id="RCI_SOLAR_VISIBILITY_STATE_EQ_V0_1",
        version="v0_1",
        note="Exact equality to the upstream deterministic terrain-solar state; no numeric threshold.",
    )
    common = {
        "category": "SOLAR",
        "input_variables": ("terrain_solar_visibility",),
        "threshold_provenance": (state_policy,),
        "applicability_policy": {"astronomical_state": "DAY"},
        "hysteresis_policy": HysteresisPolicy.none("SOLAR_STATE_NO_HYSTERESIS"),
        "qualification_policy": QualificationPolicy(
            "SOLAR_STATE_EVENT_QUALIFICATION", QualificationMode.EVENT
        ),
        "definition_version": "v0_1",
    }
    return SignalDefinitionRegistry(
        CATALOG_VERSION,
        (
            SignalDefinition(
                signal_id="solar.terrain_direct",
                name="Direct terrain sunlight",
                description="Route samples whose deterministic terrain-solar state is DIRECT.",
                rule_specification={"terrain_solar_visibility_equals": "DIRECT"},
                explanation_key="rci.solar.terrain_direct",
                **common,
            ),
            SignalDefinition(
                signal_id="solar.terrain_shadow",
                name="Terrain shadow",
                description="Route samples whose deterministic terrain-solar state is SHADOW.",
                rule_specification={"terrain_solar_visibility_equals": "SHADOW"},
                explanation_key="rci.solar.terrain_shadow",
                **common,
            ),
        ),
    )
