fix(drupal): hold decoupled_router below 2.0.7 - #160
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (2)
Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review. 📝 WalkthroughWalkthroughThe Drupal project template adds a bounded ChangesDependency Constraint
Estimated code review effort: 1 (Trivial) | ~5 minutes Merge Risk: ⚪ Minimal · up to The PR applies a bounded dependency constraint to prevent an incompatible release from being selected. No actionable merge-blocking risk remains after normal checks and review. 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## develop #160 +/- ##
========================================
Coverage 90.24% 90.24%
========================================
Files 13 13
Lines 2132 2132
Branches 103 103
========================================
Hits 1924 1924
Misses 203 203
Partials 5 5 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
Closes nothing here — the fix belongs in druxt. This holds the line until
that release exists.
What breaks
Decoupled Router 2.0.7 (2026-08-22) gave
RouterPathTranslatorSubscriber::onPathTranslation()a: voidreturntype. druxt 1.2.1 declares its three subscribers without one, so PHP
rejects the override:
The failure mode is the bad part.
drush craborts, Drupal keeps servingfrom the old container, and druxt's subscribers are silently absent — a
site that quietly stops resolving paths rather than one that falls over.
Tracked upstream as #3618675, critical.
Why this repository was exposed
drupal/druxtrequiresdrupal/decoupled_router: ^2.0, and nothing hererequired it directly, so 2.0.7 was in range and only
composer.lockstoodbetween an update and a broken site:
A fresh
composer installwas always fine.composer update, or aRenovate bump on its own schedule, was not.
The constraint
"drupal/decoupled_router": "^2.0 <2.0.7", added as a direct requirement.A range rather than an exact
2.0.6:composer validate --strictrejectsexact constraints on a package that follows semantic versioning, and this
repository runs that in CI.
Verified
Built a site with 2.0.7 and druxt from the upstream compatibility branch
to confirm the diagnosis end to end:
translate-path?path=/And after the pin:
composer update drupal/decoupled_router— nothing to modifycomposer update— decoupled_router untouchedcomposer validate --strict— passesRemoving it
When druxt releases a version carrying the fix, drop the constraint and
re-lock. Two things land with it: the
: voidreturn types, and threeinstanceof CacheableJsonResponseguards that 2.0.7 made unreachable bytyping
getResponse().Summary by CodeRabbit
Bug Fixes
Chores