@7n/rules-ci-github 1.9.1 → 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 (54) hide show
  1. package/CHANGELOG.md +8 -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/lint_ga/docs/fix-lint_ga.md +16 -10
  16. package/rules/ga/lint_ga/fix-lint_ga.mjs +10 -0
  17. package/rules/ga/lint_repo_yml/docs/fix-lint_repo_yml.md +20 -8
  18. package/rules/ga/lint_repo_yml/fix-lint_repo_yml.mjs +10 -0
  19. package/rules/ga/service_deploy_workflow/docs/fix-service_deploy_workflow.md +38 -11
  20. package/rules/ga/service_deploy_workflow/fix-service_deploy_workflow.mjs +6 -0
  21. package/rules/ga/vscode_settings/docs/fix-vscode_settings.md +15 -8
  22. package/rules/ga/vscode_settings/fix-vscode_settings.mjs +10 -0
  23. package/rules/ga/zizmor_yml/docs/fix-zizmor_yml.md +14 -9
  24. package/rules/ga/zizmor_yml/fix-zizmor_yml.mjs +10 -0
  25. package/rules/js/lint_js_yml/docs/fix-lint_js_yml.md +16 -8
  26. package/rules/js/lint_js_yml/docs/index.md +2 -2
  27. package/rules/js/lint_js_yml/fix-lint_js_yml.mjs +10 -0
  28. package/rules/k8s/lint_k8s_yml/docs/fix-lint_k8s_yml.md +15 -10
  29. package/rules/k8s/lint_k8s_yml/docs/index.md +2 -2
  30. package/rules/k8s/lint_k8s_yml/fix-lint_k8s_yml.mjs +10 -0
  31. package/rules/npm-module/npm_publish_yml/docs/fix-npm_publish_yml.md +19 -9
  32. package/rules/npm-module/npm_publish_yml/docs/index.md +2 -2
  33. package/rules/npm-module/npm_publish_yml/fix-npm_publish_yml.mjs +10 -0
  34. package/rules/php/lint_php_yml/docs/fix-lint_php_yml.md +19 -9
  35. package/rules/php/lint_php_yml/docs/index.md +2 -2
  36. package/rules/php/lint_php_yml/fix-lint_php_yml.mjs +10 -0
  37. package/rules/python/lint_python_yml/docs/fix-lint_python_yml.md +21 -8
  38. package/rules/python/lint_python_yml/docs/index.md +2 -2
  39. package/rules/python/lint_python_yml/fix-lint_python_yml.mjs +6 -0
  40. package/rules/rust/lint_rust_yml/docs/fix-lint_rust_yml.md +19 -9
  41. package/rules/rust/lint_rust_yml/docs/index.md +2 -2
  42. package/rules/rust/lint_rust_yml/fix-lint_rust_yml.mjs +6 -0
  43. package/rules/rust/toolchain_cache/docs/index.md +2 -4
  44. package/rules/rust/toolchain_cache/docs/main.md +23 -35
  45. package/rules/rust/toolchain_cache/main.mjs +4 -0
  46. package/rules/security/lint_security_yml/docs/fix-lint_security_yml.md +12 -10
  47. package/rules/security/lint_security_yml/docs/index.md +2 -2
  48. package/rules/security/lint_security_yml/fix-lint_security_yml.mjs +6 -0
  49. package/rules/style/lint_style_yml/docs/fix-lint_style_yml.md +10 -9
  50. package/rules/style/lint_style_yml/docs/index.md +2 -2
  51. package/rules/style/lint_style_yml/fix-lint_style_yml.mjs +6 -0
  52. package/rules/text/lint_text/docs/fix-lint_text.md +13 -8
  53. package/rules/text/lint_text/docs/index.md +2 -2
  54. package/rules/text/lint_text/fix-lint_text.mjs +6 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.9.2] - 2026-07-22
4
+
5
+ ### Changed
6
+
7
+ - doc_comments rollout: header-JSDoc у vitest.config (T0 promote)
8
+ - doc_comments rollout: header/export JSDoc у конфігах demo
9
+ - doc_comments rollout: header-JSDoc у vitest.config
10
+
3
11
  ## [1.9.1] - 2026-07-22
4
12
 
5
13
  ### Fixed
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@7n/rules-ci-github",
3
- "version": "1.9.1",
3
+ "version": "1.9.2",
4
4
  "description": "Плагін @7n/rules: канон GitHub Actions (.github/workflows) — обов'язкові workflow, zizmor, VS Code",
5
5
  "keywords": [
6
6
  "github-actions",
@@ -3,28 +3,33 @@ type: JS Module
3
3
  title: fix-clean_merged_ignore_branches.mjs
4
4
  resource: plugins/ci-github/rules/abie/clean_merged_ignore_branches/fix-clean_merged_ignore_branches.mjs
5
5
  docgen:
6
- crc: f3646572
7
- model: openai-codex/gpt-5.5
6
+ crc: 4adccad6
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.97
10
11
  judgeModel: openai-codex/gpt-5.4-mini
11
12
  ---
12
13
 
13
14
  ## Огляд
14
15
 
15
- `patterns` визначає набір шляхів репозиторію, які правило має враховувати під час перевірки. Воно свідомо не охоплює `.git` і `.github`, щоб не аналізувати службові дані Git та конфігурацію GitHub. Правило працює read-only: лише повідомляє про невідповідність очікуваній структурі, не змінюючи файли чи зовнішні сховища.
16
+ Нормалізує workflow чистки злитих гілок до канонічного шаблону концерну, щоб для `.github/workflows/clean-merged-branch.yml` у consumer-репо завжди використовувався один і той самий стандарт. Публічний контракт файлу `patterns`, а `.github` і `.git` свідомо не зачіпаються.
16
17
 
17
18
  ## Поведінка
18
19
 
19
- 1. `patterns` визначає правило виправлення, яке забезпечує наявність workflow для очищення merged branches.
20
+ 1. `patterns` задає один канонічний сценарій приведення workflow чистки злитих гілок у відповідність до шаблону концерну для `.github/workflows/clean-merged-branch.yml`.
21
+ 2. Якщо цільовий файл уже існує, зберігаються всі позатимплейтні ключі та коментарі, а канонічні значення шаблону мають пріоритет у своїй області.
22
+ 3. Якщо цільового файла немає, він створюється з канонічного snippet-а.
23
+ 4. Обробка свідомо обходить `.github` і `.git`, щоб не торкатися службових шляхів поза очікуваним контуром змін.
20
24
 
21
- 2. Правило орієнтується на шаблонний стан файлу `.github/workflows/clean-merged-branch.yml`, щоб уніфікувати поведінку репозиторіїв щодо прибирання вже злитих гілок.
25
+ ## Публічний API
22
26
 
23
- 3. Під час перевірки свідомо не обходить службові шляхи `.github` і `.git`, окрім цільового workflow-файлу, який є предметом виправлення.
24
-
25
- 4. `patterns` лише описує очікуване виправлення й не виконує самостійного запису у файлову систему чи інші сховища.
27
+ - patterns Один детермінований патерн: deep-merge канонічного snippet-а концерну в
28
+ `.github/workflows/clean-merged-branch.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/abie/clean_merged_ignore_branches
4
- resource: npm/rules/abie/clean_merged_ignore_branches/
3
+ title: plugins/ci-github/rules/abie/clean_merged_ignore_branches
4
+ resource: plugins/ci-github/rules/abie/clean_merged_ignore_branches/
5
5
  ---
6
6
 
7
7
  | Файл | Тип |
@@ -1,5 +1,15 @@
1
+ /**
2
+ * T0-фікс концерну clean_merged_ignore_branches: приводить workflow чистки
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/clean-merged-branch.yml` консюмер-репо — відсутні ключі
10
+ * додаються, канонічні значення мають пріоритет, коментарі й ключі поза
11
+ * шаблоном не чіпаються; якщо файлу немає — створюється зі snippet-а.
12
+ */
3
13
  export const patterns = [
4
14
  createTemplateFixPattern({
5
15
  id: 'abie-clean_merged_ignore_branches-template',
@@ -3,28 +3,31 @@ type: JS Module
3
3
  title: fix-lint_docker_yml.mjs
4
4
  resource: plugins/ci-github/rules/docker/lint_docker_yml/fix-lint_docker_yml.mjs
5
5
  docgen:
6
- crc: cbc93b9d
6
+ crc: 229cd1e2
7
7
  model: openai-codex/gpt-5.5
8
+ tier: cloud-avg
8
9
  score: 100
9
- issues: judge:inaccurate:0.98
10
10
  judgeModel: openai-codex/gpt-5.4-mini
11
11
  ---
12
12
 
13
13
  ## Огляд
14
14
 
15
- `patterns` визначає поведінку правила для обходу проєкту без змін у файловій системі чи зовнішніх сховищах. Службові директорії `.github` і `.git` свідомо не входять до перевірюваних шляхів, щоб правило працювало лише з релевантним кодом проєкту.
15
+ Файл задає patterns для приведення CI-workflow docker-лінту в консюмер-репозиторіях до канонічного шаблону концерну. Він існує, щоб уніфікувати перевірку docker-домену без ручного узгодження шаблону.
16
16
 
17
17
  ## Поведінка
18
18
 
19
- 1. `patterns` визначає правило автоматичного виправлення для workflow перевірки Docker.
19
+ 1. `patterns` визначає єдиний детермінований сценарій виправлення для CI-workflow лінту docker-домену в консюмер-репо.
20
+ 2. Сценарій забезпечує наявність канонічного workflow для docker-лінту: якщо файл відсутній, він має бути створений зі стандартного шаблону концерну.
21
+ 3. Якщо workflow уже існує, сценарій приводить його до канонічного стану через пріоритет значень шаблону, зберігаючи сторонні ключі й коментарі поза шаблонною частиною.
22
+ 4. Поведінка потрібна, щоб усі консюмер-репозиторії мали однаковий базовий CI-контроль docker-домену без ручного копіювання шаблону.
20
23
 
21
- 2. `patterns` забезпечує наявність стандартного файлу `.github/workflows/lint-docker.yml`, щоб проєкт мав єдиний CI-контроль Docker-конфігурації.
24
+ ## Публічний API
22
25
 
23
- 3. `patterns` працює як read-only опис виправлення: сам модуль не змінює файлову систему чи зовнішні сховища.
24
-
25
- 4. Під час супровідного обходу шляхів свідомо не аналізуються `.github` і `.git`, щоб не змішувати службові директорії з основним кодом проєкту.
26
+ - patterns Один детермінований патерн: deep-merge канонічного snippet-а концерну в
27
+ `.github/workflows/lint-docker.yml` консюмер-репо — відсутні ключі додаються,
28
+ канонічні значення мають пріоритет, коментарі й ключі поза шаблоном не
29
+ чіпаються; якщо файлу немає — створюється зі snippet-а.
26
30
 
27
31
  ## Гарантії поведінки
28
32
 
29
- - Read-only: не виконує операцій запису (ФС/БД).
30
- - Свідомо пропускає шляхи: `.github`, `.git`.
33
+ - Сценарій зберігає коментарі й ключі поза шаблонною частиною наявного workflow.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  type: Directory Index
3
- title: npm/rules/docker/lint_docker_yml
4
- resource: npm/rules/docker/lint_docker_yml/
3
+ title: plugins/ci-github/rules/docker/lint_docker_yml
4
+ resource: plugins/ci-github/rules/docker/lint_docker_yml/
5
5
  ---
6
6
 
7
7
  | Файл | Тип |
@@ -1,5 +1,15 @@
1
+ /**
2
+ * T0-фікс концерну lint_docker_yml: приводить CI-workflow лінту docker-домену
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-docker.yml` консюмер-репо — відсутні ключі додаються,
10
+ * канонічні значення мають пріоритет, коментарі й ключі поза шаблоном не
11
+ * чіпаються; якщо файлу немає — створюється зі snippet-а.
12
+ */
3
13
  export const patterns = [
4
14
  createTemplateFixPattern({ id: 'docker-lint_docker_yml-template', targetPath: '.github/workflows/lint-docker.yml' })
5
15
  ]
@@ -3,31 +3,31 @@ type: JS Module
3
3
  title: fix-clean_ga_workflows.mjs
4
4
  resource: plugins/ci-github/rules/ga/clean_ga_workflows/fix-clean_ga_workflows.mjs
5
5
  docgen:
6
- crc: f149bf34
6
+ crc: e10fb666
7
7
  model: openai-codex/gpt-5.5
8
8
  tier: cloud-avg
9
9
  score: 100
10
- issues: judge:inaccurate:0.99
11
10
  judgeModel: openai-codex/gpt-5.4-mini
12
11
  ---
13
12
 
14
13
  ## Огляд
15
14
 
16
- `patterns` визначає, які шляхи правило свідомо не розглядає як цільові для перевірки: `.github` і `.git` пропускаються, щоб службові каталоги репозиторію не змішувалися з робочим кодом.
15
+ Файл описує канонічне виправлення workflow `.github/workflows/clean-ga-workflows.yml` для консюмер-репозиторіїв за шаблоном концерну `clean_ga_workflows`. Він потрібен, щоб визначити обовʼязковий сценарій очищення застарілих GitHub Actions workflow-ів.
17
16
 
18
- Правило працює read-only: не записує у файлову систему чи бази даних.
17
+ Публічна точка входу `patterns`.
19
18
 
20
19
  ## Поведінка
21
20
 
22
- 1. `patterns` визначає правило автоматичного виправлення для workflow очищення GitHub Actions.
21
+ 1. `patterns` задає єдиний канонічний сценарій виправлення для workflow очищення застарілих GitHub Actions workflow-ів у консюмер-репозиторії.
22
+ 2. Сценарій приводить файл `.github/workflows/clean-ga-workflows.yml` до шаблону концерну `clean_ga_workflows`: додає відсутні обовʼязкові частини та надає пріоритет канонічним значенням.
23
+ 3. Якщо цільового workflow ще немає, сценарій забезпечує його створення з канонічного шаблону.
24
+ 4. Наявні коментарі та додаткові ключі поза шаблоном зберігаються, щоб не втрачати локальний контекст репозиторію.
23
25
 
24
- 2. Правило гарантує наявність очікуваного файлу `.github/workflows/clean-ga-workflows.yml` на основі затвердженого шаблону.
26
+ ## Публічний API
25
27
 
26
- 3. Виправлення працює як read-only опис дії: саме по собі не записує зміни у файлову систему чи зовнішні сховища.
27
-
28
- 4. Під час застосування загальних перевірок свідомо не розглядаються службові шляхи `.github` і `.git`, щоб не аналізувати інфраструктурні каталоги як звичайний код.
28
+ - patterns Один детермінований патерн: deep-merge канонічного snippet-а концерну в
29
+ `.github/workflows/clean-ga-workflows.yml` консюмер-репо — відсутні ключі
30
+ додаються, канонічні значення мають пріоритет, коментарі й ключі поза
31
+ шаблоном не чіпаються; якщо файлу немає — створюється зі snippet-а.
29
32
 
30
33
  ## Гарантії поведінки
31
-
32
- - Read-only: не виконує операцій запису (ФС/БД).
33
- - Свідомо пропускає шляхи: `.github`, `.git`.
@@ -1,5 +1,15 @@
1
+ /**
2
+ * T0-фікс концерну clean_ga_workflows: приводить workflow чистки застарілих
3
+ * GitHub Actions workflow-ів у консюмер-репо до канонічного шаблону концерну.
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/clean-ga-workflows.yml` консюмер-репо — відсутні ключі
10
+ * додаються, канонічні значення мають пріоритет, коментарі й ключі поза
11
+ * шаблоном не чіпаються; якщо файлу немає — створюється зі snippet-а.
12
+ */
3
13
  export const patterns = [
4
14
  createTemplateFixPattern({
5
15
  id: 'ga-clean_ga_workflows-template',
@@ -3,25 +3,34 @@ type: JS Module
3
3
  title: fix-clean_merged_branch.mjs
4
4
  resource: plugins/ci-github/rules/ga/clean_merged_branch/fix-clean_merged_branch.mjs
5
5
  docgen:
6
- crc: e78a4923
6
+ crc: b4fbbbfb
7
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` звіряє шаблонну конфігурацію з відповідними файлами репозиторію, щоб підтримувати узгодженість між шаблоном і робочим станом. Працює лише на читання, не торкається `.github` і `.git`, і не змінює файлову систему чи базу даних.
16
+ `patterns` нормалізує workflow автоматичного видалення злитих гілок у `consumer`-репо до канонічного шаблону концерну: фіксує цільовий `clean_merged_branch` для `.github/workflows/clean-merged-branch.yml`, щоб цей сценарій відповідав спільним правилам для таких файлів. Для узгодження з контрактом файлу враховує лише релевантний контекст і свідомо не зачіпає шляхи `.github` та `.git` поза цим workflow.
16
17
 
17
18
  ## Поведінка
18
19
 
19
- 1. `patterns` формує набір правил для узгодження шаблонної конфігурації з цільовим workflow-файлом `.github/workflows/clean-merged-branch.yml`.
20
- 2. `patterns` використовує це правило як частину автоматизованого вирівнювання між шаблоном і робочим репозиторієм, щоб підтримувати однакову поведінку в потрібному workflow.
21
- 3. `patterns` свідомо не охоплює шляхи `.github` і `.git`, щоб не зачіпати службові та внутрішні дані репозиторію.
22
- 4. `patterns` працює read-only: лише описує, що треба зіставити, і не записує зміни у файлову систему чи базу даних.
20
+ 1. `patterns` задає один канонічний сценарій вирівнювання workflow для автоматичного видалення злитих гілок у консюмер-репо.
21
+ 2. Сценарій спрямований на `.github/workflows/clean-merged-branch.yml` і приводить його до шаблону концерну.
22
+ 3. Якщо цільовий файл уже існує, зберігає локальні відхилення поза шаблоном, але оновлює відсутні частини та надає пріоритет канонічним значенням.
23
+ 4. Якщо цільового файлу немає, створює його з канонічного snippet-а.
24
+ 5. Не зачіпає свідомо пропущені шляхи `.github` і `.git` поза цільовим workflow-контекстом.
25
+
26
+ ## Публічний API
27
+
28
+ - patterns — Один детермінований патерн: deep-merge канонічного snippet-а концерну в
29
+ `.github/workflows/clean-merged-branch.yml` консюмер-репо — відсутні ключі
30
+ додаються, канонічні значення мають пріоритет, коментарі й ключі поза
31
+ шаблоном не чіпаються; якщо файлу немає — створюється зі snippet-а.
23
32
 
24
33
  ## Гарантії поведінки
25
34
 
26
- - Read-only: не виконує операцій запису (ФС/БД).
35
+ - Власних операцій запису (ФС/БД) у файлі немає; виклики імпортованих модулів можуть писати.
27
36
  - Свідомо пропускає шляхи: `.github`, `.git`.
@@ -1,5 +1,15 @@
1
+ /**
2
+ * T0-фікс концерну clean_merged_branch: приводить workflow автоматичного
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/clean-merged-branch.yml` консюмер-репо — відсутні ключі
10
+ * додаються, канонічні значення мають пріоритет, коментарі й ключі поза
11
+ * шаблоном не чіпаються; якщо файлу немає — створюється зі snippet-а.
12
+ */
3
13
  export const patterns = [
4
14
  createTemplateFixPattern({
5
15
  id: 'ga-clean_merged_branch-template',
@@ -3,28 +3,38 @@ type: JS Module
3
3
  title: fix-git_ai.mjs
4
4
  resource: plugins/ci-github/rules/ga/git_ai/fix-git_ai.mjs
5
5
  docgen:
6
- crc: 1823ea17
6
+ crc: 4dcfdaf1
7
7
  model: openai-codex/gpt-5.5
8
+ tier: cloud-avg
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` визначає шаблони пошуку для перевірки проєктних файлів і свідомо не охоплює службові шляхи `.github` та `.git`.
16
+ Файл описує `patterns` для T0-фіксу концерну `git_ai`: приводить workflow інтеграції git-ai у консюмер-репозиторії до канонічного GitHub Actions шаблону концерну.
16
17
 
17
- Модуль має read-only поведінку без запису у файлову систему чи базу даних, щоб перевірка лише виявляла релевантні збіги й не змінювала стан репозиторію.
18
+ Це потрібно, щоб workflow git-ai відповідав очікуваному шаблону інтеграції та не обробляв шляхи `.github` і `.git`.
18
19
 
19
20
  ## Поведінка
20
21
 
21
- 1. `patterns` визначає автоматичне виправлення для підтримки стандартного workflow Git AI у репозиторії.
22
+ 1. `patterns` визначає єдиний автоматичний фікс для концерну `git_ai`, щоб workflow інтеграції git-ai у консюмер-репозиторії відповідав канонічному шаблону.
22
23
 
23
- 2. `patterns` забезпечує наявність очікуваного файлу `.github/workflows/git-ai.yml`, щоб перевірка правила могла запропонувати єдиний канонічний варіант налаштування.
24
+ 2. Фікс підтримує наявний workflow актуальним: додає відсутні обов’язкові частини, пріоритезує канонічні значення концерну та зберігає сторонні налаштування, які не конфліктують із шаблоном.
24
25
 
25
- 3. Під час пошуку цільових файлів свідомо пропускаються службові шляхи `.github` і `.git`, щоб не аналізувати технічні директорії як звичайний проєктний код.
26
+ 3. Якщо workflow інтеграції git-ai відсутній, `patterns` забезпечує його створення з канонічного шаблону, щоб репозиторій одразу отримав очікувану GitHub Actions інтеграцію.
27
+
28
+ 4. Під час застосування фікса свідомо не обробляються службові шляхи `.github` і `.git`, щоб не зачіпати інфраструктурні області поза цільовим workflow.
29
+
30
+ ## Публічний API
31
+
32
+ - patterns — Один детермінований патерн: deep-merge канонічного snippet-а концерну в
33
+ `.github/workflows/git-ai.yml` консюмер-репо — відсутні ключі додаються,
34
+ канонічні значення мають пріоритет, коментарі й ключі поза шаблоном не
35
+ чіпаються; якщо файлу немає — створюється зі snippet-а.
26
36
 
27
37
  ## Гарантії поведінки
28
38
 
29
- - Read-only: не виконує операцій запису (ФС/БД).
39
+ - Власних операцій запису (ФС/БД) у файлі немає; виклики імпортованих модулів можуть писати.
30
40
  - Свідомо пропускає шляхи: `.github`, `.git`.
@@ -1,5 +1,15 @@
1
+ /**
2
+ * T0-фікс концерну git_ai: приводить workflow інтеграції git-ai у
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/git-ai.yml` консюмер-репо — відсутні ключі додаються,
10
+ * канонічні значення мають пріоритет, коментарі й ключі поза шаблоном не
11
+ * чіпаються; якщо файлу немає — створюється зі snippet-а.
12
+ */
3
13
  export const patterns = [
4
14
  createTemplateFixPattern({ id: 'ga-git_ai-template', targetPath: '.github/workflows/git-ai.yml' })
5
15
  ]
@@ -3,30 +3,36 @@ type: JS Module
3
3
  title: fix-lint_ga.mjs
4
4
  resource: plugins/ci-github/rules/ga/lint_ga/fix-lint_ga.mjs
5
5
  docgen:
6
- crc: 7f4ab512
6
+ crc: b0207391
7
7
  model: openai-codex/gpt-5.5
8
+ tier: cloud-avg
8
9
  score: 100
9
- issues: judge:inaccurate:0.98
10
10
  judgeModel: openai-codex/gpt-5.4-mini
11
11
  ---
12
12
 
13
13
  ## Огляд
14
14
 
15
- `patterns` описує перевірку очікуваного вмісту для `.github/workflows/lint-ga.yml`, щоб lint workflow для Google Analytics залишався узгодженим із шаблоном.
15
+ Файл підтримує T0-фікс для концерну `lint_ga`: приводить CI-workflow лінту `ga`-домену в консюмер-репо до канонічного шаблону концерну.
16
16
 
17
- Секція має read-only призначення: вона фіксує очікувану поведінку без запису у файлову систему чи базу даних. Під час загального обходу свідомо не враховуються службові шляхи `.github` і `.git`.
17
+ Публічна функція `patterns` визначає застосування цього виправлення.
18
18
 
19
19
  ## Поведінка
20
20
 
21
- 1. `patterns` оголошує правило автоматичного виправлення для workflow lint-перевірки Google Analytics.
21
+ 1. `patterns` визначає єдиний канонічний T0-fix для workflow лінту `ga`-домену в консюмер-репо.
22
22
 
23
- 2. `patterns` забезпечує приведення `.github/workflows/lint-ga.yml` до очікуваного шаблонного стану, щоб CI мав стабільну перевірку GA-правил.
23
+ 2. `patterns` описує приведення `.github/workflows/lint-ga.yml` до шаблону концерну.
24
24
 
25
- 3. `patterns` не виконує запис самостійно: воно лише описує доступне виправлення для зовнішнього механізму застосування.
25
+ 3. Якщо цільового workflow ще немає, `patterns` описує його створення з канонічного шаблону.
26
26
 
27
- 4. `patterns` свідомо не охоплює службові шляхи `.github` і `.git` як вхідні області для загального обходу, окрім цільового workflow-файлу, який має бути синхронізований із шаблоном.
27
+ 4. `patterns` не виконує власних операцій запису у файл самостійно, а лише експортує правило виправлення для зовнішнього механізму.
28
+
29
+ 5. Під час роботи концерну обробляється цільовий workflow `.github/workflows/lint-ga.yml`.
30
+
31
+ ## Публічний API
32
+
33
+ - patterns — Один детермінований патерн для канонічного snippet-а концерну в
34
+ `.github/workflows/lint-ga.yml` консюмер-репо.
28
35
 
29
36
  ## Гарантії поведінки
30
37
 
31
- - Read-only: не виконує операцій запису (ФС/БД).
32
- - Свідомо пропускає шляхи: `.github`, `.git`.
38
+ - Власних операцій запису (ФС/БД) у файлі немає; виклики імпортованих модулів можуть писати.
@@ -1,5 +1,15 @@
1
+ /**
2
+ * T0-фікс концерну lint_ga: приводить CI-workflow лінту ga-домену у
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-ga.yml` консюмер-репо — відсутні ключі додаються,
10
+ * канонічні значення мають пріоритет, коментарі й ключі поза шаблоном не
11
+ * чіпаються; якщо файлу немає — створюється зі snippet-а.
12
+ */
3
13
  export const patterns = [
4
14
  createTemplateFixPattern({ id: 'ga-lint_ga-template', targetPath: '.github/workflows/lint-ga.yml' })
5
15
  ]
@@ -3,26 +3,38 @@ type: JS Module
3
3
  title: fix-lint_repo_yml.mjs
4
4
  resource: plugins/ci-github/rules/ga/lint_repo_yml/fix-lint_repo_yml.mjs
5
5
  docgen:
6
- crc: 838883e0
6
+ crc: bcbfc5f8
7
7
  model: openai-codex/gpt-5.4-mini
8
8
  tier: cloud-min
9
9
  score: 100
10
- issues: judge:inaccurate:0.99
10
+ issues: judge-refine:kept-original,judge:inaccurate:0.98
11
11
  judgeModel: openai-codex/gpt-5.4-mini
12
12
  ---
13
13
 
14
14
  ## Огляд
15
15
 
16
- `patterns` описує, які шляхи потрапляють у lint-синхронізацію для `.github/workflows/lint-repo.yml`, щоб ця частина репозиторію оновлювалася за спільними правилами. Він свідомо пропускає `.github` і `.git`, тож працює лише з цільовими шляхами поза цими межами.
16
+ Збігає шляхами `.github/workflows/lint-repo.yml` і повертає `patterns`, щоб репо-рівневий CI lint-workflow у консюмер-репо відповідав канонічному шаблону концерну.
17
+
18
+ Якщо файл вже існує, оновлює лише канонічний workflow-snippet; якщо ні — формує його з шаблону для `lint-repo.yml`.
19
+
20
+ Свідомо не зачіпає `.github` і `.git`, щоб не виходити за межі репо-лінту.
17
21
 
18
22
  ## Поведінка
19
23
 
20
- 1. `patterns` визначає набір правил для синхронізації lint-налаштування з шаблоном у `.github/workflows/lint-repo.yml`.
21
- 2. `patterns` свідомо не охоплює `.github` і `.git`, щоб не втручатися в службові та історичні області репозиторію.
22
- 3. `patterns` працює read-only: він лише описує очікувану поведінку перевірки й не змінює файлову систему чи базу даних.
23
- 4. `patterns` потрібен, щоб підтримувати узгодженість workflow lint-репозиторію з централізованим шаблоном і зменшувати ручне супроводження.
24
+ 1. `patterns` задає один детермінований шаблонний фікс для приведення `.github/workflows/lint-repo.yml` у консюмер-репо до канонічного вигляду концерну.
25
+ 2. Якщо цільовий workflow-файл уже існує, у нього вносяться лише зміни в межах канонічного snippet-а: відсутні ключі додаються, а канонічні значення мають пріоритет.
26
+ 3. Якщо цільового workflow-файлу немає, він створюється на основі канонічного snippet-а.
27
+ 4. Ключі й коментарі поза шаблоном не зачіпаються, тож локальні доповнення поза канонічною частиною зберігаються.
28
+ 5. Під час роботи свідомо обходяться шляхи `.github` і `.git`, щоб не втручатися в службові каталоги.
29
+
30
+ ## Публічний API
31
+
32
+ - patterns — Один детермінований патерн: deep-merge канонічного snippet-а концерну в
33
+ `.github/workflows/lint-repo.yml` консюмер-репо — відсутні ключі додаються,
34
+ канонічні значення мають пріоритет, коментарі й ключі поза шаблоном не
35
+ чіпаються; якщо файлу немає — створюється зі snippet-а.
24
36
 
25
37
  ## Гарантії поведінки
26
38
 
27
- - Read-only: не виконує операцій запису (ФС/БД).
39
+ - Власних операцій запису (ФС/БД) у файлі немає; виклики імпортованих модулів можуть писати.
28
40
  - Свідомо пропускає шляхи: `.github`, `.git`.
@@ -1,5 +1,15 @@
1
+ /**
2
+ * T0-фікс концерну lint_repo_yml: приводить CI-workflow репо-рівневого лінту
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-repo.yml` консюмер-репо — відсутні ключі додаються,
10
+ * канонічні значення мають пріоритет, коментарі й ключі поза шаблоном не
11
+ * чіпаються; якщо файлу немає — створюється зі snippet-а.
12
+ */
3
13
  export const patterns = [
4
14
  createTemplateFixPattern({ id: 'ga-lint_repo_yml-template', targetPath: '.github/workflows/lint-repo.yml' })
5
15
  ]
@@ -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',