{
  "synthetic": true,
  "source": "existing pc-labs.zip protocol1.0.0; no new simulation",
  "cases": {
    "healthy": {
      "synthetic": true,
      "scope": "one-axis PC model; no STM32, firmware, SITL or flight validation",
      "scenario": "healthy",
      "rows": 601,
      "nominal_period_ms": 10,
      "first_tick_dt": "nominal 10 ms; subsequent dt from actual start times",
      "ideal_sensor": "current plant state at tick start; zero acquisition latency/no sensor noise",
      "command_unit": "deg/s^2 in teaching plant; not ESC/motor command",
      "pid": {
        "kp": 4,
        "ki": 1,
        "kd": 2.5,
        "output_limit_deg_s2": 60,
        "integral_limit_deg_s": 20
      },
      "missed_deadlines": 0,
      "max_release_delay_ms": 0.0,
      "max_abs_dt_jitter_ms": 0.0,
      "output_limit_ticks": 1,
      "integral_hold_ticks": 1,
      "max_abs_integral_deg_s": 10.940764,
      "first_stop_ms": null,
      "stop_ticks": 0,
      "stop_policy": "latched STOP_SIM at data age >=120 ms; command zero in model only",
      "tracking_rmse_deg": 5.164592,
      "final_angle_deg": 16.321285
    },
    "overload": {
      "synthetic": true,
      "scope": "one-axis PC model; no STM32, firmware, SITL or flight validation",
      "scenario": "overload",
      "rows": 601,
      "nominal_period_ms": 10,
      "first_tick_dt": "nominal 10 ms; subsequent dt from actual start times",
      "ideal_sensor": "current plant state at tick start; zero acquisition latency/no sensor noise",
      "command_unit": "deg/s^2 in teaching plant; not ESC/motor command",
      "pid": {
        "kp": 4,
        "ki": 1,
        "kd": 2.5,
        "output_limit_deg_s2": 60,
        "integral_limit_deg_s": 20
      },
      "missed_deadlines": 15,
      "max_release_delay_ms": 2.0,
      "max_abs_dt_jitter_ms": 2.0,
      "output_limit_ticks": 1,
      "integral_hold_ticks": 1,
      "max_abs_integral_deg_s": 10.94041,
      "first_stop_ms": null,
      "stop_ticks": 0,
      "stop_policy": "latched STOP_SIM at data age >=120 ms; command zero in model only",
      "tracking_rmse_deg": 5.164284,
      "final_angle_deg": 16.321254
    },
    "saturation": {
      "synthetic": true,
      "scope": "one-axis PC model; no STM32, firmware, SITL or flight validation",
      "scenario": "saturation",
      "rows": 601,
      "nominal_period_ms": 10,
      "first_tick_dt": "nominal 10 ms; subsequent dt from actual start times",
      "ideal_sensor": "current plant state at tick start; zero acquisition latency/no sensor noise",
      "command_unit": "deg/s^2 in teaching plant; not ESC/motor command",
      "pid": {
        "kp": 4,
        "ki": 1,
        "kd": 2.5,
        "output_limit_deg_s2": 60,
        "integral_limit_deg_s": 20
      },
      "missed_deadlines": 0,
      "max_release_delay_ms": 0.0,
      "max_abs_dt_jitter_ms": 0.0,
      "output_limit_ticks": 36,
      "integral_hold_ticks": 36,
      "max_abs_integral_deg_s": 15.698988,
      "first_stop_ms": null,
      "stop_ticks": 0,
      "stop_policy": "latched STOP_SIM at data age >=120 ms; command zero in model only",
      "tracking_rmse_deg": 10.929962,
      "final_angle_deg": 32.040537
    },
    "data-loss": {
      "synthetic": true,
      "scope": "one-axis PC model; no STM32, firmware, SITL or flight validation",
      "scenario": "data-loss",
      "rows": 601,
      "nominal_period_ms": 10,
      "first_tick_dt": "nominal 10 ms; subsequent dt from actual start times",
      "ideal_sensor": "current plant state at tick start; zero acquisition latency/no sensor noise",
      "command_unit": "deg/s^2 in teaching plant; not ESC/motor command",
      "pid": {
        "kp": 4,
        "ki": 1,
        "kd": 2.5,
        "output_limit_deg_s2": 60,
        "integral_limit_deg_s": 20
      },
      "missed_deadlines": 0,
      "max_release_delay_ms": 0.0,
      "max_abs_dt_jitter_ms": 0.0,
      "output_limit_ticks": 1,
      "integral_hold_ticks": 291,
      "max_abs_integral_deg_s": 10.940764,
      "first_stop_ms": 3110.0,
      "stop_ticks": 290,
      "stop_policy": "latched STOP_SIM at data age >=120 ms; command zero in model only",
      "tracking_rmse_deg": 5.60171,
      "final_angle_deg": 19.135055
    }
  }
}
