Summary
The current constraint "phpdocumentor/reflection-docblock": "^5.3.0 || ^6.0.0" (added in 0.8.6, see #23) causes composer to lock docblock at v6, which then conflicts with most other PHP ecosystem packages that pull phpdocumentor/reflection and consequently makes installs fail with a misleading error message.
Reproduction
composer create-project laravel/laravel:^12 my-app
cd my-app
composer require --dev pestphp/pest pestphp/pest-plugin-arch -W
# … now phpdocumentor/reflection-docblock is locked at 6.0.3 …
composer require any-package-that-depends-on-phpdocumentor/reflection
Last step fails with:
phpdocumentor/reflection 6.0.0 requires php 8.1.*|8.2.*|8.3.* -> your php version (8.4.20) does not satisfy that requirement.
phpdocumentor/reflection[6.1.0, ..., 6.6.0] require phpdocumentor/reflection-docblock ^5
-> found phpdocumentor/reflection-docblock[5.0.0, ..., 5.6.7]
but the package is fixed to 6.0.3 (lock file version) by a partial update.
Why this happens
When both major versions are listed with ||, composer picks the highest available (6.0.3). But:
phpdocumentor/reflection 6.1+ (which is what most consumers actually need on PHP 8.4) requires phpdocumentor/reflection-docblock: ^5 — incompatible with the locked v6.
phpdocumentor/reflection 6.0.0 accepts docblock v6 but is itself unusable on PHP 8.4 (php: 8.1.*|8.2.*|8.3.*).
So the ^6.0.0 half of your || ends up wedging the whole graph for any PHP 8.4 user who installs pest-plugin-arch before adding any other package that depends on phpdocumentor/reflection.
Ecosystem context
- Symfony 6.4.32 explicitly rejects docblock v6 at runtime (https://symfony.com/blog/symfony-6-4-32-released).
phpdocumentor/reflection 6.1+ (the rest of the phpDocumentor stack) requires docblock ^5.
- I'm not aware of any other widely-used PHP package that requires or even allows docblock v6.
In effect, ta-tikoma/phpunit-architecture-test 0.8.6+ is the only mainstream package keeping docblock v6 alive in users' lock files, and that's now actively breaking other installs.
Proposed fix
Drop the ^6.0.0 half:
- "phpdocumentor/reflection-docblock": "^5.3.0 || ^6.0.0"
+ "phpdocumentor/reflection-docblock": "^5.3.0"
If there's a specific 0.8.6 feature that genuinely requires docblock v6, please document it here — but the closing comment on #23 ("added in 0.8.6") doesn't mention any. If v6 was added defensively rather than because it was needed, dropping it back to ^5.3.0 would unblock a meaningful slice of the PHP 8.4 + Pest + Filament + Spatie ecosystem.
Happy to send a PR.
Summary
The current constraint
"phpdocumentor/reflection-docblock": "^5.3.0 || ^6.0.0"(added in 0.8.6, see #23) causes composer to lock docblock at v6, which then conflicts with most other PHP ecosystem packages that pullphpdocumentor/reflectionand consequently makes installs fail with a misleading error message.Reproduction
Last step fails with:
Why this happens
When both major versions are listed with
||, composer picks the highest available (6.0.3). But:phpdocumentor/reflection 6.1+(which is what most consumers actually need on PHP 8.4) requiresphpdocumentor/reflection-docblock: ^5— incompatible with the locked v6.phpdocumentor/reflection 6.0.0accepts docblock v6 but is itself unusable on PHP 8.4 (php: 8.1.*|8.2.*|8.3.*).So the
^6.0.0half of your||ends up wedging the whole graph for any PHP 8.4 user who installspest-plugin-archbefore adding any other package that depends onphpdocumentor/reflection.Ecosystem context
phpdocumentor/reflection 6.1+(the rest of the phpDocumentor stack) requires docblock^5.In effect, ta-tikoma/phpunit-architecture-test 0.8.6+ is the only mainstream package keeping docblock v6 alive in users' lock files, and that's now actively breaking other installs.
Proposed fix
Drop the
^6.0.0half:If there's a specific 0.8.6 feature that genuinely requires docblock v6, please document it here — but the closing comment on #23 ("added in 0.8.6") doesn't mention any. If v6 was added defensively rather than because it was needed, dropping it back to
^5.3.0would unblock a meaningful slice of the PHP 8.4 + Pest + Filament + Spatie ecosystem.Happy to send a PR.