"""Shared fast-loop evaluation labels and explicit score projections.""" from __future__ import annotations from typing import Literal Appropriateness = Literal["pos", "warn", "neutral"] APPROPRIATENESS_VALUES: tuple[Appropriateness, ...] = ("pos", "warn", "neutral") # Persistence uses the rubric's 1..5 scale. Keep this projection distinct from # the learner-growth 0..1 normalization below. PERSISTED_APPROPRIATENESS_SCORE_5PT: dict[Appropriateness, float] = { "warn": 1.0, "neutral": 3.0, "pos": 5.0, } # ``neg`` is retained only for legacy stored evaluations; current evaluator # output is restricted to APPROPRIATENESS_VALUES. GROWTH_APPROPRIATENESS_SCORE_01: dict[str, float] = { "neg": 0.0, "warn": 0.25, "neutral": 0.5, "pos": 1.0, }