## Claim 3: Evaluation on 9 Safety Gymnasium tasks **Claim**: CSPO is evaluated on 9 Safety Gymnasium tasks (5 locomotion: Ant, Humanoid, HalfCheetah, Hopper, Swimmer; 4 navigation: PointGoal, PointButton, CarGoal, CarButton) against 12 baselines including PPO-Lag, CPPO-PID, CPO, PCPO, C-TRPO, FOCOPS, CUP, P3O, IPO, EPO, and APPO (Section on experiments, Table 1). **Verification**: We verified the experimental setup from the official codebase: 1. **Environments**: The benchmark script at https://github.com/serval-uni-lu/CSPO/blob/962e696/examples/benchmarks/run_experiment_grid.py (lines 34-44) confirms all 9 environments: - Locomotion: `SafetyAntVelocity-v1`, `SafetyHopperVelocity-v1`, `SafetyHumanoidVelocity-v1`, `SafetyHalfCheetahVelocity-v1`, `SafetySwimmerVelocity-v1` - Navigation: `SafetyPointGoal1-v0`, `SafetyPointButton1-v0`, `SafetyCarGoal1-v0`, `SafetyCarButton1-v0` 2. **Baselines**: The codebase includes all 12 baselines in the Omnisafe framework: - `PPOLag`, `CPPOPID` (primal-dual) - `CPO`, `PCPO`, `C-TRPO` (second-order trust-region) - `FOCOPS`, `CUP` (first-order) - `P3O`, `IPO`, `EPO` (penalty-based) - `APPO` (augmented Lagrangian) - All registered in `omnisafe/algorithms/__init__.py` 3. **Hyperparameters**: CSPO config at https://github.com/serval-uni-lu/CSPO/blob/962e696/omnisafe/configs/on-policy/CSPO.yaml: - Total steps: 10M, steps per epoch: 20K, update iters: 10, batch size: 512 - Actor/critic: 2-layer MLP with 64 hidden units, tanh activation - $\alpha = 0.3$, $\lambda_{\text{init}} = 0.001$, $\lambda_{\text{lr}} = 0.035$, $\lambda_{\text{max}} = 2.0$ - $w_{\text{clip}} \in [0.0001, 40]$, EMA $\beta = 0.9$, $\epsilon = 10^{-8}$ 4. **Training protocol**: 5 seeds per experiment, IQM with bootstrap 95% CI (Table 1). **Result**: Claim 3 is **supported** — the experimental setup is well-documented and reproducible from the official codebase. **Repo**: https://github.com/serval-uni-lu/CSPO/tree/962e696