@7n/rules-ci-github 1.9.0 → 1.9.2

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 (56) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/package.json +1 -1
  3. package/rules/abie/clean_merged_ignore_branches/docs/fix-clean_merged_ignore_branches.md +15 -10
  4. package/rules/abie/clean_merged_ignore_branches/docs/index.md +2 -2
  5. package/rules/abie/clean_merged_ignore_branches/fix-clean_merged_ignore_branches.mjs +10 -0
  6. package/rules/docker/lint_docker_yml/docs/fix-lint_docker_yml.md +13 -10
  7. package/rules/docker/lint_docker_yml/docs/index.md +2 -2
  8. package/rules/docker/lint_docker_yml/fix-lint_docker_yml.mjs +10 -0
  9. package/rules/ga/clean_ga_workflows/docs/fix-clean_ga_workflows.md +12 -12
  10. package/rules/ga/clean_ga_workflows/fix-clean_ga_workflows.mjs +10 -0
  11. package/rules/ga/clean_merged_branch/docs/fix-clean_merged_branch.md +17 -8
  12. package/rules/ga/clean_merged_branch/fix-clean_merged_branch.mjs +10 -0
  13. package/rules/ga/git_ai/docs/fix-git_ai.md +18 -8
  14. package/rules/ga/git_ai/fix-git_ai.mjs +10 -0
  15. package/rules/ga/git_ai/template/git-ai.yml.snippet.yml +1 -1
  16. package/rules/ga/lint_ga/docs/fix-lint_ga.md +16 -10
  17. package/rules/ga/lint_ga/fix-lint_ga.mjs +10 -0
  18. package/rules/ga/lint_repo_yml/docs/fix-lint_repo_yml.md +20 -8
  19. package/rules/ga/lint_repo_yml/fix-lint_repo_yml.mjs +10 -0
  20. package/rules/ga/service_deploy_workflow/docs/fix-service_deploy_workflow.md +38 -11
  21. package/rules/ga/service_deploy_workflow/fix-service_deploy_workflow.mjs +6 -0
  22. package/rules/ga/vscode_settings/docs/fix-vscode_settings.md +15 -8
  23. package/rules/ga/vscode_settings/fix-vscode_settings.mjs +10 -0
  24. package/rules/ga/zizmor_yml/docs/fix-zizmor_yml.md +14 -9
  25. package/rules/ga/zizmor_yml/fix-zizmor_yml.mjs +10 -0
  26. package/rules/js/lint_js_yml/docs/fix-lint_js_yml.md +16 -8
  27. package/rules/js/lint_js_yml/docs/index.md +2 -2
  28. package/rules/js/lint_js_yml/fix-lint_js_yml.mjs +10 -0
  29. package/rules/k8s/lint_k8s_yml/docs/fix-lint_k8s_yml.md +15 -10
  30. package/rules/k8s/lint_k8s_yml/docs/index.md +2 -2
  31. package/rules/k8s/lint_k8s_yml/fix-lint_k8s_yml.mjs +10 -0
  32. package/rules/k8s/lint_k8s_yml/template/lint-k8s.yml.snippet.yml +1 -1
  33. package/rules/npm-module/npm_publish_yml/docs/fix-npm_publish_yml.md +19 -9
  34. package/rules/npm-module/npm_publish_yml/docs/index.md +2 -2
  35. package/rules/npm-module/npm_publish_yml/fix-npm_publish_yml.mjs +10 -0
  36. package/rules/php/lint_php_yml/docs/fix-lint_php_yml.md +19 -9
  37. package/rules/php/lint_php_yml/docs/index.md +2 -2
  38. package/rules/php/lint_php_yml/fix-lint_php_yml.mjs +10 -0
  39. package/rules/python/lint_python_yml/docs/fix-lint_python_yml.md +21 -8
  40. package/rules/python/lint_python_yml/docs/index.md +2 -2
  41. package/rules/python/lint_python_yml/fix-lint_python_yml.mjs +6 -0
  42. package/rules/rust/lint_rust_yml/docs/fix-lint_rust_yml.md +19 -9
  43. package/rules/rust/lint_rust_yml/docs/index.md +2 -2
  44. package/rules/rust/lint_rust_yml/fix-lint_rust_yml.mjs +6 -0
  45. package/rules/rust/toolchain_cache/docs/index.md +2 -4
  46. package/rules/rust/toolchain_cache/docs/main.md +23 -35
  47. package/rules/rust/toolchain_cache/main.mjs +4 -0
  48. package/rules/security/lint_security_yml/docs/fix-lint_security_yml.md +12 -10
  49. package/rules/security/lint_security_yml/docs/index.md +2 -2
  50. package/rules/security/lint_security_yml/fix-lint_security_yml.mjs +6 -0
  51. package/rules/style/lint_style_yml/docs/fix-lint_style_yml.md +10 -9
  52. package/rules/style/lint_style_yml/docs/index.md +2 -2
  53. package/rules/style/lint_style_yml/fix-lint_style_yml.mjs +6 -0
  54. package/rules/text/lint_text/docs/fix-lint_text.md +13 -8
  55. package/rules/text/lint_text/docs/index.md +2 -2
  56. package/rules/text/lint_text/fix-lint_text.mjs +6 -0
@@ -3,29 +3,56 @@ type: JS Module
3
3
  title: fix-service_deploy_workflow.mjs
4
4
  resource: plugins/ci-github/rules/ga/service_deploy_workflow/fix-service_deploy_workflow.mjs
5
5
  docgen:
6
- crc: bb163530
6
+ crc: 429bfe4c
7
+ model: openai-codex/gpt-5.5
8
+ tier: cloud-avg
9
+ score: 100
10
+ issues: judge-refine:kept-original,judge:inaccurate:0.99
11
+ judgeModel: openai-codex/gpt-5.4-mini
7
12
  ---
8
13
 
9
14
  ## Огляд
10
15
 
11
- Модуль виконує T0-автоміграцію GitHub Actions deploy-workflow до сервіс-канону `plan → lint-<domain> → deploy` (ADR 260718-0835), дзеркало `fix-service_deploy_pipeline` для `ci-azure`. Для workflow з легасі-джобою `n-rules lint --path <svc>` (без домену) додає `plan` (checkout `fetch-depth: 0` + prep + `bunx n-rules ci plan --path <svc> --github` з `id: plan` і outputs-мапінгом доменів + `any`), розкладає легасі lint на per-domain `lint-<domain>`-джоби (домени й glob-и — ті самі, що в `ci plan`), перепідключає `needs` залежних джоб і додає Skipped-толерантний `if` там, де його бракує. Наявний нетривіальний `if` не перезаписується.
16
+ T0-автоміграція приводить `.github/workflows/deploy-*.yml` сервісів до канону ADR 260718-0835: `plan → lint-<domain> → deploy` із runtime outputs для доменних гейтів. Вона додає `plan` із `bunx n-rules ci plan --path <svc> --github`, `id: plan` та outputs-мапінгом доменів + `any`, щоб умови `needs.plan.outputs.*` мали значення під час виконання.
12
17
 
13
- `bootstrap: true` окремий опт-ін, який `n-rules lint --fix` не викликає автоматично: для deploy-workflow БЕЗ жодної lint-джоби (rego вважає такий workflow валідним as-is публікація без гейта може бути свідомим рішенням) створює lint-<domain>-джоби з нуля за `relevantDomains` піддерева сервісу і підключає вхідну джобу без власного `needs` до `plan` + усіх нових lint-джоб зі Skipped-толерантним `if`.
18
+ Файл існує як fix-режим для workflow, що ще мають легасі lint або неповний domain-style wiring, зберігаючи валідні без-lint workflow без примусового переходу на gate. `bootstrap: true` є окремим opt-in для workflow без lint-джоб: він створює доменні lint-гейти з нуля й підключає до них безумовну вхідну job.
14
19
 
15
- Мутації виконуються через YAML Document API коментарі та форматування незачеплених частин файлу зберігаються. Помилки парсингу чи міграції окремого файлу не прокидаються назовні: функція повертає `false`, файл лишається без змін.
20
+ Міграція працює fail-safe: перехоплює помилки, не кидає винятків назовні та в окремих збійних сценаріях може повертати `null`.
16
21
 
17
22
  ## Поведінка
18
23
 
19
- - `migrateWorkflowFile(absPath, cwd, { bootstrap? })` мігрує один deploy-workflow до канону; повертає `true`, якщо файл змінено, `false` якщо міграція не потрібна, шлях сервісу не визначити, чи (без `bootstrap`) у workflow немає ні `plan`, ні жодного lint-кроку.
20
- - `patterns` — T0-патерн fix-конвеєра: спрацьовує лише коли rego-концерн уже знайшов порушення у файлі (без `bootstrap`), мігрує кожен зачеплений workflow і збирає перелік змінених файлів; помилки окремих файлів не переривають обробку решти.
24
+ `migrateWorkflowFile` читає GitHub Actions deploy-workflow, визначає сервісний каталог і активні домени, після чого детерміновано приводить jobs до канону `plan lint-<domain> deploy`. Дані беруться з наявних jobs, lint-команд і workflow paths; результатом є оновлений YAML-файл із мінімальними змінами незачеплених частин.
25
+
26
+ Потік міграції спочатку формує або доповнює `plan` з outputs для доменів і `any`, щоб downstream-гейти могли коректно читати `needs.plan.outputs.*` під час runtime. Далі легасі lint-job без домену замінюється на набір per-domain jobs, а вже наявні domain-style lint jobs добираються до канону: залежність від `plan`, умовний запуск за outputs, режим без auto-fix, повна історія checkout і підготовчі кроки.
27
+
28
+ Після створення або оновлення lint jobs міграція перешиває залежності інших jobs з легасі-імен на нові lint jobs. Якщо deploy-job залежить від умовних lint jobs, вона отримує Skipped-толерантний gate, щоб пропущений нерелевантний домен не блокував деплой, але failure залишався блокувальним. Наявний нетривіальний `if` не перезаписується, бо це вважається ручним рішенням.
29
+
30
+ Опційний bootstrap-режим у `migrateWorkflowFile` застосовується лише як явний opt-in для workflow без lint jobs: він створює per-domain lint jobs з нуля та підключає безумовну вхідну deploy-job до `plan` і всіх lint jobs. Звичайний fix-режим цього не робить, бо workflow без lint-гейта є валідним станом, а перехід на gate має бути свідомим рішенням команди.
31
+
32
+ Зміни виконуються через YAML document-модель, тому порядок jobs керовано оновлюється, а коментарі й форматування незачеплених ділянок зберігаються. Помилки обробляються fail-safe: міграція не кидає винятки назовні і за неможливості безпечно визначити потрібні дані не виконує небезпечний rewrite.
33
+
34
+ `patterns` підключає цю міграцію до правила fix для deploy-workflow файлів і застосовує звичайний режим без bootstrap. Під час обходу свідомо пропускаються `.github` і `.git`, щоб не аналізувати службові каталоги як сервісні піддерева.
21
35
 
22
36
  ## Публічний API
23
37
 
24
- - `migrateWorkflowFile`переводить один deploy-workflow у канонічний формат, опційно (`bootstrap: true`) добудовуючи lint-джоби з нуля для workflow, що їх ще не мали.
25
- - `patterns` — T0-фікс-патерн для fix-конвеєра `n-rules lint`: розпізнає порушення `service_deploy_workflow` і застосовує `migrateWorkflowFile` (без `bootstrap`) до кожного знайденого файлу.
38
+ - migrateWorkflowFile — Мігрує один deploy-workflow до канону. Повертає true, якщо файл змінено.
39
+
40
+ `bootstrap: true` — свідоме розширення поза звичайним fix-режимом: для
41
+ deploy-workflow БЕЗ жодної lint-джоби (валідний as-is за рего-концерном,
42
+ деталі — service_deploy_workflow.rego) створює lint-<domain> джоби з нуля
43
+ (за `relevantDomains` піддерева сервісу) і підключає вхідну/термінальну
44
+ джобу без `needs` до plan + усіх lint-джоб. Це саме «свідоме рішення
45
+ перейти на гейт», про яке говорить коментар концерну — bootstrap лише
46
+ виконує його механічно, а не ухвалює автоматично (звичайний
47
+ `n-rules lint --fix` bootstrap не викликає: patterns[0].apply завжди
48
+ викликається без bootstrap).
49
+ - patterns — Один детермінований патерн: для кожного workflow-файлу з порушеннями запускає
50
+ `migrateWorkflowFile` без bootstrap (plan-джоба, per-domain lint-джоби,
51
+ перешивка needs). Помилка міграції окремого файлу не валить прогін — deny
52
+ лишається детектору до ручного фіксу.
26
53
 
27
54
  ## Гарантії поведінки
28
55
 
29
- - Перехоплює помилки парсингу й міграції — не пропускає винятків назовні (fail-safe), повертає `false`.
30
- - Не перезаписує наявний нетривіальний `if` термінальної джоби.
31
- - `bootstrap`-логіка не активується неявно через звичайний `n-rules lint --fix` — лише за прямого виклику з `{ bootstrap: true }`.
56
+ - Перехоплює помилки і не пропускає винятків назовні (fail-safe).
57
+ - За певних помилок повертає порожнє значення (напр. `null`) замість винятку.
58
+ - Свідомо пропускає шляхи: `.github`, `.git`.
@@ -448,6 +448,12 @@ export async function migrateWorkflowFile(absPath, cwd, opts = {}) {
448
448
  return true
449
449
  }
450
450
 
451
+ /**
452
+ * Один детермінований патерн: для кожного workflow-файлу з порушеннями запускає
453
+ * `migrateWorkflowFile` без bootstrap (plan-джоба, per-domain lint-джоби,
454
+ * перешивка needs). Помилка міграції окремого файлу не валить прогін — deny
455
+ * лишається детектору до ручного фіксу.
456
+ */
451
457
  export const patterns = [
452
458
  {
453
459
  id: 'ga-service-workflow-canon-migrate',
@@ -3,24 +3,31 @@ type: JS Module
3
3
  title: fix-vscode_settings.mjs
4
4
  resource: plugins/ci-github/rules/ga/vscode_settings/fix-vscode_settings.mjs
5
5
  docgen:
6
- crc: 712711ff
6
+ crc: 39ecd7e7
7
7
  model: openai-codex/gpt-5.4-mini
8
+ tier: cloud-min
8
9
  score: 100
9
- issues: judge:inaccurate:0.97
10
10
  judgeModel: openai-codex/gpt-5.4-mini
11
11
  ---
12
12
 
13
13
  ## Огляд
14
14
 
15
- `patterns` перевіряє та впорядковує `.vscode/settings.json` на відповідність очікуваному проєктному формату, спираючись на `settings.json`. Це потрібно, щоб редакторні налаштування залишалися в передбачуваному стані без ручних правок.
15
+ `patterns` задає спільні налаштування VS Code для консюмер-репо відповідно до канонічного шаблону концерну `vscode_settings`. Це потрібно, щоб однаковий базовий набір налаштувань застосовувався узгоджено в усіх споживачах цього шаблону.
16
16
 
17
17
  ## Поведінка
18
18
 
19
- 1. `patterns` визначає набір правил для узгодження `.vscode/settings.json` з очікуваним шаблоном проєкту.
20
- 2. `patterns` потрібен, щоб автоматично тримати налаштування редактора в погодженому стані без ручного редагування кожного разу.
21
- 3. `patterns` працює лише з конфігурацією `.vscode/settings.json`; інших шляхів або файлів у межах цього модуля не охоплює.
22
- 4. `patterns` не виконує записів у файлову систему чи базу даних і не покладається на кешування.
19
+ 1. `patterns` задає один канонічний сценарій вирівнювання спільних VS Code-налаштувань у консюмер-репо з корпоративним шаблоном для `settings.json`.
20
+ 2. Якщо цільовий `settings.json` відсутній, він створюється на основі канонічного шаблону.
21
+ 3. Якщо `settings.json` уже існує, з нього зберігаються всі значення поза шаблоном, а канонічні налаштування концерну мають пріоритет і доповнюють або оновлюють спільну конфігурацію.
22
+ 4. Це гарантує, що репозиторії отримують однакову базову поведінку VS Code без втрати локальних несуперечливих налаштувань.
23
+
24
+ ## Публічний API
25
+
26
+ - patterns — Один детермінований патерн: deep-merge канонічного snippet-а концерну в
27
+ `.vscode/settings.json` консюмер-репо — відсутні ключі додаються, канонічні
28
+ значення мають пріоритет, ключі поза шаблоном не чіпаються; якщо файлу
29
+ немає — створюється зі snippet-а.
23
30
 
24
31
  ## Гарантії поведінки
25
32
 
26
- - Read-only: не виконує операцій запису (ФС/БД).
33
+ - Власних операцій запису (ФС/БД) у файлі немає; виклики імпортованих модулів можуть писати.
@@ -1,5 +1,15 @@
1
+ /**
2
+ * T0-фікс концерну vscode_settings: приводить спільні налаштування VS Code
3
+ * у консюмер-репо до канонічного шаблону концерну.
4
+ */
1
5
  import { createTemplateFixPattern } from '@7n/rules/scripts/lib/fix/template-deep-merge.mjs'
2
6
 
7
+ /**
8
+ * Один детермінований патерн: deep-merge канонічного snippet-а концерну в
9
+ * `.vscode/settings.json` консюмер-репо — відсутні ключі додаються, канонічні
10
+ * значення мають пріоритет, ключі поза шаблоном не чіпаються; якщо файлу
11
+ * немає — створюється зі snippet-а.
12
+ */
3
13
  export const patterns = [
4
14
  createTemplateFixPattern({ id: 'ga-vscode_settings-template', targetPath: '.vscode/settings.json' })
5
15
  ]
@@ -3,26 +3,31 @@ type: JS Module
3
3
  title: fix-zizmor_yml.mjs
4
4
  resource: plugins/ci-github/rules/ga/zizmor_yml/fix-zizmor_yml.mjs
5
5
  docgen:
6
- crc: df8c1663
6
+ crc: 9892e20a
7
7
  model: openai-codex/gpt-5.4-mini
8
8
  tier: cloud-min
9
9
  score: 100
10
- issues: judge:inaccurate:0.98
11
10
  judgeModel: openai-codex/gpt-5.4-mini
12
11
  ---
13
12
 
14
13
  ## Огляд
15
14
 
16
- `patterns` описує, як привести цільові файли репозиторію до потрібного вигляду з урахуванням свідомо пропущених шляхів `.github` і `.git`. Функція працює read-only і не пише у ФС чи БД.
15
+ `patterns` приводить `.github/zizmor.yml` до канонічного шаблону концерну для `zizmor`, щоб консюмер-репо залишалося узгодженим зі стандартизованим конфігом.
17
16
 
18
17
  ## Поведінка
19
18
 
20
- 1. `patterns` задає набір правил для автоматичного виправлення конфігурації `zizmor` у репозиторії.
21
- 2. Воно орієнтується на файл `.github/zizmor.yml` і застосовується лише до цього цільового місця.
22
- 3. Під час роботи свідомо не зачіпає шляхи `.github` і `.git` поза визначеним цільовим файлом, щоб не втручатися в службові та інфраструктурні області.
23
- 4. Працює у режимі read-only: саме значення `patterns` лише описує поведінку, без запису в файлову систему чи базу даних.
19
+ 1. `patterns` визначає один детермінований шаблон для вирівнювання `.github/zizmor.yml` із канонічним концерновим конфігом.
20
+ 2. Якщо цільовий файл відсутній, `patterns` ініціалізує його з канонічного snippet-а.
21
+ 3. Якщо файл уже існує, `patterns` додає відсутні ключі та зберігає канонічні значення як пріоритетні.
22
+ 4. `patterns` не чіпає коментарі й інші ключі поза шаблоном.
23
+
24
+ ## Публічний API
25
+
26
+ - patterns — Один детермінований патерн: deep-merge канонічного snippet-а концерну в
27
+ `.github/zizmor.yml` консюмер-репо — відсутні ключі додаються, канонічні
28
+ значення мають пріоритет, коментарі й ключі поза шаблоном не чіпаються;
29
+ якщо файлу немає — створюється зі snippet-а.
24
30
 
25
31
  ## Гарантії поведінки
26
32
 
27
- - Read-only: не виконує операцій запису (ФС/БД).
28
- - Свідомо пропускає шляхи: `.github`, `.git`.
33
+ - Власних операцій запису (ФС/БД) у файлі немає; виклики імпортованих модулів можуть писати.
@@ -1,3 +1,13 @@
1
+ /**
2
+ * T0-фікс концерну zizmor_yml: приводить конфіг сканера безпеки zizmor
3
+ * у консюмер-репо до канонічного шаблону концерну.
4
+ */
1
5
  import { createTemplateFixPattern } from '@7n/rules/scripts/lib/fix/template-deep-merge.mjs'
2
6
 
7
+ /**
8
+ * Один детермінований патерн: deep-merge канонічного snippet-а концерну в
9
+ * `.github/zizmor.yml` консюмер-репо — відсутні ключі додаються, канонічні
10
+ * значення мають пріоритет, коментарі й ключі поза шаблоном не чіпаються;
11
+ * якщо файлу немає — створюється зі snippet-а.
12
+ */
3
13
  export const patterns = [createTemplateFixPattern({ id: 'ga-zizmor_yml-template', targetPath: '.github/zizmor.yml' })]
@@ -3,25 +3,33 @@ type: JS Module
3
3
  title: fix-lint_js_yml.mjs
4
4
  resource: plugins/ci-github/rules/js/lint_js_yml/fix-lint_js_yml.mjs
5
5
  docgen:
6
- crc: fe148a99
6
+ crc: e0152cf2
7
7
  model: openai-codex/gpt-5.4-mini
8
+ tier: cloud-min
8
9
  score: 100
9
- issues: judge:inaccurate:0.99
10
+ issues: judge-refine:kept-original,judge:inaccurate:0.98
10
11
  judgeModel: openai-codex/gpt-5.4-mini
11
12
  ---
12
13
 
13
14
  ## Огляд
14
15
 
15
- `patterns` read-only набір правил для аналізу й уніфікації JavaScript lint-конфігурації в межах доступних шляхів. Він свідомо пропускає `.github` і `.git`, щоб не зачіпати службові та git-специфічні файли.
16
+ `patterns` приводить шлях `.github/workflows/lint-js.yml` до канонічного шаблону концерну, щоб workflow для js-лінту відповідав стандартному корпоративному оформленню.
16
17
 
17
18
  ## Поведінка
18
19
 
19
- 1. `patterns` формує набір правил для виправлення lint-конфігурації JavaScript-проєкту.
20
- 2. Для кожного правила прив’язує оновлення до цільового workflow-файлу `.github/workflows/lint-js.yml`.
21
- 3. У межах своєї роботи свідомо не зачіпає `.github` і `.git`, щоб уникати змін у службових та внутрішніх областях.
22
- 4. Працює в read-only режимі щодо ФС і БД: сам нічого не записує, а лише описує, що треба виправити.
20
+ 1. `patterns` задає єдиний канонічний сценарій виправлення для CI-workflow лінту js-домену в репозиторіях-консюмерах.
21
+ 2. Він узгоджує `.github/workflows/lint-js.yml` із шаблоном концерну: додає відсутні частини, зберігає канонічні значення як пріоритетні та не змінює сторонні коментарі й ключі поза шаблоном.
22
+ 3. Якщо цільового файлу немає, `patterns` ініціює його створення з канонічного snippet-а.
23
+ 4. Під час застосування механізм свідомо обходить `.github` і `.git`, щоб не зачіпати службові області поза цим сценарієм.
24
+
25
+ ## Публічний API
26
+
27
+ - patterns — Один детермінований патерн: deep-merge канонічного snippet-а концерну в
28
+ `.github/workflows/lint-js.yml` консюмер-репо — відсутні ключі додаються,
29
+ канонічні значення мають пріоритет, коментарі й ключі поза шаблоном не
30
+ чіпаються; якщо файлу немає — створюється зі snippet-а.
23
31
 
24
32
  ## Гарантії поведінки
25
33
 
26
- - Read-only: не виконує операцій запису (ФС/БД).
34
+ - Власних операцій запису (ФС/БД) у файлі немає; виклики імпортованих модулів можуть писати.
27
35
  - Свідомо пропускає шляхи: `.github`, `.git`.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  type: Directory Index
3
- title: npm/rules/js/lint_js_yml
4
- resource: npm/rules/js/lint_js_yml/
3
+ title: plugins/ci-github/rules/js/lint_js_yml
4
+ resource: plugins/ci-github/rules/js/lint_js_yml/
5
5
  ---
6
6
 
7
7
  | Файл | Тип |
@@ -1,5 +1,15 @@
1
+ /**
2
+ * T0-фікс концерну lint_js_yml: приводить CI-workflow лінту js-домену
3
+ * у консюмер-репо до канонічного шаблону концерну.
4
+ */
1
5
  import { createTemplateFixPattern } from '@7n/rules/scripts/lib/fix/template-deep-merge.mjs'
2
6
 
7
+ /**
8
+ * Один детермінований патерн: deep-merge канонічного snippet-а концерну в
9
+ * `.github/workflows/lint-js.yml` консюмер-репо — відсутні ключі додаються,
10
+ * канонічні значення мають пріоритет, коментарі й ключі поза шаблоном не
11
+ * чіпаються; якщо файлу немає — створюється зі snippet-а.
12
+ */
3
13
  export const patterns = [
4
14
  createTemplateFixPattern({ id: 'js-lint_js_yml-template', targetPath: '.github/workflows/lint-js.yml' })
5
15
  ]
@@ -3,28 +3,33 @@ type: JS Module
3
3
  title: fix-lint_k8s_yml.mjs
4
4
  resource: plugins/ci-github/rules/k8s/lint_k8s_yml/fix-lint_k8s_yml.mjs
5
5
  docgen:
6
- crc: 7931d379
7
- model: openai-codex/gpt-5.5
6
+ crc: e89c25eb
7
+ model: openai-codex/gpt-5.4-mini
8
+ tier: cloud-min
8
9
  score: 100
9
- issues: judge:inaccurate:0.98
10
+ issues: judge-refine:kept-original,judge:inaccurate:0.98
10
11
  judgeModel: openai-codex/gpt-5.4-mini
11
12
  ---
12
13
 
13
14
  ## Огляд
14
15
 
15
- Надає `patterns` як read-only опис очікуваних збігів для перевірки репозиторію без змін у файловій системі чи інших сховищах. Свідомо пропускає `.github` і `.git`, щоб не аналізувати службові шляхи та зосереджувати перевірку на релевантному вмісті.
16
+ Файл тримає канонічний сценарій оновлення CI workflow для лінту k8s-домену в consumer-репо, щоб `.github/workflows/lint-k8s.yml` приводився до шаблону концерну. Він існує, щоб звіряти workflow з канонічним snippet-ом концерну й застосовувати стандартний набір змін для цього сценарію, не виходячи за межі `.github` та `.git`.
16
17
 
17
18
  ## Поведінка
18
19
 
19
- 1. `patterns` оголошує набір правил автоматичного виправлення для workflow перевірки Kubernetes YAML.
20
+ 1. `patterns` задає єдиний канонічний сценарій виправлення для CI workflow лінту k8s-домену.
21
+ 2. Під час застосування сценарію шаблон концерну зливається з `.github/workflows/lint-k8s.yml`: відсутні елементи додаються, а канонічні значення мають пріоритет.
22
+ 3. Якщо цільового файлу немає, `patterns` ініціює його створення з канонічного snippet-а.
23
+ 4. `patterns` навмисно не втручається в позатимплейтні ключі та коментарі, а також свідомо пропускає `.github` і `.git` як межі обробки.
20
24
 
21
- 2. `patterns` забезпечує наявність стандартного шаблону `.github/workflows/lint-k8s.yml`, щоб репозиторій мав узгоджену CI-перевірку Kubernetes-маніфестів.
25
+ ## Публічний API
22
26
 
23
- 3. `patterns` працює як read-only опис очікуваного виправлення: сам файл не виконує запис у файлову систему чи базу даних.
24
-
25
- 4. `patterns` свідомо не охоплює обходом службові шляхи `.github` і `.git`; цільовий workflow у `.github/workflows/lint-k8s.yml` задається як конкретний шаблонний артефакт.
27
+ - patterns Один детермінований патерн: deep-merge канонічного snippet-а концерну в
28
+ `.github/workflows/lint-k8s.yml` консюмер-репо — відсутні ключі додаються,
29
+ канонічні значення мають пріоритет, коментарі й ключі поза шаблоном не
30
+ чіпаються; якщо файлу немає — створюється зі snippet-а.
26
31
 
27
32
  ## Гарантії поведінки
28
33
 
29
- - Read-only: не виконує операцій запису (ФС/БД).
34
+ - Власних операцій запису (ФС/БД) у файлі немає; виклики імпортованих модулів можуть писати.
30
35
  - Свідомо пропускає шляхи: `.github`, `.git`.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  type: Directory Index
3
- title: npm/rules/k8s/lint_k8s_yml
4
- resource: npm/rules/k8s/lint_k8s_yml/
3
+ title: plugins/ci-github/rules/k8s/lint_k8s_yml
4
+ resource: plugins/ci-github/rules/k8s/lint_k8s_yml/
5
5
  ---
6
6
 
7
7
  | Файл | Тип |
@@ -1,5 +1,15 @@
1
+ /**
2
+ * T0-фікс концерну lint_k8s_yml: приводить CI-workflow лінту k8s-домену
3
+ * у консюмер-репо до канонічного шаблону концерну.
4
+ */
1
5
  import { createTemplateFixPattern } from '@7n/rules/scripts/lib/fix/template-deep-merge.mjs'
2
6
 
7
+ /**
8
+ * Один детермінований патерн: deep-merge канонічного snippet-а концерну в
9
+ * `.github/workflows/lint-k8s.yml` консюмер-репо — відсутні ключі додаються,
10
+ * канонічні значення мають пріоритет, коментарі й ключі поза шаблоном не
11
+ * чіпаються; якщо файлу немає — створюється зі snippet-а.
12
+ */
3
13
  export const patterns = [
4
14
  createTemplateFixPattern({ id: 'k8s-lint_k8s_yml-template', targetPath: '.github/workflows/lint-k8s.yml' })
5
15
  ]
@@ -37,7 +37,7 @@ jobs:
37
37
  - name: Install kubescape
38
38
  run: |
39
39
  curl -s https://raw.githubusercontent.com/kubescape/kubescape/master/install.sh | /bin/bash
40
- echo "$HOME/.kubescape/bin" >> $GITHUB_PATH
40
+ echo "$HOME/.kubescape/bin" >> "$GITHUB_PATH"
41
41
 
42
42
  - name: Lint K8s
43
43
  run: bunx n-rules lint k8s --no-fix
@@ -3,25 +3,35 @@ type: JS Module
3
3
  title: fix-npm_publish_yml.mjs
4
4
  resource: plugins/ci-github/rules/npm-module/npm_publish_yml/fix-npm_publish_yml.mjs
5
5
  docgen:
6
- crc: 6db1ed6f
7
- model: openai-codex/gpt-5.4-mini
6
+ crc: b7913c3f
7
+ model: omlx/gemma-4-e4b-it-OptiQ-4bit
8
+ tier: local-min-retry
8
9
  score: 100
9
- issues: judge:inaccurate:0.98
10
+ issues: judge:error
10
11
  judgeModel: openai-codex/gpt-5.4-mini
11
12
  ---
12
13
 
13
14
  ## Огляд
14
15
 
15
- `patterns` визначає правила зіставлення вмісту для `/.github/workflows/npm-publish.yml` у межах репозиторію. Файл потрібен, щоб узгоджувати цей workflow із очікуваною структурою та вмістом.
16
+ Приводить конфігураційний файл `.github/workflows/npm-publish.yml` до канонічного шаблону концерну для забезпечення уніфікованого процесу публікації npm-пакетів у репозиторії-споживачі. Функція `patterns` забезпечує, що робочий процес включає необхідні параметри, при цьому ігноруючи каталоги `.github` та `.git`.
16
17
 
17
18
  ## Поведінка
18
19
 
19
- 1. `patterns` формує набір правил для підтримання узгодженого стану шаблонного workflow-файла `/.github/workflows/npm-publish.yml`.
20
- 2. `patterns` працює у режимі read-only: він не змінює ФС або БД.
21
- 3. `patterns` свідомо не охоплює шляхи `.github` і `.git`, щоб не зачіпати службові каталоги репозиторію.
22
- 4. `patterns` повертає готову конфігурацію для застосування до цільового файла, щоб стандартизувати його вміст у межах репозиторію.
20
+ 1. Приводить робочий процес (workflow) публікації npm-пакета в консюмер-репо до канонічного шаблону концерну шляхом застосування детермінованого патерну.
21
+ 2. Патерн працює з файлом `.github/workflows/npm-publish.yml`.
22
+ 3. Відсутні ключі в файлі додаються, а канонічні значення мають пріоритет; коментарі та ключі поза шаблоном не змінюються.
23
+ 4. Якщо вказаний файл не існує, він створюється на основі канонічного snippet-а.
24
+ 5. Процес не перевіряє шляхи `.github` та `.git`.
25
+ 6. Результат дії визначається масивом, експортованим через `patterns`.
26
+
27
+ ## Публічний API
28
+
29
+ - patterns — Один детермінований патерн: deep-merge канонічного snippet-а концерну в
30
+ `.github/workflows/npm-publish.yml` консюмер-репо — відсутні ключі додаються,
31
+ канонічні значення мають пріоритет, коментарі й ключі поза шаблоном не
32
+ чіпаються; якщо файлу немає — створюється зі snippet-а.
23
33
 
24
34
  ## Гарантії поведінки
25
35
 
26
- - Read-only: не виконує операцій запису (ФС/БД).
36
+ - Власних операцій запису (ФС/БД) у файлі немає; виклики імпортованих модулів можуть писати.
27
37
  - Свідомо пропускає шляхи: `.github`, `.git`.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  type: Directory Index
3
- title: npm/rules/npm-module/npm_publish_yml
4
- resource: npm/rules/npm-module/npm_publish_yml/
3
+ title: plugins/ci-github/rules/npm-module/npm_publish_yml
4
+ resource: plugins/ci-github/rules/npm-module/npm_publish_yml/
5
5
  ---
6
6
 
7
7
  | Файл | Тип |
@@ -1,5 +1,15 @@
1
+ /**
2
+ * T0-фікс концерну npm_publish_yml: приводить workflow публікації npm-пакета
3
+ * у консюмер-репо до канонічного шаблону концерну.
4
+ */
1
5
  import { createTemplateFixPattern } from '@7n/rules/scripts/lib/fix/template-deep-merge.mjs'
2
6
 
7
+ /**
8
+ * Один детермінований патерн: deep-merge канонічного snippet-а концерну в
9
+ * `.github/workflows/npm-publish.yml` консюмер-репо — відсутні ключі додаються,
10
+ * канонічні значення мають пріоритет, коментарі й ключі поза шаблоном не
11
+ * чіпаються; якщо файлу немає — створюється зі snippet-а.
12
+ */
3
13
  export const patterns = [
4
14
  createTemplateFixPattern({
5
15
  id: 'npm-module-npm_publish_yml-template',
@@ -3,25 +3,35 @@ type: JS Module
3
3
  title: fix-lint_php_yml.mjs
4
4
  resource: plugins/ci-github/rules/php/lint_php_yml/fix-lint_php_yml.mjs
5
5
  docgen:
6
- crc: 8b0d8995
7
- model: openai-codex/gpt-5.4-mini
6
+ crc: 0699f2b1
7
+ model: omlx/gemma-4-e4b-it-OptiQ-4bit
8
+ tier: local-min
8
9
  score: 100
9
- issues: judge:inaccurate:0.99
10
+ issues: judge:error
10
11
  judgeModel: openai-codex/gpt-5.4-mini
11
12
  ---
12
13
 
13
14
  ## Огляд
14
15
 
15
- `patterns` описує правила для робочих шляхів у межах репозиторію та свідомо пропускає `.github` і `.git`. Функція працює read-only і не пише у ФС чи БД.
16
+ Приводить конфігурації CI-workflow для PHP-домену у консюмер-репозиторії до канонічного шаблону концерну `lint_php_yml`. Гарантує відповідність YAML-файлів лінту встановленому стандарту, додаючи відсутні ключі та застосовуючи канонічні значення, зберігаючи при цьому вихідні коментарі та ключі, що не входять до шаблону. Це забезпечує єдність збірки та лінтування в системі.
16
17
 
17
18
  ## Поведінка
18
19
 
19
- 1. `patterns` визначає набір правил для узгодженого виправлення шаблону `lint-php.yml` у межах репозиторію.
20
- 2. `patterns` орієнтований на підтримку одного цільового workflow-файлу в `.github/workflows/lint-php.yml`, свідомо обходячи службові шляхи `.github` і `.git`.
21
- 3. `patterns` працює в режимі read-only: він формує опис змін, але не виконує запис у файлову систему чи базу даних.
22
- 4. `patterns` потрібен для стандартизації та відновлення очікуваного стану workflow-конфігурації без втручання в інші частини проєкту.
20
+ 1. Перевіряє файли, що знаходяться у каталозі `.github/workflows/lint-php.yml`.
21
+ 2. Використовує `patterns` для застосування канонічного шаблону концерну `lint_php_yml` до цільового файлу.
22
+ 3. При застосуванні шаблону відсутні ключі додаються, а канонічні значення мають пріоритет.
23
+ 4. Коментарі та ключі, які знаходяться поза шаблоном, залишаються без змін.
24
+ 5. Якщо файл цільового шляху відсутній, він створюється на основі наданого snippet-а.
25
+ 6. Ігнорує шляхи `.github` та `.git` під час перевірки.
26
+
27
+ ## Публічний API
28
+
29
+ - patterns — Один детермінований патерн: deep-merge канонічного snippet-а концерну в
30
+ `.github/workflows/lint-php.yml` консюмер-репо — відсутні ключі додаються,
31
+ канонічні значення мають пріоритет, коментарі й ключі поза шаблоном не
32
+ чіпаються; якщо файлу немає — створюється зі snippet-а.
23
33
 
24
34
  ## Гарантії поведінки
25
35
 
26
- - Read-only: не виконує операцій запису (ФС/БД).
36
+ - Власних операцій запису (ФС/БД) у файлі немає; виклики імпортованих модулів можуть писати.
27
37
  - Свідомо пропускає шляхи: `.github`, `.git`.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  type: Directory Index
3
- title: npm/rules/php/lint_php_yml
4
- resource: npm/rules/php/lint_php_yml/
3
+ title: plugins/ci-github/rules/php/lint_php_yml
4
+ resource: plugins/ci-github/rules/php/lint_php_yml/
5
5
  ---
6
6
 
7
7
  | Файл | Тип |
@@ -1,5 +1,15 @@
1
+ /**
2
+ * T0-фікс концерну lint_php_yml: приводить CI-workflow лінту php-домену
3
+ * у консюмер-репо до канонічного шаблону концерну.
4
+ */
1
5
  import { createTemplateFixPattern } from '@7n/rules/scripts/lib/fix/template-deep-merge.mjs'
2
6
 
7
+ /**
8
+ * Один детермінований патерн: deep-merge канонічного snippet-а концерну в
9
+ * `.github/workflows/lint-php.yml` консюмер-репо — відсутні ключі додаються,
10
+ * канонічні значення мають пріоритет, коментарі й ключі поза шаблоном не
11
+ * чіпаються; якщо файлу немає — створюється зі snippet-а.
12
+ */
3
13
  export const patterns = [
4
14
  createTemplateFixPattern({ id: 'php-lint_php_yml-template', targetPath: '.github/workflows/lint-php.yml' })
5
15
  ]
@@ -3,24 +3,37 @@ type: JS Module
3
3
  title: fix-lint_python_yml.mjs
4
4
  resource: plugins/ci-github/rules/python/lint_python_yml/fix-lint_python_yml.mjs
5
5
  docgen:
6
- crc: 0408d343
7
- model: openai-codex/gpt-5.4-mini
6
+ crc: 525f6959
7
+ model: openai-codex/gpt-5.5
8
+ tier: cloud-avg
8
9
  score: 100
9
- issues: judge:inaccurate:0.99
10
+ issues: judge:error
10
11
  judgeModel: openai-codex/gpt-5.4-mini
11
12
  ---
12
13
 
13
14
  ## Огляд
14
15
 
15
- `patterns` описує стандартні правила для роботи з workflow-файлами у репозиторії, щоб узгоджувати очікувану поведінку перевірок. Модуль свідомо пропускає `.github` і `.git`, залишається read-only та не змінює файлову систему чи базу даних.
16
+ Файл декларує автофікс для `python/lint_python_yml`: scaffold відсутнього `.github/workflows/lint-python.yml` з канонічного шаблону правила та `template-deep-merge` для наявного workflow. Він потрібен, щоб дописувати лише канонічні поля для Python lint у GitHub Actions і зберігати локальні налаштування проєкту.
17
+
18
+ Публічна точка входу: `patterns`. Свідомо пропущені шляхи: `.github`, `.git`. Власних операцій запису у файлі немає.
16
19
 
17
20
  ## Поведінка
18
21
 
19
- 1. `patterns` формує перелік стандартних правил виправлення для `lint-python.yml`, щоб уніфікувати структуру цього workflow-файла.
20
- 2. Під час роботи орієнтується на цільовий шлях `.github/workflows/lint-python.yml` і свідомо не зачіпає `.github` та `.git`.
21
- 3. Працює в read-only режимі: сам не змінює файлову систему чи базу даних, а лише описує, що треба виправити.
22
+ 1. `patterns` оголошує автофікс для правила `python/lint_python_yml`, щоб репозиторій отримував канонічний GitHub Actions workflow для Python lint.
23
+
24
+ 2. Якщо `.github/workflows/lint-python.yml` відсутній, автофікс має створити його з шаблону правила.
25
+
26
+ 3. Якщо workflow уже існує, автофікс має доповнити його лише канонічними полями правила, не прибираючи локальні налаштування проєкту.
27
+
28
+ 4. Правило свідомо не обходить службові шляхи `.github` і `.git`, але працює з цільовим workflow-файлом як із винятком для підтримки потрібної CI-конфігурації.
29
+
30
+ 5. Файл лише декларує поведінку автофікса через `patterns`; власних операцій запису не виконує.
31
+
32
+ ## Публічний API
33
+
34
+ - patterns — Фікс-патерни концерну: один template-deep-merge запис для `.github/workflows/lint-python.yml`.
22
35
 
23
36
  ## Гарантії поведінки
24
37
 
25
- - Read-only: не виконує операцій запису (ФС/БД).
38
+ - Власних операцій запису (ФС/БД) у файлі немає; виклики імпортованих модулів можуть писати.
26
39
  - Свідомо пропускає шляхи: `.github`, `.git`.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  type: Directory Index
3
- title: npm/rules/python/lint_python_yml
4
- resource: npm/rules/python/lint_python_yml/
3
+ title: plugins/ci-github/rules/python/lint_python_yml
4
+ resource: plugins/ci-github/rules/python/lint_python_yml/
5
5
  ---
6
6
 
7
7
  | Файл | Тип |