"""Rotation schemas (Component F06). Phase 1 shim — hot-path `RotationResult` lives in `gps_denied.hot_types.rotation_result`. `HeadingHistory` (mutable bookkeeping) and `RotationConfig` (config) stay here as Pydantic. """ from datetime import datetime from typing import Optional from pydantic import BaseModel from gps_denied.hot_types.rotation_result import RotationResult # noqa: F401 class HeadingHistory(BaseModel): """Flight heading tracking history.""" flight_id: str current_heading: Optional[float] = None heading_history: list[float] = [] last_update: Optional[datetime] = None sharp_turns: int = 0 class RotationConfig(BaseModel): """Configuration for rotation sweeps.""" step_angle: float = 30.0 sharp_turn_threshold: float = 45.0 confidence_threshold: float = 0.7 history_size: int = 10 __all__ = [ "HeadingHistory", "RotationConfig", "RotationResult", ]