From acdd2fbbe1dcb1f1c6297eafd44c8ac4ee4f4ef6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=94=D0=BC=D0=B8=D1=82=D1=80=D0=B8=D0=B9?= Date: Tue, 14 Jul 2026 19:46:37 +0300 Subject: [PATCH] =?UTF-8?q?chore(gates):=20=D0=B7=D0=B0=D1=84=D0=B8=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D1=82=D1=8C=20=D0=B4=D0=BE?= =?UTF-8?q?=D0=BB=D0=B3=D0=B8=20=D0=B1=D0=BE=D0=B5=D0=B2=D0=BE=D0=B3=D0=BE?= =?UTF-8?q?=20=D0=BA=D0=BE=D0=B4=D0=B0=20=E2=80=94=20=D0=B3=D0=B5=D0=B9?= =?UTF-8?q?=D1=82=D1=8B=20=D1=81=D0=BD=D0=BE=D0=B2=D0=B0=20=D0=BB=D0=BE?= =?UTF-8?q?=D0=B2=D1=8F=D1=82=20=D0=BD=D0=BE=D0=B2=D0=BE=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Оба гейта были красными на ЧУЖОМ коде, уже работающем на бою: - deptrac: RunResource -> AutopodborQueue (read-only «место в очереди» для UI). Та же категория, что зафиксированный 27.06 ProjectResource (ADR-005). Долг с 78a37978 (05.07) — значит коммиты автоподбора шли мимо гейта. - larastan: 4 замечания в AnswerGuard + BotRunQuestionsCommandTest (бот, 13-14.07). Коммиты бота baseline не трогали — значит гейт обходили. Поведение кода не менялось: только baseline-файлы. Теперь deptrac 0 нарушений (3 skipped), Larastan 0 ошибок — новые нарушения снова ловятся. Co-Authored-By: Claude Opus 4.8 --- app/deptrac.baseline.yaml | 7 +++++++ app/phpstan-baseline.neon | 18 ++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/app/deptrac.baseline.yaml b/app/deptrac.baseline.yaml index 891af24f..6dcafc04 100644 --- a/app/deptrac.baseline.yaml +++ b/app/deptrac.baseline.yaml @@ -3,3 +3,10 @@ deptrac: App\Http\Resources\ProjectResource: - App\Services\Project\ProjectRuleMessages - App\Services\Project\SupplierSnapshotGuard + # RunResource → AutopodborQueue: read-only UI-вычисление «место в очереди» + # (queue_position, только пока status=queued). Та же категория, что ProjectResource + # выше — Resource спрашивает сервис ради отображения, не управляет им (ADR-005). + # Долг пришёл с автоподбором (892ca060, 05.07.2026), код на бою; фиксируем, + # чтобы гейт снова ловил НОВЫЕ нарушения. + App\Http\Resources\Autopodbor\RunResource: + - App\Services\Autopodbor\AutopodborQueue diff --git a/app/phpstan-baseline.neon b/app/phpstan-baseline.neon index 205c4451..d6ce7f72 100644 --- a/app/phpstan-baseline.neon +++ b/app/phpstan-baseline.neon @@ -678,6 +678,18 @@ parameters: count: 1 path: app/Services/Bot/AnswerGuard.php + - + message: '#^Offset 1 on array\{list\, list\\} on left side of \?\? always exists and is not nullable\.$#' + identifier: nullCoalesce.offset + count: 1 + path: app/Services/Bot/AnswerGuard.php + + - + message: '#^Offset 1 on array\{list\, list\\} on left side of \?\? always exists and is not nullable\.$#' + identifier: nullCoalesce.offset + count: 1 + path: app/Services/Bot/AnswerGuard.php + - message: '#^Offset ''role'' on array\{role\: string, text\: string\} on left side of \?\? always exists and is not nullable\.$#' identifier: nullCoalesce.offset @@ -2184,6 +2196,12 @@ parameters: count: 2 path: tests/Feature/Billing/TopupFlagForkTest.php + - + message: '#^Call to an undefined method Pest\\PendingCalls\\TestCall\:\:artisan\(\)\.$#' + identifier: method.notFound + count: 2 + path: tests/Feature/Bot/BotRunQuestionsCommandTest.php + - message: '#^Call to an undefined method Pest\\PendingCalls\\TestCall\:\:getJson\(\)\.$#' identifier: method.notFound