# k8s-tree.mjs

## Огляд

Обхід Kubernetes-дерева для перевірок abie з кешуванням на час одного прогону. Знаходить YAML під сегментом `k8s/` і визначає каталоги з `Deployment`. Перший виклик платить за обхід; наступні концерни прогону беруть із кешу.

## Поведінка

1. Пошук маніфестів: рекурсивно обійти дерево, відібравши `.yaml`/`.yml` під сегментом `k8s/`; `.github/` свідомо пропускається. Результат відсортований.
2. Каталоги з Deployment: розпарсити передані YAML, відібрати `kind: Deployment`, зібрати унікальні каталоги.
3. Кешування: обидві операції кешуються module-level singleton-ом за ключем із входів; повтор без I/O.
4. Пошкоджені YAML за замовчуванням мовчки пропускаються; репортер передає викликач.

## Публічний API

- `findK8sYamlFiles` — відсортований список YAML під `k8s/` (з кешем, пропуск `.github/`).
- `collectDeploymentDirs` — множина каталогів із Deployment (кеш, опц. репортер помилок).

## Гарантії поведінки

- Read-only щодо проєкту.
- Стійкість до пошкоджених YAML: помилкові документи пропускаються, обхід не переривається.
- Детермінований вивід (стабільне сортування).
- Кеш у межах прогону; повторні виклики безкоштовні.
