e9ee67e4cd
Defense-in-depth после 2-го инцидента в csv_recovery-канале (16.07.2026): - RouteSupplierLeadJob: чокпоинт обоих путей (webhook+csv_recovery) — если у звонкового сигнала phone == identifier (номер-ловушка проекта), сделка НЕ создаётся и клиент НЕ списывается; лид метится processed_at+error, шлётся warning. Ловит любой будущий регресс. - SupplierPortalClient.parseDeliveredRows: извлечение номера проекта без якоря $ — ловит номер-ловушку даже с хвостовыми символами. Тесты RED->GREEN (guard 5 assertions), 45/45 route+csv, Larastan 0. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>