# План: PII-scrubbing процессор логов

## Цель

Через TDD: `App\Logging\PiiScrubbingProcessor` (маскирование телефонов/email в
message/context/extra), tap `App\Logging\ScrubPii`, проводка в `config/logging.php`
(каналы single/daily). Сначала падающий юнит-тест процессора, затем реализация,
затем проводка, прогон. Из каталога `app`.

```skills-json
["test-driven-development"]
```

```steps-json
[
  {"op": "Bash", "object": "cd \"c:/моя/проекты/портал crm/Документация/app\"", "ref": "D5"},
  {"op": "Write", "object": "c:/моя/проекты/портал crm/Документация/app/tests/Feature/Logging/PiiScrubbingProcessorTest.php", "ref": "D5"},
  {"op": "Bash", "object": "php artisan test tests/Feature/Logging/PiiScrubbingProcessorTest.php", "ref": "D5"},
  {"op": "Write", "object": "c:/моя/проекты/портал crm/Документация/app/app/Logging/PiiScrubbingProcessor.php", "ref": "D1"},
  {"op": "Write", "object": "c:/моя/проекты/портал crm/Документация/app/app/Logging/ScrubPii.php", "ref": "D2"},
  {"op": "Edit", "object": "c:/моя/проекты/портал crm/Документация/app/config/logging.php", "ref": "D2"},
  {"op": "Bash", "object": "php artisan test tests/Feature/Logging/PiiScrubbingProcessorTest.php", "ref": "D5"},
  {"op": "Write", "object": "c:/моя/проекты/портал crm/Документация/docs/superpowers/runbooks/2026-06-17-log-pii-scrubbing.md", "ref": "D1"}
]
```

```verified-context-json
[
  {
    "id": "ctx-logging",
    "kind": "EXTRACTED",
    "ref": "app/config/logging.php",
    "anchor": "'path' => storage_path('logs/laravel.log'),"
  }
]
```

## Переговоры

### Круг 1

Довод по реализации: процессор Monolog ловит ВСЕ записи централизованно (надёжнее
правки вызовов Log:: по коду). Юнит-тест покрывает security-логику маскирования
(телефон/email в message и вложенном context, отсутствие ложного срабатывания на
длинных цифрах); tap+config — проводка. Вешаем на файловые каналы single/daily
(laravel.log — задокументированный риск). Прошу наставника зафиксировать
forward-рекомендацию по достаточности покрытия каналов.
