Removed Composer requirements that top-level packages already provide and skipped two Rector rules for the resulting version change. - #3093
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Repository UI Review profile: ASSERTIVE Plan: Team Run ID: ⛔ Files ignored due to path filters (43)
📒 Files selected for processing (3)
Included review availability: Your plan provides up to 10 included reviews per hour; 0 remain after this review. WalkthroughThe change updates Drupal Rector, removes redundant Composer dependencies, updates dependency documentation, and skips two Rector rules. ChangesDependency and Rector configuration
Estimated code review effort: 2 (Simple) | ~10 minutes Merge Risk: ⚪ Minimal · up to This updates Drupal Rector dependency handling, removes redundant Composer requirements, and skips two incompatible Rector transformations. No concrete current-head issue remains that blocks merging. Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
|
Code coverage (threshold: 90%) Per-class coverage |
This comment has been minimized.
This comment has been minimized.
|
📖 Documentation preview for this pull request has been deployed to Netlify: https://6a9cf659c93d98a12004c201--vortex-docs.netlify.app This preview is rebuilt on every commit and is not the production documentation site. |
This comment has been minimized.
This comment has been minimized.
1 similar comment
|
Code coverage (threshold: 90%) Per-class coverage |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #3093 +/- ##
==========================================
- Coverage 87.37% 87.02% -0.36%
==========================================
Files 107 100 -7
Lines 5087 4924 -163
Branches 49 3 -46
==========================================
- Hits 4445 4285 -160
+ Misses 642 639 -3 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
Summary
This removes five root Composer requirements that are already guaranteed by packages the project depends on directly, so each version range is owned by the package that actually needs it instead of being duplicated at the root.
webflo/drupal-findermoves out of the productionrequiresection entirely, since only dev packages ever needed it. Dropping therector/rectorpin also requires bumpingpalantirnet/drupal-rectorto^1.1.3, the release that added its own upper-bound conflict on Rector, andrector.phpgains two rule skips to keepahoy lint-beclean against the Rector version Composer now resolves to below that boundary.Changes
Root Composer requirements removed
Each of these is dropped because a package already in
composer.jsonguarantees an equivalent or tighter constraint:rector/rector(was pinned>=2.6.4 <2.6.5)require-devpalantirnet/drupal-rectorrequiresrector/rector: ^2dealerdirect/phpcodesniffer-composer-installer^1.2.1require-devdrupal/coder,drevops/phpcs-standardandphpcompatibility/php-compatibilityeach require itlullabot/mink-selenium2-driver^1.7.4require-devdrupal/drupal-extensionrequires the identical^1.7.4lullabot/php-webdriver^2.0.7require-devlullabot/mink-selenium2-driverrequires^2.0.6webflo/drupal-finder^1.3.1require(production)drupal/drupal-extension,mglaman/phpstan-drupalandpalantirnet/drupal-rector, all of which are dev packageswebflo/drupal-finderis worth calling out separately: no production package required it and no project code references it, so it was being installed into production builds for nothing, and it now resolves only in the dev dependency set.Why the
rector/rectorpin could be removedThe pin
>=2.6.4 <2.6.5was a manual workaround forpalantirnet/drupal-rectornot declaring an upper bound on Rector.palantirnet/drupal-rector1.1.3, released 2026-09-03, addedconflict: {"rector/rector": ">=2.6.2"}, so the compatible range is now declared upstream and a local pin can only fight it. The root constraint is removed andpalantirnet/drupal-rectoris bumped from^1.1.2to^1.1.3so the conflict-carrying release is guaranteed.Resolution consequence and the two new Rector skips
With the pin gone, Composer resolves
palantirnet/drupal-rector1.1.3 andrector/rector2.6.1, the highest release below the upstream conflict boundary. Rector 2.6.2 removed the per-version set providers thatwithSetProviders(DrupalSetProvider::class)inrector.phpdepends on, which is exactly what the upstream conflict protects against. The Drupal rule sets were verified to still load at 2.6.1: seeding a deprecateddrupal_requirements_severity()call makes Rector rewrite it viaFunctionToStaticRector, matching the existing CI guard for that behavior.Rector 2.6.2 also deprecated
DisallowedEmptyRuleFixerRectorand droppedAddOverrideAttributeToOverriddenMethodsRectorfrom the PHP 8.3 set, so at 2.6.1 both rules are still active. Together they reported 14 changes across the template's own code:DisallowedEmptyRuleFixerRectorrewriting!empty($x)into!(in_array($x, ['', '0'], true) || ...), andAddOverrideAttributeToOverriddenMethodsRectoradding#[\Override]attributes the template does not use. Both are added to the existingwithSkip()list, which already collects rules the project declines on coding-standard grounds, andahoy lint-beis clean after the skips.Packages deliberately kept
These are also available transitively but stay as direct requirements because the project invokes their binaries directly and owns their version choice, and no top-level package authoritatively bounds them:
behat/behat, run viaahoy test-bddand configured bybehat.ymlphpunit/phpunit, configured byphpunit.xml; onlyphpspec/prophecy-phpunitpulls it in, with a permissive^9.1 || ... || ^13.0phpstan/phpstan, configured byphpstan.neondrupal/core-composer-scaffold, configured by the root'sextra.drupal-scaffoldand conventionally declared directly by Drupal projectsdrupal/search_api, enabled directly byscripts/provision-00-enable-demo-modules.shDocumentation and installer fixtures
.vortex/docs/content/development/composer.mdx: removed the five dropped packages from therequireandrequire-devtables, and updated thepalantirnet/drupal-rectorrow to note that it installs and constrainsrector/rector..vortex/installer/tests/Fixtures/handler_process/**: regenerated snapshots. The installer's Tools handler still callsremoveSubNodeforrector/rectoranddealerdirect/phpcodesniffer-composer-installerso that consumer projects carrying those entries from an earlier template version are still cleaned up; those calls are now no-ops against the current template, mirroring the existing handling ofsquizlabs/php_codesniffer.Screenshots
N/A
Before / After
Who owns the Rector version range:
What the root declares:
Summary by CodeRabbit
Documentation
Maintenance