3ca4ce16c2
Мест оказалось не три, а пять. Четвёртое назвал надзиратель, пятое нашлось при
доделке.
• ObzvonStiraniePoTrebovaniyuTest — заголовок был написан в будущем времени, а
комментарий утверждал, что диска в настройках пока не завели. Оба стали
ложью в день постройки хранилища, а проверка осталась зелёной и сама себя не
показала бы никогда: она подменяла настройки портала своими;
• ObzvonChistkaNaObyomeTest, заготовка z22vDisk — словами не врёт, и потому
опаснее: та же подмена настроек руками. Сторожа объёма стерегли СВОЮ ЖЕ
подпорку и остались бы зелёными, убери хранилище из настроек портала.
В обоих местах подмена настроек убрана, Storage::fake оставлен: он не трогает
настройки, а уводит корень диска в storage/framework/testing/disks и сам за
собой прибирает. Без него проверки клали бы и удаляли файлы в настоящей папке
записей разговоров на машине, где их запустили.
Заголовок стирания переписан по существу: проверка стережёт ВЕСЬ путь живого
человека — обращение, PdErasureService, переходник обзвона, диск. Соседний
сторож зовёт переходник напрямую и разрыв в середине дороги не увидел бы.
Датчик на весь класс: перечень живых строк, утверждающих в настоящем или
будущем времени, что хранилища записей нет, обязан быть ПУСТ.
🔴 Датчик написан на PHP, а не на grep, и это замер, а не вкус:
printf 'ДИСКА ещё НЕТ' | grep -i "диска" → НЕ находит.
Локаль здесь C.UTF-8, и складывать регистр кириллицы grep не умеет вовсе —
никаким ключом. Собранный им перечень соврёт коротким списком, на чём
надзиратель и обжёгся. mb_strtolower кириллица родная.
🪤 Вторая ловушка, моя: шаблон с [^.] между словом и отрицанием не находит
фразу «Диска … в config/filesystems.php ещё НЕТ» — точка в имени файла
рвёт совпадение. Датчик проверяет вхождение подстроки, никаких «между».
Датчик показан красным трижды: на возвращённой прежней строке, на моём же
комментарии с дословной цитатой прежней лжи, и рядом с grep, который на той же
строке нашёл ноль. Комментарий переписан пересказом, а не ослаблен датчик: ложь
в кавычках для читателя вскользь неотличима от лжи.
Убран мой собственный мусор из app: три файла-обрывка, порождённых стрелкой
внутри однострочника для tinker — оболочка прочла её как перенаправление.
Прогон обзвона 214 из 214, статанализ 0 ошибок.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>