After thinking about all of this, it appears to me that:
- ```service_stop``` will only create repaired classes and never kept
- the conditions ```service_check_running_${canonified_service_name}_ok``` are wrong as it will call class copy twice as you noticed and this is no good.

The logic should also be: 
   - if```service_check_running_${canonified_service_name}_repaired``` then no process exist, then we need to invert result class from repaired to kept
   - Otherwise if ```service_check_running_${canonified_service_name}_kept``` so some process(es) exist, and we will need to call ```service_stop```. Then we will have to copy its result class repaired
Do you agree ?