# ua_http_route

## Огляд

Перевірка правила `abie.mdc`, що валідує наявність і коректність inline-patch `HTTPRoute` для `ua`-overlay у Vite-пакетах Kubernetes-маніфестів. Спрацьовує лише для пакетів, які мають `vite.config.{js,mjs,ts}` — для решти перевірка нейтральна (passthrough). Запускається як CLI-check і повертає код виходу для CI.

## Поведінка

1. Завантажує перелік ігнорованих шляхів з cursor-конфігу та обходить дерево `k8s/` репозиторію, збираючи всі YAML-маніфести.
2. Відбирає серед них файли `ua/kustomization.yaml`. Якщо таких немає — фіксує успіх із поясненням, що patch `HTTPRoute (ua)` не вимагається, і завершується.
3. Для кожного знайденого `ua/kustomization.yaml`:
   - Якщо в каталозі пакета (батьківському щодо `k8s/`) немає `vite.config.{js,mjs,ts}` — перевірка для цього overlay пропускається з відміткою «не застосовується» (gate за Vite-пакетом).
   - Інакше визначає каталог пакета. Якщо його не вдається встановити — фіксує внутрішню помилку overlay.
4. Аналізує base-`HTTPRoute` пакета на наявність посилань на спільні сервіси (`auth-run-hl`, `file-link-hl`). У base кожен такий `backendRef` має містити `namespace: dev`; помилки в base-маніфесті повідомляються як fail, і за наявності таких помилок overlay далі не перевіряється. Результат аналізу кешується на рівні пакета, щоб не повторювати його для кількох overlay одного пакета.
5. Читає вміст `ua/kustomization.yaml`. При помилці читання — fail із текстом помилки.
6. Витягує об'єднаний текст nginx-run patch-ів з kustomization і перевіряє, що inline-patch `HTTPRoute` для namespace `ua` відповідає `abie.mdc`: непорожній `target.name`, перепис `/spec/hostnames` (домени abie), `/spec/parentRefs/0/namespace` (`ua` або `ua-*`), а також JSON6902-patch-и на `/spec/rules/…/backendRefs/…/namespace` зі `value: ua`. Очікувана кількість таких patch-ів дорівнює кількості посилань на спільні сервіси в base. Невідповідність повідомляється як fail, відповідність — як pass.

## Де використовується

Частина набору перевірок правила `abie` (`npm/rules/abie`). Викликається як check-функція з кореня репозиторію; типово запускається інфраструктурою лінту/CI, що збирає та запускає `check`-модулі правил.

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

- Read-only: лише читає маніфести й конфіги, нічого не змінює у файловій системі.
- За відсутності `ua/kustomization.yaml` чи `vite.config` перевірка не вимагає patch і фіксує успіх (opt-in за Vite-пакетом).
- Помилка читання `ua/kustomization.yaml` не зупиняє обхід інших overlay — повідомляється як окремий fail, цикл продовжується.
- Помилки в base-`HTTPRoute` блокують лише overlay свого пакета, не впливаючи на інші пакети.
- Результат — агрегований код виходу (0 за умови всіх pass), придатний для використання в CI.
