solcom / docs / wiki / recipe-apply-risk

Recipe-Apply / cim Risk Risiko: HIGH

Canvas-Footer und Menü-Config können durch ddev drush cim -y auf einem veralteten Branch auf generische Recipe-Defaults zurückgesetzt werden. drush recipe:apply recipes/byte darf auf einer laufenden SOLCOM-Instanz nicht mehr ausgeführt werden — auch nicht automatisch. Diagnosiert am 2026-05-17 nach Regression von 19 Config-Files.

Erstellt: 2026-05-17  ·  Tags: canvas, recipe, cim, config-sync, regression  ·  Audit: ../LOG.html

Symptom


Am 2026-05-17 wurden 19 Config-Files diagnostiziert, die auf Drupal/Canvas-Recipe-Defaults zurückgesetzt waren. Betroffen:

Beispiel-Diff fuer den Footer (vereinfacht):

- active_version: 28c9e503a860cda4 <!-- SOLCOM-Stand -->
+ active_version: d696cea1796b650e <!-- Recipe-Default -->

- langcode: de
+ langcode: en

- <SOLCOM-Slots mit Firmen-Adresse, Social-Links>
+ <generische byte-Recipe-Slots>
Wichtig: composer drupal:recipe-unpack (im DDEV post-start Hook) ist nicht der Verursacher — dieses Composer-Plugin modifiziert nur composer.json/composer.lock und schreibt keine Drupal-Config.

Hypothese A: cim auf veraltetem Branch-Stand


Die wahrscheinlichste Ursache: Ein manuelles ddev drush cim -y wurde auf einem Branch ausgefuehrt, dessen config/sync/-Files aelter sind als Commit 72657b3 (der den SOLCOM-Footer hinzufuegt). Beim Import einer aelteren config/sync/-Version werden die SOLCOM-spezifischen Canvas-Slot-Definitionen durch die dort gespeicherten Recipe-Defaults ueberschrieben.

Wie es passieren kann:

Erkennungszeichen: Direkt nach einem Branch-Switch gefolgt von cim fehlen SOLCOM-Footer-Slots im Canvas-Editor. drush cex zeigt dann Diff gegen config/sync/ — dieser Diff verraet, welche Files ueberschrieben wurden.

Hypothese B: recipe:apply byte ist nicht re-apply-sicher


Zweite Ursache: Ein manuelles drush recipe:apply recipes/byte ueberschreibt bestehende Config via simpleConfigUpdate — ohne Preservation-Mechanik.

Das Recipe-File recipes/byte/config/canvas.component.sdc.byte_theme.footer.yml enthaelt generische byte-Recipe-Defaults:

active_version: d696cea1796b650e <!-- generischer byte-Recipe-Stand -->
langcode: en

Statt dem SOLCOM-Stand (active_version: 28c9e503a860cda4, langcode: de). Ein erneutes recipe:apply schreibt diesen generischen Stand blind zurueck und ueberschreibt den SOLCOM-spezifischen Inhalt vollstaendig. Das ist der Grund, warum drush recipe:apply recipes/byte auf einer laufenden SOLCOM-Instanz verboten ist.

Mitigations