---
type: JS Module
title: main.mjs
resource: npm/rules/changelog/presence/main.mjs
docgen:
  crc: ede34018
  model: omlx/gemma-4-e4b-it-OptiQ-4bit
  score: 90
  issues: internal-name:readChangeFiles,judge:inaccurate:0.98
  judgeModel: openai-codex/gpt-5.4-mini
---

## Огляд

Огляд:
Цей компонент є легковаговим доповненням до повного контролю консистентності, забезпечуючи миттєвий "delta-гейт" щодо присутності необхідних файлів змін (`.changes/`) для кожного зачепленого не-root робочого простору. Він виконує мапінг зачеплених файлів (`ctx.files`) на відповідні робочі простори, перевіряючи, чи існує хоча б один файл changeset у директорії `.changes/` для кожного з них. Це дозволяє оперативно контролювати відповідність політикам, визначеним у `n-changelog.mdc`, відповідно до специфікації `spec docs/specs/2026-07-02-text-check-per-file-split-design.md §7`.

Поведінка:
1. Якщо вхідний список файлів для аналізу порожній, перевірка завершується успішно.
2. Системно ідентифікує всі робочі простори (workspaces) у монорепозиторії, не покладаючись на мережеві чи Git-історичні дані.
3. Для кожного зачепленого файлу, що не належить до ігнорованих шляхів, визначає його відповідний робочий простір.
4. Для кожного визначеного робочого простору, що був зачеплений змінами, використовує `readChangeFiles` для перевірки.
5. Якщо для робочого простору виявлено зміни, але відсутній хоча б один файл changeset у директорії `.changes/`, генерується порушення, що вказує на необхідність створення change-файлу згідно з вимогами `n-changelog.mdc`.
6. Повертає статус виконання перевірки.

## Поведінка

Поведінка:
1. Перевіряє, чи надано список файлів для аналізу. Якщо список порожній, аналіз завершується успішно.
2. Ідентифікує всі робочі простори (workspaces) у монорепозиторії.
3. Для кожного файлу у наданому списку, що не належить до ігнорованих шляхів (таких як документація чи інструментарій), визначає відповідний робочий простір.
4. Пропускає аналіз для кореневого робочого простору, якщо він є єдиним.
5. Для кожного визначеного робочого простору, який був зачеплений змінами:
    а. Перевіряє наявність хоча б одного файлу changeset у директорії `.changes/` цього робочого простору.
    б. Якщо змінний файл відсутній, генерує порушення, вказуючи на необхідність додавання change-файлу, як це описує (n-changelog.mdc).
6. Повертає результат перевірки.

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

- lint: Визначає наявність змін у файлі порівняно з історією (read-only).

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

- Read-only: не виконує операцій запису (ФС/БД).
