schema_version: missioncore.simulation-s0-profile/v1
profile_id: ai-worker-px4-gazebo-v1

target_host:
  windows_release: windows-11
  virtualization: wsl2
  wsl_distribution: MissionCore-Sim
  linux_distribution: ubuntu-24.04
  architecture: x86_64
  container_runtime: none

storage:
  windows_root: 'D:\NDC_MISSIONCORE'
  wsl_root: /mnt/d/NDC_MISSIONCORE
  minimum_free_gib: 300
  stop_below_gib: 200
  forbid_windows_system_drive: true
  mutable_paths:
    - id: wsl
      windows_path: 'D:\NDC_MISSIONCORE\simulation\wsl'
      wsl_path: /mnt/d/NDC_MISSIONCORE/simulation/wsl
    - id: source
      windows_path: 'D:\NDC_MISSIONCORE\simulation\source'
      wsl_path: /mnt/d/NDC_MISSIONCORE/simulation/source
    - id: build
      windows_path: 'D:\NDC_MISSIONCORE\simulation\build'
      wsl_path: /mnt/d/NDC_MISSIONCORE/simulation/build
    - id: cache
      windows_path: 'D:\NDC_MISSIONCORE\simulation\cache'
      wsl_path: /mnt/d/NDC_MISSIONCORE/simulation/cache
    - id: runtime
      windows_path: 'D:\NDC_MISSIONCORE\simulation\runtime'
      wsl_path: /mnt/d/NDC_MISSIONCORE/simulation/runtime
    - id: artifacts
      windows_path: 'D:\NDC_MISSIONCORE\simulation\artifacts'
      wsl_path: /mnt/d/NDC_MISSIONCORE/simulation/artifacts
    - id: datasets
      windows_path: 'D:\NDC_MISSIONCORE\simulation\datasets'
      wsl_path: /mnt/d/NDC_MISSIONCORE/simulation/datasets

clock:
  authority: gazebo:/clock
  ros_use_sim_time: true
  px4_uxrce_dds_sync_enabled: false
  canonical_unit: nanoseconds
  utc_role: provenance-only

authority:
  simulation_or_shadow_only: true
  actuator_authority: false
  navigation_or_safety_accepted: false
  direct_actuator_setpoints_allowed: false
  allowed_setpoint_profiles:
    - rover-speed-steering/v1
    - rover-speed-yaw-rate/v1

ros:
  domain_id: 0
  namespace: /missioncore/polygon/s0

runtime_acceptance:
  world: rover
  model: rover_ackermann_0
  physics_step_ns: 2000000
  pause_max_advance_ns: 0
  speed_factors:
    - 1
    - 2
  rtf_tolerance_percent: 20
  measurement_window_seconds: 4
  resource_sample_interval_milliseconds: 500
  max_owned_rss_mib: 2048
  max_owned_cpu_percent: 800
  minimum_available_memory_gib: 8

components:
  - id: ros2
    source_url: https://docs.ros.org/en/jazzy/
    requested_ref: jazzy
    resolved_version: ros-base=0.11.0-1noble.20260616.084325;ros-gz=1.0.22-1noble.20260616.074726
    resolved_commit:
    license: mixed-apache-2.0-bsd
    qualification_state: accepted
  - id: gazebo
    source_url: https://gazebosim.org/docs/harmonic/
    requested_ref: harmonic
    resolved_version: gz-harmonic=1.0.0-1~noble;gz-sim=8.14.0-1~noble;sdformat=14.9.0-1~noble
    resolved_commit:
    license: apache-2.0
    qualification_state: accepted
  - id: px4-autopilot
    source_url: https://github.com/PX4/PX4-Autopilot
    requested_ref: v1.17.0
    resolved_version: v1.17.0
    resolved_commit: d6f12ad1c4f70ad3230afd7d86e971421e02fef4
    license: bsd-3-clause
    qualification_state: accepted
  - id: px4-msgs
    source_url: https://github.com/PX4/px4_msgs
    requested_ref: v1.17.0
    resolved_version: v1.17.0
    resolved_commit: 86d8239e962f6939e05c3737784f60c02fa884db
    license: bsd-3-clause
    qualification_state: accepted
  - id: px4-gazebo-models
    source_url: https://github.com/PX4/PX4-gazebo-models
    requested_ref: PX4-Autopilot/v1.17.0-submodule
    resolved_version: px4-v1.17.0-submodule
    resolved_commit: b6127f4ec20de867e215fb5f78ae88b80f371909
    license: bsd-3-clause
    qualification_state: accepted
  - id: micro-xrce-dds-agent
    source_url: https://github.com/eProsima/Micro-XRCE-DDS-Agent
    requested_ref: v2.4.3
    resolved_version: v2.4.3
    resolved_commit: 73622810d984349b80bbac0ef55fc0b694d62222
    license: apache-2.0
    qualification_state: accepted
  - id: nav2
    source_url: https://github.com/ros-navigation/navigation2
    requested_ref: jazzy@2026-07-24
    resolved_version: navigation2=1.3.12-1noble.20260615.181551;nav2-bringup=1.3.12-1noble.20260616.082701
    resolved_commit: c92ea2fd9008f50c0ec8447610800214b2a0dafb
    license: apache-2.0
    qualification_state: accepted

ports:
  - id: micro-xrce-dds
    host_scope: loopback-only-netns
    protocol: udp
    bind: 0.0.0.0
    port: 8888
    owner: micro-xrce-dds-agent
  - id: px4-mavlink-onboard
    host_scope: loopback-only-netns
    protocol: udp
    bind: 0.0.0.0
    port: 14580
    owner: px4-sitl
  - id: px4-mavlink-normal
    host_scope: loopback-only-netns
    protocol: udp
    bind: 0.0.0.0
    port: 18570
    owner: px4-sitl
  - id: simulation-orchestrator-api
    host_scope: loopback-only-netns
    protocol: tcp
    bind: 127.0.0.1
    port: 18080
    owner: simulation-orchestrator
  - id: simulation-telemetry
    host_scope: loopback-only-netns
    protocol: tcp
    bind: 127.0.0.1
    port: 18081
    owner: simulation-orchestrator

processes:
  - id: simulation-orchestrator
    parent:
    shutdown_order: 60
  - id: gazebo-server
    parent: simulation-orchestrator
    shutdown_order: 50
  - id: px4-sitl
    parent: simulation-orchestrator
    shutdown_order: 40
  - id: micro-xrce-dds-agent
    parent: simulation-orchestrator
    shutdown_order: 30
  - id: ros2-bridge
    parent: simulation-orchestrator
    shutdown_order: 20
  - id: nav2
    parent: simulation-orchestrator
    shutdown_order: 10

required_tools:
  - git
  - gz
  - make
  - cmake
  - ninja
  - colcon
  - ros2
  - MicroXRCEAgent

required_evidence:
  - worker-inventory
  - d-only-physical-placement
  - px4-stock-rover-launch
  - ros2-telemetry
  - authoritative-simulation-clock
  - pause-step-speed
  - clean-stop-no-orphans
  - resource-baseline-1x
  - resource-baseline-2x
