@@ -417,12 +417,37 @@ solve(ocp; init=x, i=y)
417417
418418# Conflit action/stratégie : si Ipopt déclare aussi `display`
419419solve (ocp; display= false )
420- # → action gagne : display=false pour l'orchestrateur
420+ # → action gagne : display=false pour l'orchestrateur uniquement
421421
422422solve (ocp; display= route_to (ipopt= false ))
423423# → stratégie gagne : display=false pour Ipopt uniquement
424+ # (mais si Ipopt ne déclare pas `display`, erreur "option inconnue")
424425```
425426
427+ ## Limitation : impossible de passer une option à la fois à l'action ET à une stratégie
428+
429+ En mode descriptif, ` extract_options ` ** retire** l'option d'action de ` kwargs ` avant que
430+ le routeur de stratégies ne la voie. Une option ne peut donc avoir qu'un seul propriétaire
431+ dans un appel donné.
432+
433+ ** Si l'utilisateur veut passer ` display=false ` à la fois à l'orchestrateur et à Ipopt** ,
434+ il doit utiliser le ** mode explicite** :
435+
436+ ``` julia
437+ # Mode explicite : contrôle total
438+ solver = CTSolvers. Ipopt (display= false ) # display=false pour Ipopt
439+ solve (ocp; solver= solver, display= false ) # display=false aussi pour l'orchestrateur
440+ ```
441+
442+ C'est cohérent avec la philosophie des deux modes :
443+
444+ - ** Mode descriptif** — simplicité : l'orchestrateur gère tout, les options sont routées
445+ automatiquement. Les options d'action ont la priorité.
446+ - ** Mode explicite** — contrôle total : l'utilisateur construit les composants lui-même
447+ et peut passer n'importe quelle option à n'importe quel composant.
448+
449+ > Cette limitation doit être documentée dans la docstring de ` CommonSolve.solve ` .
450+
426451---
427452
428453## Fichiers à modifier — récapitulatif
0 commit comments