\Drupal::service() statt Dependency InjectionAufruf von \Drupal::service('entity_field.manager') direkt im Hook. Der Skill drupal-module-development nennt das explizit als Anti-Pattern. Für Hooks gilt: zumindest EntityFieldManagerInterface per Service-Container-Closure laden oder via Helper-Service kapseln.
.claude/skills/drupal-module-development/SKILL.md § Dependency Injectioncore_version_requirement: ^11 statt ^10 || ^11Skill schreibt für Custom-Module die portable Variante vor, um Modul-Migrationen während Drupal-Majors abzufedern.
.claude/skills/drupal-module-development/SKILL.md § .info.yml-Schema_core.default_config_hash: ''Alle anderen Rollen im Repo haben einen berechneten Hash (z. B. content_editor.yml: g-zSnaBXJnH7VoimReFb6KcLjIgHCU-hisiShtZ9hjQ). Ein leerer String deutet auf manuelles YAML statt drush cex. Drupal füllt den Hash beim Import automatisch — funktional unbedenklich, aber Drift-Indikator.
.claude/agents/drupal-config-architecture-reviewer.md § Config-Drift-Hinweise_scheduler_content_moderation_integration_states_values()Underscore-Präfix signalisiert in Drupal "non-public API". Bricht ohne Semver-Warnung wenn das Contrib-Modul die Funktion umbenennt. Besser: gleiche Logik selbst implementieren (Field-Storage-Options-Map filtern auf erlaubte Transitions des aktuellen Moderation-State).
publish erlaubt unpublished → published — bricht Hard-Review-GateDie publish-Transition hat in from: sowohl in_review als auch unpublished. Laut PRD-Modul 1 Transitions-Tabelle und der Jira-Kommentar-Spec ("Hard-Review: Draft → In Review → Published (kein Shortcut)") soll publish ausschliesslich aus in_review kommen. Mit dem aktuellen Zustand kann content_manager Inhalte ohne Review-Zyklus aus unpublished direkt publizieren.
create_new_draft fehlt published als Quell-Statefrom: [unpublished, draft] — PRD-Spec verlangt zusätzlich published, damit aus einer veröffentlichten Seite heraus ein neuer Draft für Korrekturen geöffnet werden kann (typischer Redaktions-Workflow).
content_editor sichtbarPRD §Modul 3: "Das Scheduler-Datumsfeld wird nur für Rollen mit Publish-Berechtigung angezeigt — content_editor sieht es nicht." Im Diff fehlt eine Field-Permission-Config für publish_on/unpublish_on und ein separates Form-Display je Rolle. Der Hook in solcom_editorial.module versteckt nur publish_state/unpublish_state, nicht die Datumsfelder.
PRD §Testing Decisions verlangt explizit Drupal-Integrationstests gegen laufende Instanz (Transitions, Hard-Review-Gate, Scheduler-Feld-Sichtbarkeit, Trash-Permissions, Vacancy-Unberührtheit). CLAUDE.md §Testing Requirements: "New features: MUST cover happy path, error handling, edge cases. PR rejection: No tests = immediate rejection."
Jira-Kommentar Nico Köhle: "Implementierungsmodule (alle Config-only, kein Custom-PHP)". Der hook_form_alter löst zwar ein echtes UX-Problem (Moderation-State-Dropdown zeigt unzulässige Zielzustände), aber das ist nicht spezifiziert. Optionen: (a) Modul behalten und PRD/ADR-Update zur Spec-Korrektur; (b) Modul entfernen, Verhalten via Field-Permissions oder Form-Display-Mode lösen.
18 Zeilen geändert (nur weight-Anpassungen plus parent_selection: 1). Keine PRD-Anforderung an Form-Display-Reorder für blog.
component_version-Hash-UpdateNicht Teil von P2503-105 — Canvas-Component-Version-Drift, gehört in einen separaten Commit/Story.
Nützlich für Administration, aber unbeauftragt. Auto-generated durch Drupal beim Anlegen einer Rolle — kann bleiben, aber explizit nennen.