Skip to content

Honor disablePackageReplace() in RootRemoveComposerJsonDecorator#116

Merged
kayw-geek merged 1 commit into
symplify:mainfrom
kayw-geek:fix/disable-package-replace-keeps-root-require
Apr 22, 2026
Merged

Honor disablePackageReplace() in RootRemoveComposerJsonDecorator#116
kayw-geek merged 1 commit into
symplify:mainfrom
kayw-geek:fix/disable-package-replace-keeps-root-require

Conversation

@kayw-geek

Copy link
Copy Markdown
Collaborator

Summary

  • disablePackageReplace() was incomplete: ReplaceSectionJsonDecorator skipped writing the replace block, but RootRemoveComposerJsonDecorator still stripped merged packages from root require / require-dev.
  • Net effect: merged packages ended up neither in replace nor in require, so Composer never installed them, vendor/<vendor>/ was missing, and autoload failed (e.g. trait-not-found at runtime).
  • These two decorators are a pair (replace declares self.version, remove drops the now-redundant entry). Disabling one without the other is incoherent — fix is the same one-line guard.

Test plan

  • New RootRemoveComposerJsonDecoratorTest covers default-removal and disabled-keeps-root cases.
  • vendor/bin/phpunit (69 tests, all green).
  • composer check-cs, composer phpstan, composer fix-rector all clean.

…oot require/require-dev keeps merged packages
@kayw-geek kayw-geek merged commit cdd3782 into symplify:main Apr 22, 2026
38 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant