---
type: JS Module
title: git-policy.mjs
resource: npm/scripts/lib/git-policy.mjs
docgen:
  crc: 057bf20c
  model: openai-codex/gpt-5.5
  tier: cloud-avg
  score: 100
  judgeModel: openai-codex/gpt-5.4-mini
---

## Огляд

`readGitPolicy` читає Git policy проєкту з `.n-rules.json` або `.n-cursor.json`, щоб delta-перевірки, changelog і branch tooling користувалися спільним набором базової, release, integration і protected гілок. Якщо політика відсутня, неповна або непридатна, повертає історичний канон `main`, не зупиняючи роботу інструментів. Помилки перехоплюються і не кидаються назовні.

## Поведінка

1. `readGitPolicy` шукає компактну політику Git у конфігах `.n-rules.json`, `.n-cursor.json`, щоб узгодити базову, release, integration і protected гілки для delta-перевірок, changelog і branch tooling.
2. Якщо конфіг відсутній, неповний або не може бути прочитаний як валідні дані, функція безпечно повертається до історичного канону `main` і не перериває роботу інструментів винятком.
3. Базова гілка береться з політики лише тоді, коли вона задана змістовним іменем; інакше використовується `main`.
4. Release-гілки беруться з політики як набір змістовних унікальних назв; якщо придатних значень немає, release-набором стає `main`.
5. Integration-гілки формуються як об’єднання базової гілки та release-гілок без дублювання, щоб downstream-інструменти мали єдине джерело правди для порівнянь.
6. Protected-гілки збігаються з integration-гілками, бо ці довгоживучі гілки мають однаково враховуватися як цільові й захищені.

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

- readGitPolicy — Повертає effective policy. `releaseBranches` одночасно є integration-кандидатами
delta та захищеними довгоживучими гілками; `baseBranch` додається до обох наборів.

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

- Власних операцій запису (ФС/БД) у файлі немає; виклики імпортованих модулів можуть писати.
- Перехоплює помилки і не пропускає винятків назовні (fail-safe).
