---
type: JS Module
title: main.mjs
resource: npm/rules/abie/ua_node_selector/main.mjs
docgen:
  crc: cfda0b77
  model: omlx/gemma-4-e4b-it-OptiQ-4bit
  tier: local-min-retry
  score: 100
  issues: judge:inaccurate:0.98
  judgeModel: openai-codex/gpt-5.4-mini
---

## Огляд

Цей модуль виконує функцію `lint`, яка сканує Kubernetes YAML файли на відповідність критеріям, визначеним у `abie.mdc`. Функція є **read-only** і не модифікує файлову систему чи базу даних. Вона перехоплює всі потенційні помилки (**fail-safe**), не генеруючи зовнішніх винятків. Модуль визначає, чи застосовується патч `nodeSelector` у конфігураціях UA. Якщо необхідний патч (`target kind Deployment: path /spec/template/spec/nodeSelector` з налаштуванням `preem: false`) відсутній, він повідомляє про цю відсутність.

## Поведінка

1. Виконує перевірку всього дерева Kubernetes YAML файлів на відповідність вимогам `abie.mdc` щодо наявності патчу `nodeSelector` для Deployment.
2. Ігнорує шляхи, визначені в конфігурації Cursor.
3. Визначає директорії з Deployment у дереві. Якщо їх немає, повідомляє про успішне завершення, оскільки патч `nodeSelector` не потрібен.
4. Знаходить усі YAML файли, що належать до конфігурації UA (`uaAbsList`). Якщо таких файлів немає, повідомляє про помилку, вимагаючи додати патч `ua/kustomization.yaml` з відповідним `nodeSelector`.
5. Для кожного знайденого UA YAML файлу перевіряє:
    а. Чи застосовується патч `nodeSelector` (тобто, чи є Deployment у відповідній директорії). Якщо ні, фіксує успішне завершення для цього файлу.
    б. Чи вдалося прочитати файл. Якщо ні, фіксує помилку з повідомленням про невдале читання.
    в. Чи містить YAML файл патч `target kind Deployment: path /spec/template/spec/nodeSelector` з налаштуванням `preem: false`. Якщо ні, фіксує помилку, вимагаючи застосування цього патчу (abie.mdc).
6. Повідомляє про успішне відповідність `abie.mdc` для файлу, якщо всі умови виконані.
7. Усі повідомлення про помилки (failure) обробляються внутрішнім механізмом і не викликають зовнішніх винятків.

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

- Read-only: не виконує операцій запису (ФС/БД).
- Перехоплює помилки і не пропускає винятків назовні (fail-safe).
