vectie/moonmoon/src/mission does not have a README file

    CorridorScanWindow

    pub(all) struct CorridorScanWindow {
    scan_id : String
    window_id : String
    rank : Int
    row_offset : Int
    col_offset : Int
    source_row_start : Int
    source_col_start : Int
    min_elevation_m : Double
    max_elevation_m : Double
    elevation_range_m : Double
    max_neighbor_grade : Double
    roughness_m : Double
    decision : TraverseDecision
    selected_route_id : String
    note : String
    } derive(Eq, ToJson,
    Debug
    ,
    FromJson
    )

    EnergyAssessment

    pub(all) struct EnergyAssessment {
    budget : EnergyBudget
    route_count : Int
    blocked_route_count : Int
    estimated_drive_hours : Double
    estimated_dark_survival_hours : Double
    required_energy_wh : Double
    available_energy_wh : Double
    margin_wh : Double
    decision : TraverseDecision
    reasons : Array[String]
    next_action : String
    } derive(Eq, ToJson,
    Debug
    ,
    FromJson
    )

    EnergyBudget

    pub(all) struct EnergyBudget {
    budget_id : String
    label : String
    power_window_evidence_id : String
    power_window_source_path : String
    power_window_source_status : String
    time_start_utc : String
    time_end_utc : String
    battery_capacity_wh : Double
    reserve_wh : Double
    drive_power_w : Double
    thermal_survival_power_w : Double
    comms_power_w : Double
    min_energy_margin_wh : Double
    required_sunlit_hours : Double
    assumed_dark_survival_hours : Double
    verified_available_energy_wh : Double
    has_time_window_ephemeris : Bool
    } derive(Eq, ToJson,
    Debug
    ,
    FromJson
    )

    EnergyRemediationEvidence

    pub(all) struct EnergyRemediationEvidence {
    evidence_id : String
    site_id : String
    route_id : String
    power_window_evidence_id : String
    power_window_source_path : String
    terrain_evidence_path : String
    horizon_evidence_path : String
    output_path : String
    method_id : String
    generated_by : String
    source_budget_id : String
    route_count_before_bound : Int
    selected_route_count : Int
    blocked_route_count : Int
    all_route_required_energy_wh : Double
    bounded_required_energy_wh : Double
    verified_available_energy_wh : Double
    all_route_margin_wh : Double
    bounded_margin_wh : Double
    minimum_margin_wh : Double
    margin_gap_wh : Double
    route_count_demand_reduction_wh : Double
    selected_route_drive_hours : Double
    dark_survival_hours : Double
    reserve_wh : Double
    drive_energy_wh : Double
    comms_energy_wh : Double
    thermal_survival_energy_wh : Double
    max_dark_survival_hours_for_min_margin : Double
    dark_survival_reduction_needed_hours : Double
    confidence : Double
    decision : TraverseDecision
    reasons : Array[String]
    next_action : String
    } derive(Eq, ToJson,
    Debug
    ,
    FromJson
    )

    HorizonAzimuthSample

    pub(all) struct HorizonAzimuthSample {
    sector_id : String
    label : String
    azimuth_center_deg : Double
    obstruction_row : Int
    obstruction_col : Int
    obstruction_elevation_m : Double
    distance_m : Double
    horizon_angle_deg : Double
    } derive(Eq, ToJson,
    Debug
    ,
    FromJson
    )

    IlluminationAssessment

    pub(all) struct IlluminationAssessment {
    constraint : IlluminationConstraint
    evidence_dataset_id : String
    evidence_tile_id : String
    local_horizon : LocalHorizonEvidence
    relief_shadow_risk : Double
    confidence : Double
    decision : TraverseDecision
    reasons : Array[String]
    next_action : String
    } derive(Eq, ToJson,
    Debug
    ,
    FromJson
    )

    IlluminationConstraint

    pub(all) struct IlluminationConstraint {
    constraint_id : String
    label : String
    power_window_evidence_id : String
    power_window_source_path : String
    power_window_source_status : String
    time_start_utc : String
    time_end_utc : String
    min_sun_altitude_deg : Double
    max_sun_altitude_deg : Double
    min_sunlit_hours : Double
    max_dark_hours : Double
    max_relief_shadow_risk : Double
    caution_relief_shadow_risk : Double
    min_confidence : Double
    has_time_window_ephemeris : Bool
    } derive(Eq, ToJson,
    Debug
    ,
    FromJson
    )

    LocalHorizonEvidence

    pub(all) struct LocalHorizonEvidence {
    evidence_id : String
    route_id : String
    site_id : String
    source_dataset_id : String
    source_tile_id : String
    source_path : String
    power_window_evidence_id : String
    power_window_source_path : String
    output_path : String
    method_id : String
    generated_by : String
    rows : Int
    cols : Int
    cell_size_m : Double
    center_elevation_m : Double
    max_obstruction_elevation_m : Double
    max_horizon_angle_deg : Double
    min_sun_altitude_deg : Double
    max_sun_altitude_deg : Double
    evaluated_sample_count : Int
    spherical_sunlit_hours : Double
    terrain_sunlit_hours : Double
    terrain_shadowed_hours : Double
    longest_dark_hours : Double
    terrain_available_energy_wh : Double
    minimum_solar_clearance_deg : Double
    maximum_solar_clearance_deg : Double
    azimuth_samples : Array[HorizonAzimuthSample]
    confidence : Double
    decision : TraverseDecision
    reasons : Array[String]
    next_action : String
    } derive(Eq, ToJson,
    Debug
    ,
    FromJson
    )

    MissionClearanceItem

    pub(all) struct MissionClearanceItem {
    clearance_id : String
    kind : MissionClearanceKind
    label : String
    decision : TraverseDecision
    status : MissionClearanceStatus
    source_check_id : String
    evidence_path : String
    observed : String
    required : String
    clearance_action : String
    accepted_evidence_id : String
    } derive(Eq, ToJson,
    Debug
    ,
    FromJson
    )

    MissionClearanceKind

    pub(all) enum MissionClearanceKind {
    TerrainGradeClearance
    IlluminationConfidenceClearance
    EnergyMarginClearance
    OperatorReviewClearance
    } derive(Eq, ToJson,
    Debug
    ,
    FromJson
    )

    MissionClearancePlan

    pub(all) struct MissionClearancePlan {
    plan_id : String
    route_id : String
    decision : TraverseDecision
    items : Array[MissionClearanceItem]
    blocking_items : Array[String]
    review_items : Array[String]
    accepted_items : Array[String]
    rejected_items : Array[String]
    next_action : String
    } derive(Eq, ToJson,
    Debug
    ,
    FromJson
    )

    MissionClearanceReviewDecision

    pub(all) enum MissionClearanceReviewDecision {
    ClearanceAccept
    ClearanceReject
    ClearanceRequestEvidence
    } derive(Eq, ToJson,
    Debug
    ,
    FromJson
    )

    MissionClearanceStatus

    pub(all) enum MissionClearanceStatus {
    AcceptedEvidence
    RejectedEvidence
    NeedsEvidence
    ActionRequired
    } derive(Eq, ToJson,
    Debug
    ,
    FromJson
    )

    MissionClearanceTransition

    pub(all) struct MissionClearanceTransition {
    transition_id : String
    clearance_id : String
    decision : MissionClearanceReviewDecision
    reviewer_id : String
    recorded_at_utc : String
    evidence_ref : String
    rationale : String
    } derive(Eq, ToJson,
    Debug
    ,
    FromJson
    )

    MissionReadinessCheck

    pub(all) struct MissionReadinessCheck {
    check_id : String
    kind : MissionReadinessCheckKind
    label : String
    decision : TraverseDecision
    evidence_path : String
    reason : String
    } derive(Eq, ToJson,
    Debug
    ,
    FromJson
    )

    MissionReadinessCheckKind

    pub(all) enum MissionReadinessCheckKind {
    TerrainReadiness
    CorridorReadiness
    IlluminationReadiness
    EnergyReadiness
    OperatorReviewReadiness
    RobotSimulationReadiness
    } derive(Eq, ToJson,
    Debug
    ,
    FromJson
    )

    MissionSimulationReadiness

    pub(all) struct MissionSimulationReadiness {
    readiness_id : String
    route_id : String
    decision : TraverseDecision
    robot_simulation_status : String
    checks : Array[MissionReadinessCheck]
    blocking_checks : Array[String]
    review_checks : Array[String]
    next_action : String
    } derive(Eq, ToJson,
    Debug
    ,
    FromJson
    )

    MissionWindowSearchEvidence

    pub(all) struct MissionWindowSearchEvidence {
    evidence_id : String
    site_id : String
    selected_route_id : String
    selected_candidate_index : Int
    source_path : String
    orientation_source_path : String
    search_start_utc : String
    search_end_utc : String
    window_hours : Int
    stride_hours : Int
    windows_per_route : Int
    generated_by : String
    candidates : Array[RouteMissionWindowCandidate]
    } derive(Eq, ToJson,
    Debug
    ,
    FromJson
    )

    PowerWindowComputation

    pub(all) struct PowerWindowComputation {
    method_id : String
    generated_by : String
    time_step_minutes : Int
    horizon_model : String
    rover_power_model : String
    status : String
    } derive(Eq, ToJson,
    Debug
    ,
    FromJson
    )

    PowerWindowEvidence

    pub(all) struct PowerWindowEvidence {
    evidence_id : String
    source_status : String
    source_family_url : String
    local_source_path : String
    source_sha256 : String
    source_bytes : Int
    source_files : Array[PowerWindowSourceFile]
    computation : PowerWindowComputation
    observer_geometry :
    ObserverGeometryTimeline

    time_start_utc : String
    time_end_utc : String
    target_lat_deg : Double
    target_lon_deg : Double
    min_sun_altitude_deg : Double
    max_sun_altitude_deg : Double
    sunlit_hours : Double
    dark_hours : Double
    available_energy_wh : Double
    confidence : Double
    has_time_window_ephemeris : Bool
    reasons : Array[String]
    } derive(Eq, ToJson,
    Debug
    ,
    FromJson
    )

    PowerWindowSourceFile

    pub(all) struct PowerWindowSourceFile {
    file_id : String
    label : String
    source_url : String
    local_path : String
    sha256 : String
    bytes : Int
    role : String
    status : String
    } derive(Eq, ToJson,
    Debug
    ,
    FromJson
    )

    RouteCandidate

    pub(all) struct RouteCandidate {
    route_id : String
    label : String
    strategy : String
    evidence_dataset_id : String
    evidence_tile_id : String
    evidence_source_path : String
    evidence_summary : String
    terrain_remediation : TerrainRemediationEvidence
    expected_max_grade : Double
    expected_roughness_m : Double
    confidence : Double
    illumination : IlluminationAssessment
    decision : TraverseDecision
    score : Int
    reasons : Array[String]
    next_action : String
    } derive(Eq, ToJson,
    Debug
    ,
    FromJson
    )

    RouteMissionWindowCandidate

    pub(all) struct RouteMissionWindowCandidate {
    route_id : String
    route_label : String
    time_start_utc : String
    time_end_utc : String
    sample_offset : Int
    window_hours : Int
    spherical_sunlit_hours : Double
    terrain_sunlit_hours : Double
    terrain_shadowed_hours : Double
    longest_dark_hours : Double
    terrain_available_energy_wh : Double
    minimum_solar_clearance_deg : Double
    maximum_solar_clearance_deg : Double
    meets_illumination_constraint : Bool
    decision : TraverseDecision
    reasons : Array[String]
    } derive(Eq, ToJson,
    Debug
    ,
    FromJson
    )

    TerrainRemediationEvidence

    pub(all) struct TerrainRemediationEvidence {
    evidence_id : String
    route_id : String
    site_id : String
    source_dataset_id : String
    source_tile_id : String
    source_path : String
    output_path : String
    method_id : String
    generated_by : String
    rows : Int
    cols : Int
    cell_size_m : Double
    edge_count : Int
    blocking_edge_count : Int
    max_neighbor_delta_m : Double
    max_neighbor_grade : Double
    roughness_m : Double
    grade_limit : Double
    roughness_limit_m : Double
    grade_margin : Double
    roughness_margin_m : Double
    confidence : Double
    decision : TraverseDecision
    reasons : Array[String]
    next_action : String
    } derive(Eq, ToJson,
    Debug
    ,
    FromJson
    )

    TraverseDecision

    pub(all) enum TraverseDecision {
    Allow
    Review
    Block
    } derive(Eq, ToJson,
    Debug
    ,
    FromJson
    )

    TraverseProfile

    pub(all) struct TraverseProfile {
    profile_id : String
    label : String
    max_grade : Double
    caution_grade : Double
    max_roughness_m : Double
    caution_roughness_m : Double
    min_confidence : Double
    } derive(Eq, ToJson,
    Debug
    ,
    FromJson
    )

    TraverseScore

    pub(all) struct TraverseScore {
    profile : TraverseProfile
    decision : TraverseDecision
    score : Int
    reasons : Array[String]
    next_action : String
    } derive(Eq, ToJson,
    Debug
    ,
    FromJson
    )

    assess_energy_window

    fn assess_energy_window(routes : Array[RouteCandidate], budget : EnergyBudget) -> EnergyAssessment

    clearance_transition

    fn clearance_transition(transition_id : String, clearance_id : String, decision : MissionClearanceReviewDecision, reviewer_id : String, recorded_at_utc : String, evidence_ref : String, rationale : String) -> MissionClearanceTransition

    conservative_energy_budget

    fn conservative_energy_budget() -> EnergyBudget

    conservative_illumination_constraint

    fn conservative_illumination_constraint() -> IlluminationConstraint

    conservative_rover_profile

    fn conservative_rover_profile() -> TraverseProfile

    corridor_scan_window_status_label

    fn corridor_scan_window_status_label(window : CorridorScanWindow) -> String

    energy_decision_label

    fn energy_decision_label(assessment : EnergyAssessment) -> String

    energy_remediation_decision_label

    fn energy_remediation_decision_label(evidence : EnergyRemediationEvidence) -> String

    energy_remediation_for_selected_route

    fn energy_remediation_for_selected_route(energy : EnergyAssessment, route_id : String, terrain_evidence_path : String, horizon_evidence_path : String, output_path : String) -> EnergyRemediationEvidence

    first_trusted_square_best_corridor_window

    fn first_trusted_square_best_corridor_window() -> CorridorScanWindow

    first_trusted_square_corridor_scan

    fn first_trusted_square_corridor_scan() -> Array[CorridorScanWindow]

    first_trusted_square_energy_assessment

    fn first_trusted_square_energy_assessment() -> EnergyAssessment

    first_trusted_square_energy_remediation

    fn first_trusted_square_energy_remediation() -> EnergyRemediationEvidence

    first_trusted_square_energy_remediation_json

    fn first_trusted_square_energy_remediation_json() -> Json

    first_trusted_square_energy_remediation_markdown

    fn first_trusted_square_energy_remediation_markdown() -> String

    first_trusted_square_northeast_stepout_horizon_evidence

    fn first_trusted_square_northeast_stepout_horizon_evidence() -> LocalHorizonEvidence

    first_trusted_square_northeast_stepout_horizon_json

    fn first_trusted_square_northeast_stepout_horizon_json() -> Json

    first_trusted_square_northeast_stepout_horizon_markdown

    fn first_trusted_square_northeast_stepout_horizon_markdown() -> String

    first_trusted_square_northeast_stepout_terrain_remediation

    fn first_trusted_square_northeast_stepout_terrain_remediation() -> TerrainRemediationEvidence

    first_trusted_square_northeast_stepout_terrain_remediation_json

    fn first_trusted_square_northeast_stepout_terrain_remediation_json() -> Json

    first_trusted_square_northeast_stepout_terrain_remediation_markdown

    fn first_trusted_square_northeast_stepout_terrain_remediation_markdown() -> String

    first_trusted_square_power_window_evidence

    fn first_trusted_square_power_window_evidence() -> PowerWindowEvidence

    first_trusted_square_route_candidates

    fn first_trusted_square_route_candidates() -> Array[RouteCandidate]

    first_trusted_square_traverse_score

    fn first_trusted_square_traverse_score() -> TraverseScore

    first_trusted_square_window_search_evidence

    fn first_trusted_square_window_search_evidence() -> MissionWindowSearchEvidence

    illumination_decision_label

    fn illumination_decision_label(assessment : IlluminationAssessment) -> String

    mission_clearance_kind_label

    fn mission_clearance_kind_label(kind : MissionClearanceKind) -> String

    mission_clearance_review_decision_label

    fn mission_clearance_review_decision_label(decision : MissionClearanceReviewDecision) -> String

    mission_clearance_status_label

    fn mission_clearance_status_label(status : MissionClearanceStatus) -> String

    mission_readiness_check_kind_label

    fn mission_readiness_check_kind_label(kind : MissionReadinessCheckKind) -> String

    mission_simulation_readiness_label

    fn mission_simulation_readiness_label(readiness : MissionSimulationReadiness) -> String

    rank_route_mission_windows

    fn rank_route_mission_windows(site_id : String, selected_route_id : String, routes : Array[RouteCandidate], solar_track :
    SolarGeometryTrack
    , search_start_unix_s : Int64, window_hours : Int, stride_hours : Int, source_path : String, orientation_source_path : String, constraint : IlluminationConstraint) -> Result[MissionWindowSearchEvidence, String]

    readiness_check

    fn readiness_check(check_id : String, kind : MissionReadinessCheckKind, label : String, decision : TraverseDecision, evidence_path : String, reason : String) -> MissionReadinessCheck

    route_candidate_status_label

    fn route_candidate_status_label(candidate : RouteCandidate) -> String

    selected_route_clearance_plan

    fn selected_route_clearance_plan(plan_id : String, route : RouteCandidate, energy : EnergyAssessment, readiness : MissionSimulationReadiness) -> MissionClearancePlan

    selected_route_clearance_plan_with_transitions

    fn selected_route_clearance_plan_with_transitions(plan_id : String, route : RouteCandidate, energy : EnergyAssessment, readiness : MissionSimulationReadiness, transitions : Array[MissionClearanceTransition]) -> MissionClearancePlan

    simulation_readiness

    fn simulation_readiness(readiness_id : String, route_id : String, base_checks : Array[MissionReadinessCheck]) -> MissionSimulationReadiness

    traverse_decision_label

    fn traverse_decision_label(decision : TraverseDecision) -> String