Deploy: entfallende Module vor dem Image-Wechsel deinstallieren
Drupal kann ein Modul nur deinstallieren, solange dessen Code vorhanden ist. Wird ein Modul gleichzeitig aus core.extension.yml und composer.json geworfen, findet der config:import im neuen Image die Extension nicht mehr und bricht ab ("The module X does not exist") — so geschehen bei form_mode_control.
Der offizielle Weg dagegen sind zwei Deploys: erst deinstallieren, waehrend der Code noch im Repo liegt, dann den Code entfernen. Das laesst sich in einem Feature-Branch-Workflow schlecht durchhalten, deshalb verlegt scripts/pre-deploy.sh die Deinstallation dorthin, wo der alte Code noch existiert: in den noch laufenden Container, bevor docker stack deploy ihn ersetzt.
- Soll-Zustand kommt als core.extension.yml des neuen Release vom Runner, Ist-Zustand aus der Datenbank; die Differenz nach unten wird ueber den module_installer regulaer deinstalliert (inkl. hook_uninstall).
- Zugaenge bleiben unberuehrt, die installiert der config:import wie bisher.
- Best effort: der Schritt bricht den Deploy nie ab. Was er nicht regeln kann, faellt dem config:import zu — also demselben Verhalten wie ohne ihn.
- Jeder Stack befragt sein eigenes laufendes Image, staging und prod bleiben getrennt.