From eba092b5c1ffdf5be10b14e1d31ff6d6d8f472fa Mon Sep 17 00:00:00 2001 From: Abdelkarim Mateos Sanchez Date: Fri, 17 Jul 2026 14:50:30 +0200 Subject: [PATCH] docs(quality): record rector/phpstan version coupling in the gate (AID-528) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit rector/rector hard-requires phpstan/phpstan (^2.2.2 as of 2.5.7), so rector, larastan and phpstan move as one unit. A rector minor can drag phpstan forward and silently change the @phpstan gate inside the same PR. Renovate is active on this repo, so that bump arrives unattended and the reviewer needs the warning where they will actually read it. Adopting rector did not move anything: phpstan stayed at 2.2.5 and larastan at v3.10.0 (verified against the lock diff of ea42fd6). The risk is the next upgrade, not the adoption. Learned from openmizan AID-526, which hit this while hardening the same gate. Documentation only — no behaviour change, refactor:dry still exits 0. Co-Authored-By: Claude Fable 5 --- rector.php | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/rector.php b/rector.php index 59195f4..621f4f6 100644 --- a/rector.php +++ b/rector.php @@ -17,6 +17,14 @@ * verified by the full suite, and each wave must re-prove its new rules bite * (violation probe → non-zero exit) before the wave PR lands. * + * Version coupling: rector/rector hard-requires phpstan/phpstan (^2.2.2 as of + * 2.5.7), so rector, larastan and phpstan move as ONE unit. Run `composer why + * phpstan/phpstan` on every rector bump and watch for a minor dragging phpstan + * forward — that would silently change the `@phpstan` gate inside the same PR. + * Renovate is active on this repo, so the bump arrives unattended. Adopting + * rector did not move it (phpstan stayed at 2.2.5, larastan at v3.10.0); the + * risk is the next upgrade, not this one. (Learned from openmizan AID-526.) + * * Path scope (deliberate, per AID-528): * - app/ only for now. routes/, bootstrap/, config/ and tests/ are wave * candidates, not oversights — extending scope is a wave decision.