@nitra/cursor 12.8.0 → 12.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/package.json +1 -1
  3. package/rules/doc-files/js/docgen-scan.mjs +4 -2
  4. package/rules/doc-files/js/docs/docgen-extract.md +10 -10
  5. package/rules/doc-files/js/docs/docgen-judge-measure.md +10 -10
  6. package/rules/doc-files/js/docs/docgen-judge.md +13 -11
  7. package/rules/doc-files/js/docs/docgen-scan.md +28 -27
  8. package/rules/doc-files/js/docs/index.md +15 -16
  9. package/rules/npm-module/js/docs/header_doc_pointer.md +23 -13
  10. package/rules/python/docs/main.md +10 -10
  11. package/rules/rust/docs/main.md +7 -7
  12. package/rules/text/docs/main.md +8 -8
  13. package/rules/text/js/docs/cspell-fix.md +8 -8
  14. package/rules/text/js/docs/index.md +0 -1
  15. package/scripts/lib/docs/run-lint.md +6 -6
  16. package/scripts/lib/fix/docs/analyze-escalation.md +28 -15
  17. package/scripts/lib/fix/docs/orchestrator.md +14 -15
  18. package/scripts/lib/fix/docs/t0.md +8 -7
  19. /package/rules/{js-lint → js}/coverage/coverage.mjs +0 -0
  20. /package/rules/{js-lint → js}/docs/fix.md +0 -0
  21. /package/rules/{js-lint → js}/docs/index.md +0 -0
  22. /package/rules/{js-lint → js}/docs/main.md +0 -0
  23. /package/rules/{js-lint → js}/js/check.mjs +0 -0
  24. /package/rules/{js-lint → js}/js/data/tooling/knip-canonical.json +0 -0
  25. /package/rules/{js-lint → js}/js/data/tooling/oxlint-canonical.json +0 -0
  26. /package/rules/{js-lint → js}/js/docs/check.md +0 -0
  27. /package/rules/{js-lint → js}/js/docs/index.md +0 -0
  28. /package/rules/{js-lint → js}/js/docs/lint-findings.md +0 -0
  29. /package/rules/{js-lint → js}/js/docs/tooling.md +0 -0
  30. /package/rules/{js-lint → js}/js/docs/utils_imports.md +0 -0
  31. /package/rules/{js-lint → js}/js/lint-findings.mjs +0 -0
  32. /package/rules/{js-lint → js}/js/tooling.mjs +0 -0
  33. /package/rules/{js-lint → js}/js/utils_imports.mjs +0 -0
  34. /package/rules/{js-lint/js-lint.mdc → js/js.mdc} +0 -0
  35. /package/rules/{js-lint → js}/main.mjs +0 -0
  36. /package/rules/{js-lint → js}/meta.json +0 -0
  37. /package/rules/{js-lint → js}/policy/jscpd/jscpd.rego +0 -0
  38. /package/rules/{js-lint → js}/policy/jscpd/target.json +0 -0
  39. /package/rules/{js-lint → js}/policy/jscpd/template/.jscpd.json.snippet.json +0 -0
  40. /package/rules/{js-lint → js}/policy/lint_js_yml/lint_js_yml.rego +0 -0
  41. /package/rules/{js-lint → js}/policy/lint_js_yml/target.json +0 -0
  42. /package/rules/{js-lint → js}/policy/lint_js_yml/template/lint-js.yml.snippet.yml +0 -0
  43. /package/rules/{js-lint → js}/policy/package_json/package_json.rego +0 -0
  44. /package/rules/{js-lint → js}/policy/package_json/target.json +0 -0
  45. /package/rules/{js-lint → js}/policy/package_json/template/package.json.snippet.json +0 -0
  46. /package/rules/{js-lint → js}/policy/vscode_extensions/target.json +0 -0
  47. /package/rules/{js-lint → js}/policy/vscode_extensions/template/extensions.json.snippet.json +0 -0
  48. /package/rules/{js-lint → js}/policy/vscode_extensions/vscode_extensions.rego +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Changelog
2
2
 
3
+ ## [12.8.1] - 2026-06-22
4
+
5
+ ### Changed
6
+
7
+ - ♻️ refactor(docs): Оновлення логіки та формату в документації
8
+
3
9
  ## [12.8.0] - 2026-06-21
4
10
 
5
11
  ### Added
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nitra/cursor",
3
- "version": "12.8.0",
3
+ "version": "12.8.1",
4
4
  "description": "CLI для завантаження cursor-правил (префікс n-) у локальний репозиторій",
5
5
  "keywords": [
6
6
  "cli",
@@ -115,9 +115,11 @@ export function scanOrphanedDocs(root) {
115
115
  }
116
116
  }
117
117
 
118
- /** Обходить дерево, шукаючи docs/-директорії для orphan-перевірки.
118
+ /**
119
+ * Обходить дерево, шукаючи docs/-директорії для orphan-перевірки.
119
120
  * docs/ — входимо завжди (батьківська пройшла ignore-перевірку);
120
- * інші — перевіряємо через isDocgenIgnored. */
121
+ * інші — перевіряємо через isDocgenIgnored.
122
+ */
121
123
  function walk(dir) {
122
124
  let entries
123
125
  try {
@@ -17,17 +17,17 @@ docgen:
17
17
  1. Витягує факт-лист з вмісту файлу.
18
18
  2. Визначає мову файлу за розширенням.
19
19
  3. Якщо мова — Rust, виконує аналіз Rust-коду:
20
- а. Витягує модульний заголовок (`//!`).
21
- б. Визначає публічні експорти (структури, функції, класи), виходячи з префіксів `pub` та атрибутів експозиції.
22
- в. Визначає локальні (приватні) символи, які не є публічними.
23
- г. Класифікує імпорти (`use`) як стандартні, зовнішні чи внутрішні.
24
- д. Визначає поведінкові маркери (наприклад, чи є код лише для читання, чи обробляє помилки).
20
+ а. Витягує модульний заголовок (`//!`).
21
+ б. Визначає публічні експорти (структури, функції, класи), виходячи з префіксів `pub` та атрибутів експозиції.
22
+ в. Визначає локальні (приватні) символи, які не є публічними.
23
+ г. Класифікує імпорти (`use`) як стандартні, зовнішні чи внутрішні.
24
+ д. Визначає поведінкові маркери (наприклад, чи є код лише для читання, чи обробляє помилки).
25
25
  4. Якщо мова — JavaScript/TypeScript/MJS, виконує аналіз JS-коду:
26
- а. Витягує заголовок файлу.
27
- б. Визначає публічні експорти з їхнім JSDoc.
28
- в. Класифікує імпорти як стандартні, npm або внутрішні.
29
- г. Визначає локальні символи (службові функції).
30
- д. Визначає поведінкові маркери (наприклад, чи є код лише для читання, чи звертається до мережі).
26
+ а. Витягує заголовок файлу.
27
+ б. Визначає публічні експорти з їхнім JSDoc.
28
+ в. Класифікує імпорти як стандартні, npm або внутрішні.
29
+ г. Визначає локальні символи (службові функції).
30
+ д. Визначає поведінкові маркери (наприклад, чи є код лише для читання, чи звертається до мережі).
31
31
  5. Усі аналізи свідомо ігнорують шляхи: `.github`, `.git`, `node_modules`, `base/`, `ua/`, `.firebase`.
32
32
  6. Повертає структуру фактів, що містить інформацію про файл.
33
33
 
@@ -10,21 +10,21 @@ docgen:
10
10
 
11
11
  ## Огляд
12
12
 
13
- Модуль обробляє файли, витягуючи їхній зміст для генерації документації. Він порівнює цю документацію з оцінками сильної модільної системи. Під час роботи відбувається кешування у межах прогону. Модуль збирає метрики якості згенерованої документації та зберігає фінальний звіт у `report.json`, який спирається на конфігурації, визначені в `report.json`.
13
+ Файл аналізує надані файли коду, створюючи документацію та оцінюючи її якість відповідно до конфігурації, що міститься у report.json. Процес збирає результати для кожного файлу, використовуючи кешування у межах прогону на основі вмісту джерела та вже згенерованої документації. У кінці процес агрегує дані та зберігає повний звіт у report.json, а також виводить його у консоль.
14
14
 
15
15
  ## Поведінка
16
16
 
17
17
  1. Зчитує список файлів для аналізу з аргументів командного рядка.
18
18
  2. Для кожного файлу зчитує його вміст.
19
- 3. Генерує документацію для файлу, використовуючи кеш за вмістом джерела.
20
- 4. Якщо документація згенерована, перевіряє її якість за встановленим порогом.
21
- 5. Якщо якість документації відповідає порогу, передає вміст джерела та згенеровану документацію для оцінки сильною моделлю.
22
- 6. Оцінювач повертає вердикт (точний, загальний, неточний) з обґрунтуванням.
23
- 7. Зберігає результати для кожного файлу.
24
- 8. Агрегує результати: підраховує загальну кількість файлів, успішно згенерованих, пройшли перевірку, а також розподіл вердиктів серед тих, що пройшли перевірку.
25
- 9. Формує звіт, який включає конфігурацію, підрахунки та відсотки помилкових спрацьовувань.
26
- 10. Зберігає фінальний звіт у файл `report.json` у каталозі кешу.
27
- 11. Виводить консольний звіт про результати вимірювання.
19
+ 3. Генерує документацію для файлу, використовуючи кешування за вмістом джерела.
20
+ 4. Якщо генерація документації успішна і отриманий бал перевищує встановлений поріг, переходить до етапу оцінки.
21
+ 5. Якщо бал не перевищує порогу, файл вважається "degraded" (зниженою якістю) і не підлягає подальшій оцінці.
22
+ 6. Якщо бал перевищує поріг, документація передається для оцінки потужній моделі, використовуючи кешування за вмістом джерела та згенерованою документацією.
23
+ 7. Оцінка повертає вердикт ("accurate", "generic" або "inaccurate"), впевненість та причину.
24
+ 8. Збираються результати для кожного файлу.
25
+ 9. Після обробки всіх файлів агрегуються результати: підраховуються загальні показники (кількість файлів, помилки генерації, кількість пройшлих тестів, розподіл вердиктів).
26
+ 10. Зберігається звіт у файл `report.json` у каталозі кешу.
27
+ 11. Виводиться консольний звіт про результати вимірювання.
28
28
 
29
29
  ## Гарантії поведінки
30
30
 
@@ -3,30 +3,32 @@ type: JS Module
3
3
  title: docgen-judge.mjs
4
4
  resource: npm/rules/doc-files/js/docgen-judge.mjs
5
5
  docgen:
6
- crc: c6ab093a
6
+ crc: fcbf72fa
7
7
  model: omlx/gemma-4-e4b-it-OptiQ-4bit
8
8
  score: 100
9
9
  ---
10
10
 
11
- Модуль оцінює згенеровану документацію, порівнюючи її з вихідним файлом за допомогою великої мовної моделі. Це дозволяє визначити відповідність та якість документації. Модуль надає функції для запуску оцінки (`judgeDoc`, `judgeFailsDoc`), отримання результатів (`parseDocVerdict`), визначення моделі (`JUDGE_MODEL`), перевірки статусу оцінювача (`JUDGE_ENABLED`) та отримання рівня впевненості (`JUDGE_CONFIDENCE`).
11
+ ## Огляд
12
+
13
+ Модуль реалізує механізм оцінки якості документації. Він визначає модель для оцінки за допомогою `JUDGE_MODEL`, перевіряє статус активності гейту через `JUDGE_ENABLED` та встановлює поріг впевненості за допомогою `JUDGE_CONFIDENCE`. Модуль отримує, парсить та визначає фінальний статус документації, викликаючи `judgeDoc` для отримання висновків, а також може використовувати `judgeFailsDoc` для визначення провалу.
12
14
 
13
15
  ## Поведінка
14
16
 
15
17
  JUDGE_MODEL — Вказує модель, яку використовує суддя для оцінки документації.
16
- JUDGE_ENABLED — Позначає, чи активна функціональність судді.
17
- JUDGE_CONFIDENCE — Визначає мінімальний рівень впевненості, необхідний для позначення документації як деградованої.
18
- parseDocVerdict — Витягує та валідує об'єкт з оцінкою документації з сирого текстового виводу судді.
19
- judgeDoc — Виконує оцінку згенерованої документації проти вмісту вихідного файлу за допомогою великої мовної моделі.
18
+ JUDGE_ENABLED — Позначає, чи активний семантичний гейт судді.
19
+ JUDGE_CONFIDENCE — Визначає мінімальну впевненість, необхідну для позначення документації як деградованої.
20
+ parseDocVerdict — Витягує та валідує об'єкт оцінки з сирого текстового виводу судді.
21
+ judgeDoc — Зіставляє вміст вихідного файлу та згенеровану документацію, щоб отримати оцінку від судді.
20
22
  judgeFailsDoc — Визначає, чи слід вважати документацію деградованою на основі оцінки судді.
21
23
 
22
24
  ## Публічний API
23
25
 
24
26
  JUDGE_MODEL — Визначає модель-суддю як `N_CLOUD_MIN_MODEL` (хмарний мінімальний рівень).
25
- JUDGE_ENABLED — Автоматично вмикає механізм судді, якщо обрано `N_CLOUD_MIN_MODEL`.
26
- JUDGE_CONFIDENCE — Встановлює мінімальний рівень впевненості, необхідний для позначення документа як погіршеного (degraded) за неточним вердиктом.
27
- parseDocVerdict — Витягує та перевіряє структуру вердикту у форматі JSON із сирих даних від великої мовної моделі.
28
- judgeDoc — Оцінює згенерований документ потужною моделлю, порівнюючи його з вихідним джерелом.
29
- judgeFailsDoc — Визначає, чи повинен документ бути позначений як погіршений (degraded) на підставі вердикту, якщо він неточний і має достатню впевненість.
27
+ JUDGE_ENABLED — Автоматично вмикає механізм суддівства, якщо обрано `N_CLOUD_MIN_MODEL`.
28
+ JUDGE_CONFIDENCE — Встановлює мінімальний рівень впевненості для позначення документа як погіршеного (degraded) через неточність.
29
+ parseDocVerdict — Витягує та перевіряє JSON-вердикт із відповіді великої мовної моделі.
30
+ judgeDoc — Оцінює згенерований документ потужною моделлю порівняно з оригінальним джерелом.
31
+ judgeFailsDoc — Визначає, чи повинен документ бути позначений як погіршений, якщо вердикт є `inaccurate` і впевненість достатня.
30
32
 
31
33
  ## Гарантії поведінки
32
34
 
@@ -3,47 +3,48 @@ type: JS Module
3
3
  title: docgen-scan.mjs
4
4
  resource: npm/rules/doc-files/js/docgen-scan.mjs
5
5
  docgen:
6
- crc: f01465d8
6
+ crc: 563b7722
7
7
  model: omlx/gemma-4-e4b-it-OptiQ-4bit
8
8
  score: 100
9
9
  ---
10
10
 
11
11
  ## Огляд
12
12
 
13
- Модуль аналізує кодову базу та пов'язану з нею документацію. Він визначає, які файли є джерелами за допомогою `isSourceFile` та знаходить відповідні шляхи документації за допомогою `docPathForSource`. Модуль перевіряє, чи не залишилися без зв'язку (сиротами) документи, використовуючи `scanOrphanedDocs`, та сканує файли документації за допомогою `scanForDocFiles`. Для роботи з кореневими каталогами використовується `resolveRoot`. Усі операції виконуються з механізмом перехоплення помилок (fail-safe), при цьому при певних збоях повертається `null` замість викидання винятків.
13
+ Модуль визначає, які файли є кодовим джерелом за допомогою `isSourceFile`. Він обчислює відповідні шляхи до Markdown-документів для коду за допомогою `docPathForSource`. Модуль ідентифікує потенційні кандидати для документування за допомогою `isDocCandidate` та надає опис файлу за допомогою `describeFile`. Для аналізу файлової системи використовуються `scanOrphanedDocs` для пошуку "сирітських" документів та `scanForDocFiles` для сканування файлів. Модуль також може визначати кореневий каталог за допомогою `resolveRoot` та виконувати сканування файлів документації через `runDocFilesScanCli` або перевірку через `runDocFilesCheckCli`.
14
14
 
15
15
  ## Поведінка
16
16
 
17
17
  isSourceFile визначає, чи є ім'я файлу кодовим джерелом для документування.
18
- docPathForSource обчислює шлях до відповідного MD-документа для заданого кодового файлу.
19
- isDocCandidate визначає, чи підлягає певний файл документуванню, враховуючи розширення, статус тесту та ігнорування.
20
- describeFile описує кодовий файл, надаючи його шлях, шлях до документації та стан застарілості.
21
- scanOrphanedDocs знаходить MD-документи, які посилаються на кодові файли, що більше не існують.
22
- scanForDocFiles рекурсивно обходить дерево і повертає список кодових файлів із їхнім станом застарілості, відфільтрований за ігноруванням Git.
23
- resolveRoot парсить аргументи для визначення абсолютного кореня обходу, використовуючи поточну робочу директорію за замовчуванням.
18
+ docPathForSource обчислює шлях до відповідного md-документа для заданого кодового файлу.
19
+ isDocCandidate визначає, чи є файл кандидатом на документування, враховуючи розширення, статус тесту та ігнорування.
20
+ describeFile описує кодовий файл, надаючи шлях джерела, шлях доки та стан застарілості.
21
+ scanOrphanedDocs знаходить md-документи, які посилаються на джерела, що більше не існують.
22
+ scanForDocFiles рекурсивно сканує дерево і повертає список кодових файлів зі станом застарілості, відфільтрований за ігноруванням Git.
23
+ resolveRoot визначає абсолютний корінь обходу, використовуючи аргументи або поточний робочий каталог.
24
24
  runDocFilesScanCli сканує дерево і друкує JSON-масив усіх кодових файлів зі станом застарілості.
25
- runDocFilesCheckCli виконує перевірку застарілості, підтримуючи режими для перевірки одного файлу, Git-гейту або звітів про знижену якість.
25
+ runDocFilesCheckCli виконує перевірку застарілості, що може бути використана для хуків, Git-гейтів або ручного переліку шляхів.
26
26
 
27
27
  ## Публічний API
28
28
 
29
- isSourceFile — визначає, чи є файл кодовим джерелом для створення документації.
30
- docPathForSource — визначає шлях до відповідного MD-документа, розміщений у теці `docs/` відносно коду.
31
- isDocCandidate — вирішує, чи повинен кодовий файл бути документований: має правильне розширення, не є тестом, не ігнорується та не є системним документом.
32
- describeFile — надає опис кодового файлу, включаючи його шлях, шлях до документації та статус застарілості.
33
- scanOrphanedDocs — шукає документи, які посилаються на кодові файли, що більше не існують, перевіряючи лише згенеровані файли.
34
- scanForDocFiles — рекурсивно збирає всі кодові файли з дерева, визначаючи їхній статус застарілості, і відсіюючи ті, що ігноруються через `.gitignore`.
35
- resolveRoot — встановлює кореневу директорію для сканування, використовуючи аргумент командного рядка або поточну робочу директорію.
36
- runDocFilesScanCli — сканує дерево та виводить JSON-масив усіх кодових файлів зі статусом застарілості, дозволяючи фільтрувати лише застарілі або всі файли.
37
- runDocFilesCheckCli — виконує перевірку застарілості для використання у хуках та командному інтерфейсі.
38
-
39
- Режими:
40
- --hook — перевіряє один файл, отриманий з JSON через стандартний ввід.
41
- --git — порівнює файли у `git diff` та блокує процес, якщо знайдено більше за встановлений поріг застарілих файлів.
42
- --degraded — виводить звіт про документи з низьким показником якості.
43
- <paths…> — обробляє лише вказані шляхи-джерела.
44
-
45
- Вихідний код 2 — вказує на знаходження застарілих файлів (для блокування хука).
46
- Вихідний код 0 — вказує на відсутність застарілих файлів або проходження перевірки згідно з порогом.
29
+ isSourceFile — визначає, чи є файл вихідним кодом для створення документації.
30
+ docPathForSource — визначає шлях до файлу документації, розміщений у теці `docs/` відносно коду.
31
+ isDocCandidate — вирішує, чи повинен кодовий файл бути документований (правильне розширення, не тест, не ігнорується, не системний).
32
+ describeFile — надає опис кодового файлу, включаючи його шлях та статус застарілості.
33
+ scanOrphanedDocs — знаходить файли документації, які посилаються на вихідний код, що більше не існує.
34
+ scanForDocFiles — рекурсивно шукає всі кодові файли у заданому дереві та визначає їхній статус застарілості.
35
+ resolveRoot — встановлює кореневу директорію для сканування, використовуючи аргумент командного рядка або поточну директорію.
36
+ runDocFilesScanCli — сканує дерево та виводить JSON-масив усіх кодових файлів зі статусом застарілості.
37
+ runDocFilesCheckCli — виконує перевірку застарілості файлів для хуків та командного інтерфейсу.
38
+
39
+ **Режими роботи:**
40
+ `--hook` — перевіряє один файл, отриманий із вхідного JSON, у контексті хука.
41
+ `--git` — порівнює файли у `git diff` та блокує виконання, якщо знайдено застарілі файли, перевищуючи встановлений ліміт.
42
+ `--degraded`генерує звіт про файли документації, які не відповідають встановленому рівню якості.
43
+ `<paths…>` — обробляє лише вказані явно шляхи-джерела.
44
+
45
+ **Коди виходу:**
46
+ Вихід 2 — вказує на знаходження застарілих файлів (для блокування хука).
47
+ Вихід 0 — вказує на відсутність застарілих файлів або проходження перевірки згідно з лімітом.
47
48
 
48
49
  ## Гарантії поведінки
49
50
 
@@ -6,20 +6,19 @@ resource: npm/rules/doc-files/js/
6
6
 
7
7
  # npm/rules/doc-files/js
8
8
 
9
- | Файл | Тип |
10
- | ------------------------------------------------------- | --------- |
11
- | [docgen-crc.mjs](docgen-crc.md) | JS Module |
9
+ | Файл | Тип |
10
+ |---|---|
11
+ | [docgen-crc.mjs](docgen-crc.md) | JS Module |
12
12
  | [docgen-extract-anchors.mjs](docgen-extract-anchors.md) | JS Module |
13
- | [docgen-extract.mjs](docgen-extract.md) | JS Module |
14
- | [docgen-files-batch.mjs](docgen-files-batch.md) | JS Module |
15
- | [docgen-gen.mjs](docgen-gen.md) | JS Module |
16
- | [docgen-ignore.mjs](docgen-ignore.md) | JS Module |
17
- | [docgen-judge-measure.mjs](docgen-judge-measure.md) | JS Module |
18
- | [docgen-judge.mjs](docgen-judge.md) | JS Module |
19
- | [docgen-prompts.mjs](docgen-prompts.md) | JS Module |
20
- | [docgen-scan.mjs](docgen-scan.md) | JS Module |
21
- | [lint.mjs](lint.md) | JS Module |
22
- | [run-lint.mjs](run-lint.md) | JS Module |
23
- | [units-js.mjs](units-js.md) | JS Module |
24
- | [units-rs.mjs](units-rs.md) | JS Module |
25
- | [units.mjs](units.md) | JS Module |
13
+ | [docgen-extract.mjs](docgen-extract.md) | JS Module |
14
+ | [docgen-files-batch.mjs](docgen-files-batch.md) | JS Module |
15
+ | [docgen-gen.mjs](docgen-gen.md) | JS Module |
16
+ | [docgen-ignore.mjs](docgen-ignore.md) | JS Module |
17
+ | [docgen-judge-measure.mjs](docgen-judge-measure.md) | JS Module |
18
+ | [docgen-judge.mjs](docgen-judge.md) | JS Module |
19
+ | [docgen-prompts.mjs](docgen-prompts.md) | JS Module |
20
+ | [docgen-scan.mjs](docgen-scan.md) | JS Module |
21
+ | [run-lint.mjs](run-lint.md) | JS Module |
22
+ | [units-js.mjs](units-js.md) | JS Module |
23
+ | [units-rs.mjs](units-rs.md) | JS Module |
24
+ | [units.mjs](units.md) | JS Module |
@@ -3,28 +3,38 @@ type: JS Module
3
3
  title: header_doc_pointer.mjs
4
4
  resource: npm/rules/npm-module/js/header_doc_pointer.mjs
5
5
  docgen:
6
- crc: d96a2957
6
+ crc: 90fc46dc
7
+ model: omlx/gemma-4-e4b-it-OptiQ-4bit
7
8
  score: 100
8
9
  ---
9
10
 
10
- Файл виконує перевірку документації для модулів. Сканує директорії npm/rules та npm/skills. Перевіряє наявність файлів docs/<stem>.md у піддиректоріях правил/скілів. Перевіряє, чи містить відповідні js-файли не більше одного рядка JSDoc. У разі перевищення ліміту, генерує звіт про порушення.
11
+ ## Огляд
12
+
13
+ Модуль валідує відповідність контракту документації для файлів `.mjs` у сегментах `npm/rules` та `npm/skills`. Він виявляє порушення, якщо для файлу `.mjs` існує відповідний файл `docs/<ім'я>.md`, а його JSDoc-блок містить більше одного непорожнього рядка.
11
14
 
12
15
  ## Поведінка
13
16
 
14
- 1. Сканувати директорії npm/rules та npm/skills.
15
- 2. Для кожної директорії перевіряти піддиректорії правил/скілів.
16
- 3. Для кожного знайденого js-файлу перевіряти наявність файлу docs/<stem>.md.
17
- 4. Якщо файл docs/<stem>.md існує, перевіряти, чи містить module-level JSDoc не більше одного непорожного рядка.
18
- 5. У разі перевищення ліміту, зарепортувати порушення.
19
- 6. Повертати код виходу репортера.
17
+ 1. Викликається функція check з корінням репозиторію як аргументом.
18
+ 2. Ініціалізується репортер для фіксації порушень.
19
+ 3. Для кожного з сегментів 'npm/rules' та 'npm/skills' виконується наступне:
20
+ а. Перевіряється існування відповідного базового сегмента.
21
+ б. Для кожного підсегмента (правила/скіла) у базовому сегменті:
22
+ i. Перевіряється існування каталогу `js/` у підсегменті.
23
+ ii. Для кожного файлу `.mjs` у каталозі `js/`:
24
+ а. Перевіряється, чи є файл звичайним вихідним файлом (не тест).
25
+ б. Визначається ім'я без розширення файлу.
26
+ в. Перевіряється існування файлу `docs/<ім'я>.md` у каталозі `js/docs/`.
27
+ г. Якщо файл `docs/<ім'я>.md` існує:
28
+ i. Зчитується вміст файлу `.mjs`.
29
+ ii. Визначається перша не-жадібна JSDoc-блока в файлі.
30
+ iii. Підраховується кількість непорожніх рядків у тілі цього JSDoc-блока.
31
+ iv. Якщо кількість непорожніх рядків перевищує 1, фіксується порушення, оскільки `docs/<ім'я>.md` вже описує поведінку, а JSDoc має бути лише вказівником.
32
+ 4. Повертається код виходу репортера.
20
33
 
21
34
  ## Публічний API
22
35
 
23
- - check — сканує файли `npm/rules/*/js/*.mjs` та `npm/skills/*/js/*.mjs`.
24
- - Якщо існує `docs/<stem>.md`, модуль повинен мати посилання на JSDoc (не наратив).
25
- - Якщо `docs` відсутній, обмеження не застосовуються.
36
+ check — перевіряє файли `.mjs` у директоріях `npm/rules/*\/js/` та `npm/skills/*\/js/`. Якщо поруч є відповідний файл `docs/<stem>.md`, вимагає, щоб JSDoc на рівні модуля був посиланням (не описом); якщо `docs` відсутній, обмежень немає.
26
37
 
27
38
  ## Гарантії поведінки
28
39
 
29
- - Read-only: файл не виконує операцій запису у файлову систему.
30
- - Не звертається до мережі.
40
+ - Read-only: не виконує операцій запису (ФС/БД).
@@ -3,28 +3,28 @@ type: JS Module
3
3
  title: main.mjs
4
4
  resource: npm/rules/python/main.mjs
5
5
  docgen:
6
- crc: 8ceba96a
6
+ crc: d8a3aa1f
7
7
  model: omlx/gemma-4-e4b-it-OptiQ-4bit
8
8
  score: 90
9
9
  ---
10
10
 
11
11
  ## Огляд
12
12
 
13
- Виконує логіку `lint-python` за правилом `python.mdc` для забезпечення якості коду Python. Якщо файл `pyproject.toml` відсутній у корені, виконання завершується з кодом 0. Якщо файл присутній, але `uv` не знайдено у системному шляху, це вважається помилкою, оскільки `uv` є єдиним дозволеним пакет-менеджером (без Poetry). Для роботи необхідно виконати `uv lock --check` для підтвердження актуальності файлу блокування та `uv sync --frozen` для створення середовища, що відповідає `uv.lock` (детальніше про `uv` на https://docs.astral.sh/uv/). Опціональні лінтери запускаються лише за умови їх доступності через `uv run`. Запускаються `ruff` у режимі автоматичного виправлення (`--fix`) та форматування, а також `mypy` для статичного аналізу коду, використовуючи канонічний патерн серіалізації через `runStandardLint`.
13
+ Реалізує логіку запуску `lint-python` за правилом `python.mdc` на базі [uv](https://docs.astral.sh/uv/). Якщо `pyproject.toml` у корені відсутній, процес завершується з кодом виходу 0. Якщо файл присутній, але інструмент `uv` не знайдено в PATH, це розглядається як помилка. Обов'язкові кроки включають перевірку актуальності lock-файлу (`uv lock --check`) та синхронізацію середовища (`uv sync --frozen`). Опційні лінтери (`ruff`, `mypy`) запускаються лише за умови їх доступності через `uv run`. `ruff` виконується у режимі автоматичного виправлення (`--fix`) для мутації робочого дерева та для форматування. Цей підхід відповідає канону патерну `lint-*` (серіалізація через `runStandardLint`, без прямого `withLock`).
14
14
 
15
15
  ## Поведінка
16
16
 
17
- run виконує стандартну перевірку на основі контексту.
18
- runLintPythonSteps виконує послідовність кроків лінтування Python, включаючи перевірку `pyproject.toml`, виконання `uv lock --check` та `uv sync --frozen`, а також запуск опціональних лінтерів (`ruff`, `mypy`) через `uv run`.
19
- runLintPython запускає послідовність кроків лінтування Python, використовуючи механізм стандартного лінтування.
20
- lint оркеструє запуск `runLintPython` для аналізу всього проєкту.
17
+ run виконує стандартну перевірку для правила, використовуючи контекст прогону.
18
+ runLintPythonSteps виконує послідовність кроків лінтування Python, перевіряючи наявність `pyproject.toml` та виконуючи команди `uv lock --check` та `uv sync --frozen`, а також запускаючи опціональні лінтери (`ruff`, `mypy`) через `uv run` на базі https://docs.astral.sh/uv/.
19
+ runLintPython запускає послідовність кроків лінтування Python, серіалізуючи її через стандартний механізм перевірки.
20
+ lint делегує виклик до `runLintPython`, забезпечуючи можливість запуску в режимі, що не мутує робоче дерево.
21
21
 
22
22
  ## Публічний API
23
23
 
24
- run — Основна точка входу для виконання правил, що включає перевірку логіки застосування (JS-concerns policy mdc-refs) та виконання лінтингу.
25
- runLintPythonSteps — Виконує внутрішні етапи лінтингу для Python без збереження логів.
26
- runLintPython — Публічний інтерфейс для запуску лінтингу Python, що забезпечує унікальність виконання через блокування та аналіз стану репозиторію.
27
- lint — Координатор, який ініціює запуск лінтингу Python, делегуючи це `runLintPython`.
24
+ run — Основна точка входу для виконання правил, яка перевіряє логіку застосування (JS-занепокложення $\rightarrow$ політика $\rightarrow$ mdc-посилання) та запускає перевірку коду (uv/ruff/mypy).
25
+ runLintPythonSteps — Виконує внутрішні етапи перевірки Python-коду без збереження логу.
26
+ runLintPython — Публічний інтерфейс для запуску перевірки Python-коду, який гарантує унікальність виконання через блокування та аналіз стану Git-дерева.
27
+ lint — Адаптер, що керує запуском перевірки Python-коду, делегуючи цю роботу `runLintPython`.
28
28
 
29
29
  ## Гарантії поведінки
30
30
 
@@ -3,24 +3,24 @@ type: JS Module
3
3
  title: main.mjs
4
4
  resource: npm/rules/rust/main.mjs
5
5
  docgen:
6
- crc: a3060168
6
+ crc: 93c44fd7
7
7
  model: omlx/gemma-4-e4b-it-OptiQ-4bit
8
- score: 90
8
+ score: 100
9
9
  ---
10
10
 
11
11
  ## Огляд
12
12
 
13
- Модуль надає функції для роботи з кодом Rust. Функція `run` виконує повний аналіз коду, включаючи перевірку відповідності політиці MDC. Функція `lint` здійснює статичний аналіз коду. Обидві функції можуть ініціювати форматування та аналіз за допомогою `cargo`.
13
+ Модуль надає інструменти для забезпечення якості коду Rust. Він дозволяє виконати перевірку коду на відповідність заданим Lint-правилам або запустити повну оркестрацію форматування та аналізу коду через `cargo`. Функціонал реалізується через публічні функції `run` та `lint`.
14
14
 
15
15
  ## Поведінка
16
16
 
17
- run виконує перевірку коду Rust, застосовуючи політику та посилання MDC.
18
- lint запускає оркестрацію перевірки Rust, виконуючи `rustfmt` та `clippy` через `cargo`.
17
+ run виконує перевірку коду Rust відповідно до політик.
18
+ lint запускає оркестрацію перевірки коду Rust, використовуючи `cargo` для виконання `rustfmt` та `clippy`.
19
19
 
20
20
  ## Публічний API
21
21
 
22
- run — точка входу для виконання правила, що перевіряє логіку, пов'язану з JS-зацікавленостями, політикою та посиланнями MDC.
23
- lint — точка входу для запуску лінтера Rust-коду.
22
+ run — виконує основну логіку правила, включаючи перевірку аспектів застосування, логіки та посилань.
23
+ lint — забезпечує точку входу для статичного аналізу коду Rust.
24
24
 
25
25
  ## Гарантії поведінки
26
26
 
@@ -3,26 +3,26 @@ type: JS Module
3
3
  title: main.mjs
4
4
  resource: npm/rules/text/main.mjs
5
5
  docgen:
6
- crc: deba6201
6
+ crc: 8a0470de
7
7
  model: omlx/gemma-4-e4b-it-OptiQ-4bit
8
8
  score: 90
9
9
  ---
10
10
 
11
11
  ## Огляд
12
12
 
13
- CLI-обгортка над канонічним `lint-text` (text.mdc) забезпечує послідовний пайплайн перевірок для текстових файлів. Вона автоматично встановлює необхідні інструменти (`shellcheck`, `dotenv-linter`) через `ensureTool` (brew/scoop/GitHub Release per-platform) та перевіряє наявність `patch` для авто-фіксу. Пайплайн послідовно виконує: перевірку правопису (`cspell` з `@nitra/cspell-dict`), синтаксичну перевірку скриптів (`shellcheck` з авто-фіксом), перевірку конфігураційних файлів (`dotenv-linter` з авто-фіксом), форматування Markdown (`markdownlint-cli2` з авто-фіксом) та валідацію схем (`v8r`). Перший ненульовий код, отриманий у ланцюжку, повертається як код виходу, припиняючи подальші кроки. Функціональність експортується як `runLintTextCli` та викликається через `n-cursor lint text` (оркестраторний адаптер `lint`). Конфігурації, на які спирається код: meta.json.
13
+ Цей модуль є CLI-обгорткою над канонічним `lint-text` (text.mdc) та викликається через `n-cursor lint text` (оркестраторний адаптер `lint`). Він автоматично встановлює необхідні інструменти (`shellcheck`, `dotenv-linter`) через `ensureTool` (brew/scoop/GitHub Release per-platform) та перевіряє наявність `patch` (для авто-фіксу shellcheck). Функція `runLintTextCli` послідовно виконує: 1) перевірку правопису з `@nitra/cspell-dict` (`cspell .`); 2) авто-фікс та фінальну перевірку `.sh` файлів (`shellcheck`); 3) авто-фікс та фінальну перевірку `.env*` файлів (`dotenv-linter`); 4) авто-фікс Markdown-документів (`markdownlint-cli2 --fix "**\/*.md" "**\/*.mdc"`); 5) schema-валідацію JSON/YAML/TOML через `v8r`. При першому ненульовому коді з ланцюжка повертається код виходу, і наступні кроки не запускаються. Конфігурації, на які спирається код: meta.json.
14
14
 
15
15
  ## Поведінка
16
16
 
17
- run: Викликається як check-поверхня, виконуючи стандартне правило.
18
- runLintTextCli: Виконує повний ланцюжок перевірок для тексту: `cspell`, `shellcheck`, `dotenv-linter`, `markdownlint-cli2` та валідацію схем через `v8r`. Автоматично встановлює `shellcheck` та `dotenv-linter` при першому прогоні. Повертає код першого кроку, що не пройшов.
19
- lint: Делегує виконання повного ланцюжка перевірок тексту через `runLintTextCli`, дозволяючи вказати режим лише детектування без авто-фіксу.
17
+ run виконує стандартну перевірку, використовуючи контекст прогону.
18
+ runLintTextCli виконує повний ланцюжок перевірок тексту (cspell, shellcheck, dotenv-linter, markdownlint, v8r), автоматично встановлюючи необхідні інструменти, і повертає код першого порушення.
19
+ lint делегує виклик `runLintTextCli` для виконання повного ланцюжка перевірок тексту.
20
20
 
21
21
  ## Публічний API
22
22
 
23
- run — Точка входу правила, що виконує перевірку логіки (JS-занепокложення політика посилання text.mdc).
24
- runLintTextCli — Публічна команда для CLI, яка серіалізує завдання лінтування з блокуванням та усуває дублікати на основі стану репозиторію.
25
- lint — Адаптер, що керує запуском лінтування тексту через `n-cursor lint text`, делегуючи роботу `runLintTextCli`.
23
+ run — Основна точка входу правила, що виконує перевірку логіки (JS-занепокоєння $\rightarrow$ політика $\rightarrow$ маркування повідомлень).
24
+ runLintTextCli — Публічний інтерфейс командного рядка для лінтингу тексту, що серіалізує через блокування та усуває дублікати на основі стану Git.
25
+ lint — Координатор, що передає завдання лінтингу тексту до `runLintTextCli`.
26
26
 
27
27
  ## Гарантії поведінки
28
28
 
@@ -3,26 +3,26 @@ type: JS Module
3
3
  title: cspell-fix.mjs
4
4
  resource: npm/rules/text/js/cspell-fix.mjs
5
5
  docgen:
6
- crc: 7b40e8f9
6
+ crc: e00c233e
7
7
  model: omlx/gemma-4-e4b-it-OptiQ-4bit
8
8
  score: 100
9
9
  ---
10
10
 
11
11
  ## Огляд
12
12
 
13
- Виявляє невідомі слова у тексті у ланцюжку lint-text із omlx-класифікацією (спека docs/specs/2026-06-15-opportunistic-llm-fix-tier.md), використовуючи конфігурації .cspell.json та meta.json. Класифікує знахідки за схемою omlx-класифікація, дописуючи валідні терміни до словника .cspell.json. Ймовірні одруки залишаються списком на рев'ю, оскільки fix-режим не переписує файли. Завершує процес повторною перевіркою, щоб визначити, чи залишилися нерозкласифіковані або ймовірні одруки. Перехоплює помилки (fail-safe), не кидаючи винятків назовні.
13
+ Модуль інтегрує cspell у ланцюжку lint-text для класифікації невідомих слів згідно зі схемою docs/specs/2026-06-15-opportunistic-llm-fix-tier.md. Він виявляє невідомі слова, класифікує їх за допомогою LLM у межах omlx-класифікації. Валідні слова автоматично дописуються до `.cspell.json#words` (відповідно до конфігурацій .cspell.json та meta.json). Невалідні знахідки залишаються для ручного рев'ю. Процес є read-only (нуль мутацій), оскільки fix-режим не переписує файли, а лише класифікує знахідки. Після дописування словника виконується re-detect. Гейт-механізм гарантує, що cspell поверне ненульовий код, якщо нерозкласифіковані або потенційні одруки залишилися.
14
14
 
15
15
  ## Поведінка
16
16
 
17
- unknownWords витягує унікальні невідомі слова з виводу cspell.
18
- appendWordsToDict додає класифіковані валідні слова до файлу .cspell.json, оновлюючи його словник.
19
- runCspellText запускає cspell для виявлення невідомих слів, а при увімкненні omlx-класифікації класифікує їх та дописує валідні слова у словник, після чого повторно перевіряє наявність помилок.
17
+ unknownWords витягує унікальні «Unknown word» з виводу cspell.
18
+ appendWordsToDict дописує класифіковані валідні слова у `.cspell.json#words`, сортуючи та усуваючи дублікати.
19
+ runCspellText запускає cspell, класифікує знахідки за допомогою LLM (якщо `llmFix` встановлено), дописує валідні слова у словник та повторно запускає cspell для перевірки, повертаючи код виходу.
20
20
 
21
21
  ## Публічний API
22
22
 
23
- unknownWords — Збирає унікальні слова, які не були знайдені у словнику cspell.
24
- appendWordsToDict — Додає зібрані слова до файлу `.cspell.json#words` у відсортованому та унікальному вигляді для перегляду у Git.
25
- runCspellText — Виконує перевірку тексту за допомогою cspell, класифікуючи слова та оновлюючи словник за новою схемою.
23
+ unknownWords — Збирає унікальні слова, які не були знайдені у cspell.
24
+ appendWordsToDict — Додає зібрані слова до словника `.cspell.json` у відсортованому та унікальному вигляді.
25
+ runCspellText — Виконує перевірку тексту за допомогою cspell для формування словника за новою схемою.
26
26
 
27
27
  ## Гарантії поведінки
28
28
 
@@ -11,7 +11,6 @@ resource: npm/rules/text/js/
11
11
  | [cspell-fix.mjs](cspell-fix.md) | JS Module |
12
12
  | [forbidden-prettier.mjs](forbidden-prettier.md) | JS Module |
13
13
  | [formatting.mjs](formatting.md) | JS Module |
14
- | [lint.mjs](lint.md) | JS Module |
15
14
  | [run-dotenv-linter.mjs](run-dotenv-linter.md) | JS Module |
16
15
  | [run-shellcheck.mjs](run-shellcheck.md) | JS Module |
17
16
  | [run-v8r.mjs](run-v8r.md) | JS Module |
@@ -3,27 +3,27 @@ type: JS Module
3
3
  title: run-lint.mjs
4
4
  resource: npm/scripts/lib/run-lint.mjs
5
5
  docgen:
6
- crc: dd80d058
6
+ crc: 24827b04
7
7
  model: omlx/gemma-4-e4b-it-OptiQ-4bit
8
8
  score: 100
9
9
  ---
10
10
 
11
11
  ## Огляд
12
12
 
13
- Модуль керує вибором та виконанням правил лінтування. Він визначає набір правил для лінтування, спираючись на конфігурації `meta.json` та `.n-cursor.json`. Публічна функція `selectLintRules` вибирає та сортує ці правила на основі їхньої лінт-поверхні. Публічна функція `runLint` ініціює виконання визначеного набору правил, перевіряючи змінені файли або весь репозиторій.
13
+ Модуль ініціалізує та керує процесом лінтування коду. Він вибирає та сортує набір правил для перевірки, використовуючи конфігурації `meta.json` та `.n-cursor.json`. Публічна функція `selectLintRules` виконує вибір правил. Публічна функція `runLint` ініціює повний цикл лінтування, який може включати перевірку змінених файлів або всього репозиторію.
14
14
 
15
15
  ## Поведінка
16
16
 
17
- selectLintRules вибирає і алфавітно сортує ідентифікатори правил для лінтування на основі їхньої лінт-поверхні та наявності в активних конфігураціях.
18
- runLint запускає лінт-оркестрацію, виконуючи перевірку змінених файлів або повний прогін репозиторію, залежно від наданих опцій.
17
+ selectLintRules вибирає і алфавітно сортує ідентифікатори правил для лінтування, ґрунтуючись на наявності в конфігурації та заданому обсязі перевірки.
18
+ runLint запускає повну оркестрацію лінтування, виконуючи перевірку змінених файлів або весь репозиторій, залежно від параметрів, і може включати фази конформності та форматування.
19
19
 
20
20
  ## Публічний API
21
21
 
22
22
  selectLintRules — обирає ідентифікатори правил для контексту, розташовуючи їх в алфавітному порядку.
23
23
  runLint — ініціює процес лінтування.
24
24
  full — сканує весь репозиторій, порівнюючи його з початковим станом.
25
- readOnly — лише виявляє проблеми без внесення змін.
26
- rules — виконує повне сканування репозиторію, застосовуючи лише вказаний набір правил.
25
+ readOnly — лише виявляє проблеми, не вносячи змін, порівнюючи з початковим станом.
26
+ rules — виконує повне сканування лише для вказаних правил у заданому обсязі.
27
27
 
28
28
  ## Гарантії поведінки
29
29
 
@@ -3,31 +3,44 @@ type: JS Module
3
3
  title: analyze-escalation.mjs
4
4
  resource: npm/scripts/lib/fix/analyze-escalation.mjs
5
5
  docgen:
6
- crc: 5a586df6
6
+ crc: f26cd4c7
7
7
  model: omlx/gemma-4-e4b-it-OptiQ-4bit
8
8
  score: 100
9
9
  ---
10
10
 
11
- Аналітика escalation-логу fix-конформності. Читає записи рунгів драбини (`escalation-log.mjs`) — весь лог або записи одного прогону (від байтового зсуву), — ділить на чанки за бюджетом символів і просить хмарну **avg**-модель запропонувати, як зменшити LLM-залежність: нові детерміновані T0-патерни, уточнення `.mdc`-інструкцій або зміни скриптів пакета. Результат — markdown-звіт у `.n-cursor/fix-escalation-analysis.md` (append із timestamp). Викликається CLI `n-cursor analyze-escalation` (весь лог) і наприкінці `lint --full` (записи прогону).
11
+ ## Огляд
12
+
13
+ Аналізує записи рунгів драбини з `escalation-log.mjs` для виявлення шляхів зменшення LLM-залежності у fix-конформності. Лог обробляється за один прогін (від байтового зсуву) або повністю, ділячись на чанки для аналізу хмарною **avg**-моделлю. Мета аналізу — визначити конкретні правки пакета `@nitra/cursor`: (A) новий ДЕТЕРМІНОВАНИЙ T0-патерн (`t0.mjs`), (B) уточнення `.mdc`-інструкцій правила, або (C) зміна скрипта/чека. Результат зберігається у markdown-звіт `.n-cursor/fix-escalation-analysis.md` (append із timestamp) після виклику CLI `n-cursor analyze-escalation`.
12
14
 
13
15
  ## Поведінка
14
16
 
15
- `readEscalationRecords` читає JSONL від байтового зсуву (зсув на межі рядка — мультибайт не б'ється; биті рядки пропускаються); `escalationLogSize` дає зсув для scope «цей прогін». `chunkRecords` стискає записи й ділить на чанки, щоб JSON кожного не перевищив бюджет. `analyzeEscalations` (синхронний — callLlm spawnSync-based) робить виклик avg-моделі по кожному чанку, а за кількох чанків — фінальний синтез; помилки моделі ковтаються в `null` (аналіз не валить lint). `maybeAnalyzeEscalation` — хук lint: gated kill-switch `N_CURSOR_FIX_ANALYZE`, наявністю `CLOUD_AVG` і записів.
17
+ analysisEnabled визначає, чи дозволено виконувати автоматичний аналіз ескалації наприкінці процесу `lint`.
18
+ escalationLogSize повертає розмір файлу логу ескалації у байтах.
19
+ readEscalationRecords читає записи логу ескалації, починаючи з заданого байтового зсуву, та повертає їх як масив об'єктів.
20
+ summarizeCalls рахує кількість викликів моделей для різних рівнів (локальний, cloud-min, cloud-avg) у наданих записах.
21
+ reportRunStats друкує резюме кількості викликів моделей для поточного прогону, використовуючи заданий байтовий зсув.
22
+ chunkRecords ділить масив стиснених записів на менші чанки, щоб кожен чанк не перевищив заданий бюджет символів.
23
+ analyzeEscalations аналізує надані записи, ділить їх на чанки, викликає модель для аналізу кожного чанка, а потім синтезує фінальний звіт.
24
+ analysisReportPath повертає шлях до файлу, де зберігається звіт аналізу ескалації.
25
+ writeAnalysisReport дописує згенерований звіт у markdown-файл у відповідному шляху, додаючи до нього мітку часу.
26
+ runEscalationAnalysisCli виконує повний аналіз всього логу ескалації та записує звіт.
27
+ maybeAnalyzeEscalation виконує аналіз ескалацій лише для записів поточного прогону, якщо дозволено та є необхідні умови.
16
28
 
17
29
  ## Публічний API
18
30
 
19
- - `summarizeCalls(records)` лічильники фактичних викликів за тирами `{ local, cloudMin, cloudAvg }` (skip-записи avg-кепу не рахуються).
20
- - `reportRunStats(sinceOffset, log)` друкує резюме викликів моделей за прогін (no-op, якщо викликів не було).
21
- - `analysisEnabled()` чи дозволено авто-аналіз (kill-switch `N_CURSOR_FIX_ANALYZE`).
22
- - `escalationLogSize(path?)` розмір логу в байтах (since-offset).
23
- - `readEscalationRecords(path, sinceOffset?)` записи від зсуву.
24
- - `chunkRecords(records, maxChars?)` чанки стиснених записів.
25
- - `analyzeEscalations(records, opts?)` `{ report, chunks, reason }`; `opts.callLlm` інжектовний.
26
- - `analysisReportPath(cwd?)` / `writeAnalysisReport(report, cwd, ts)` шлях/запис звіту.
27
- - `runEscalationAnalysisCli(args, cwd?)` CLI: весь лог звіт.
28
- - `maybeAnalyzeEscalation(cwd, sinceOffset, log)` хук наприкінці `lint --full`.
31
+ analysisEnabledВмикає автоматичний аналіз після завершення lint.
32
+ escalationLogSizeВизначає максимальний розмір escalation-логу в байтах.
33
+ readEscalationRecordsЗчитує записи з логу, починаючи з заданого байтового зсуву.
34
+ summarizeCallsПідраховує реальні виклики моделей за тирами, ігноруючи записи про середнє кешування.
35
+ reportRunStats Виводить підсумок викликів моделей за поточний запуск.
36
+ chunkRecords — Розбиває записи на менші частини, щоб розмір JSON кожного чанку не перевищував заданий ліміт.
37
+ analyzeEscalations — Обробляє записи: розбиває їх на чанки, викликає модель для кожного чанку та синтезує результат, якщо чанків більше одного.
38
+ analysisReportPath Вказує шлях для збереження markdown-звіту аналізу.
39
+ writeAnalysisReport Додає звіт до markdown-файлу, додаючи до нього мітку часу.
40
+ runEscalationAnalysisCli Виконує повний аналіз всього логу escalation через інтерфейс командного рядка.
41
+ maybeAnalyzeEscalation — Запускає аналіз записів поточного прогону після `lint --full`, якщо це дозволено налаштуваннями.
29
42
 
30
43
  ## Гарантії поведінки
31
44
 
32
- - Звертається до мережі лише при виклику avg-моделі (через pi/omlx за префіксом model-id).
33
- - Помилки виклику моделі перехоплює (fail-safe): аналіз не впливає на exit-код lint.
45
+ - Перехоплює помилки і не пропускає винятків назовні (fail-safe).
46
+ - За певних помилок повертає порожнє значення (напр. `null`) замість винятку.
@@ -3,38 +3,37 @@ type: JS Module
3
3
  title: orchestrator.mjs
4
4
  resource: npm/scripts/lib/fix/orchestrator.mjs
5
5
  docgen:
6
- crc: fbc91330
6
+ crc: 3bb1b761
7
7
  model: omlx/gemma-4-e4b-it-OptiQ-4bit
8
8
  score: 100
9
9
  ---
10
10
 
11
11
  ## Огляд
12
12
 
13
- Модуль керує процесом вирішення порушень за допомогою багаторівневої системи ескалації. Він збирає послідовність рівнів моделей, починаючи з локальних і закінчуючи хмарними. Модуль парсить параметри запуску за допомогою `parseOrchestratorArgs` та виконує повний цикл фіксації, застосовуючи детермінований фікс. Для невирішених проблем застосовується ескалація правил через `escalateRule`, а фінальний запуск оркестратора здійснюється через `runOrchestratorCli`, який використовує структуру, побудовану за допомогою `buildLadder`.
13
+ Модуль відповідає за управління процесом виправлення порушень. Він будує послідовність тирів ескалації за допомогою `buildLadder`, парсить аргументи командного рядка за допомогою `parseOrchestratorArgs` та запускає повний цикл виправлення за допомогою `runOrchestratorCli`. Цей цикл включає автоматичний фікс та ескалацію через LLM-моделі, що реалізується функцією `escalateRule`.
14
14
 
15
15
  ## Поведінка
16
16
 
17
17
  buildLadder будує послідовність тирів ескалації для вирішення порушень, від локальних мінімальних моделей до хмарних середніх моделей.
18
- escalateRule проводить один прохід по послідовності тирів, намагаючись вирішити порушення, і повертає статус вирішення та використаний бюджет хмарних викликів.
19
- parseOrchestratorArgs парсить аргументи командного рядка для визначення максимального бюджету хмарних викликів та фільтра правил.
20
- runOrchestratorCli виконує повний цикл фіксації: перевіряє правила, застосовує детермінований фікс (T0-auto), а потім використовує LLM-драбину ескалації для невирішених порушень.
18
+ escalateRule виконує один прогін по послідовності тирів, намагаючись вирішити порушення, використовуючи LLM-моделі та фіксуючи результат.
19
+ parseOrchestratorArgs парсить аргументи командного рядка для визначення максимального ліміту викликів хмарної моделі та фільтра правил.
20
+ runOrchestratorCli керує повним процесом виправлення порушень: виконує початкову перевірку, застосовує детермінований фікс (T0-auto), а потім ініціює LLM-драбину ескалації для невирішених правил.
21
21
 
22
22
  ## Публічний API
23
23
 
24
- buildLadder — Створює послідовність моделей для ескалації, виходячи з доступних рівнів.
24
+ buildLadder — Створює послідовність моделей для ескалації, обмежуючись лише тирами, які доступні.
25
25
 
26
- local-min — Запускає первинний прохід з найменшою локальною моделлю.
27
- local-min-retry — Повторює локальний прохід, використовуючи відгук від попереднього кроку.
28
- cloud-min — Запускає прохід з найменшою хмарною моделлю, використовуючи відгук.
29
- cloud-avg — Запускає прохід з середньою хмарною моделлю, використовуючи відгук та обмеження середнього.
26
+ local-min — Виконує перший прохід з локальною мінімальною моделлю.
27
+ local-min-retry — Повторює локальний прохід, використовуючи результати попереднього рунгу.
28
+ cloud-min — Виконує прохід з хмарною мінімальною моделлю, використовуючи результати попереднього рунгу.
29
+ cloud-avg — Виконує прохід з хмарною середньою моделлю, використовуючи результати попереднього рунгу та обмеження середнього.
30
30
 
31
- escalateRule — Виконує одне правило по драбині ескалації до першого успішного перевірки.
32
- Кожен рунг — Запускає роботу моделі з урахуванням попереднього відгуку, перевіряє правило, фіксує результат у лозі.
33
- Достроковий вихід — Зупиняє процес при певних умовах (відсутність ключа, пропуск моделі на системному рівні) або при досягненні ліміту середнього.
31
+ escalateRule — Застосовує одне правило по драбині ескалації до першого позитивного результату.
32
+ Кожен рунг — Викликає модель з попереднім відгуком, перевіряє правило, фіксує результат у лозі. Зупиняється при певних умовах (відсутність ключа, пропуск моделі, перевищення бюджету).
34
33
 
35
- parseOrchestratorArgs — Витягує максимальне значення середнього та збирає список правил для фільтрації з командного рядка.
34
+ parseOrchestratorArgs — Витягує максимальне значення середнього та список фільтрів правил з командного рядка.
36
35
 
37
- runOrchestratorCli — Запускає основний процес оркестрації, обробляючи аргументи та виконуючи ескалацію правил.
36
+ runOrchestratorCli — Запускає основну логіку оркестратора на основі аргументів командного рядка.
38
37
 
39
38
  ## Гарантії поведінки
40
39
 
@@ -3,26 +3,27 @@ type: JS Module
3
3
  title: t0.mjs
4
4
  resource: npm/scripts/lib/fix/t0.mjs
5
5
  docgen:
6
- crc: 49c0669b
6
+ crc: cfb0d5c9
7
7
  model: omlx/gemma-4-e4b-it-OptiQ-4bit
8
8
  score: 100
9
9
  ---
10
10
 
11
11
  ## Огляд
12
12
 
13
- Модуль керує автоматичним застосуванням T0-auto паттернів до виводів порушень. Він визначає, які правила можуть бути оброблені автоматично, використовуючи конфігурації з `extensions.json` та `package-lock.json`. Функціонал реалізовано через публічні функції: `filterT0AutoRules` для визначення правил, `applyT0Auto` для автоматичного застосування паттернів до виводів, та `runT0AutoCli` для запуску процесу. Модуль працює у режимі fail-safe, перехоплюючи помилки та не кидаючи винятків назовні, надаючи звіт про застосовані автоматичні виправлення.
13
+ Модуль керує автоматичним застосуванням паттернів T0-auto до виводів порушень. Він використовує конфігурації з `extensions.json` та `package-lock.json` для визначення правил. Модуль фільтрує правила, які можуть бути автоматично оброблені, застосовує паттерни за допомогою `applyT0Auto`, а потім запускає повний цикл перевірки для всіх провальних правил через `runT0AutoCli`. Усі операції виконуються з механізмом fail-safe, що запобігає виникненню винятків назовні.
14
14
 
15
15
  ## Поведінка
16
16
 
17
- applyT0Auto застосовує всі визначені T0-auto паттерни до одного виводу порушення, повертаючи результат застосування.
18
- filterT0AutoRules повертає список ID правил, для яких існує хоча б один T0-auto паттерн, виходячи з виводів порушень.
19
- runT0AutoCli запускає T0-auto для кожного провального правила, повторно перевіряє конформність та виводить підсумок.
17
+ Поведінка
18
+ applyT0Auto застосовує всі визначені T0-auto паттерни до одного виводу порушення, повертаючи результат застосування та список виконаних дій.
19
+ filterT0AutoRules повертає список ID правил, для яких існує хоча б один T0-auto паттерн, виходячи з виводу порушення.
20
+ runT0AutoCli запускає T0-auto для всіх провальних правил, повторно перевіряє конформність та виводить підсумок щодо закритого чи незакритого порушень.
20
21
 
21
22
  ## Публічний API
22
23
 
23
24
  applyT0Auto — вносить зміни до виводу порушень, використовуючи всі визначені T0-auto шаблони.
24
- filterT0AutoRules — визначає, які правила мають принаймні один T0-auto шаблон, ґрунтуючись на виводі порушень у форматі JSON.
25
- runT0AutoCli — виконує команду `n-cursor fix-t0 [rule...]`, яка застосовує T0-auto до кожного порушення, повторно перевіряє check-gate та надає звіт.
25
+ filterT0AutoRules — визначає, які правила мають відповідні T0-auto шаблони, аналізуючи вивід порушень, отриманий з `fix --json`.
26
+ runT0AutoCli — виконує команду `n-cursor fix-t0 [rule...]`, що включає застосування T0-auto до кожного порушення, повторну перевірку check-gate та виведення результату.
26
27
 
27
28
  ## Гарантії поведінки
28
29
 
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes