@7n/rules-ci-github 1.9.1 → 1.9.3

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 +16 -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
@@ -3,55 +3,43 @@ type: JS Module
3
3
  title: main.mjs
4
4
  resource: plugins/ci-github/rules/rust/toolchain_cache/main.mjs
5
5
  docgen:
6
- crc: 0fcd7663
7
- model: omlx/gemma-4-e4b-it-OptiQ-4bit
6
+ crc: e97443b2
7
+ model: openai-codex/gpt-5.5
8
+ tier: cloud-avg
8
9
  score: 100
9
- issues: judge:inaccurate:0.99
10
10
  judgeModel: openai-codex/gpt-5.4-mini
11
11
  ---
12
12
 
13
13
  ## Огляд
14
14
 
15
- Огляд
16
- Конструкція забезпечує перевірку у `.github/workflows/*.yml` того, що кожен job, що використовує `dtolnay/rust-toolchain@stable` для встановлення Rust toolchain, має подальший крок із кешуванням Rust за допомогою `Swatinem/rust-cache@v2`. Якщо job також виконує `tauri-apps/tauri-action` і `Cargo.toml` лежить у `src-tauri/`, кеш-крок повинен мати `with.workspaces` на цей каталог. Ця логіка контролюється згідно з принципами, описаними у (rust.mdc), використовуючи константи `MISSING_RUST_CACHE` та `MISSING_RUST_CACHE_WORKSPACES` для маркування відхилень.
17
-
18
- Поведінка
19
- MISSING_RUST_CACHE — константа-рядок, яка позначає відсутність необхідного кешування Rust toolchain.
20
- MISSING_RUST_CACHE_WORKSPACES — константа-рядок, що інформує про неправильну конфігурацію кешування для робочих просторів Rust.
21
- TOOLCHAIN_RE — визначення для ідентифікації кроків встановлення Rust toolchain.
22
- CACHE_RE — визначення для ідентифікації кроків, що використовують кешування Rust.
23
- scanToolchainSteps — аналізує вміст YAML-файлу workflow, виявляючи кроки встановлення toolchain та інформацію про кешування в межах одного job-а.
24
- tauriWorkspaceDir — визначає шлях до робочого простору Tauri, коли `Cargo.toml` не знаходиться в корені репозиторію.
25
- lint — сканує всі `.yml` та `.yaml` файли у каталозі `.github/workflows`, перевіряючи відповідність вимогам кешування.
26
- Інструмент працює лише з читанням конфігурацій (Read-only) та здійснює кешування інформації в межах поточного прогону.
15
+ Файл виявляє у `.github/workflows/*.yml` job-и, де `dtolnay/rust-toolchain@stable` встановлює Rust toolchain без подальшого `Swatinem/rust-cache@v2`, щоб workflow не втрачали очікуване кешування Cargo-залежностей. Для job-ів із `tauri-apps/tauri-action` він додатково вимагає `with.workspaces` на `src-tauri/`, коли `Cargo.toml` лежить під `src-tauri/`, а не в корені репозиторію.
27
16
 
28
17
  ## Поведінка
29
18
 
30
- **Поведінка**
31
- MISSING_RUST_CACHE — константа, що позначає відсутність необхідного кешування Rust toolchain.
32
- MISSING_RUST_CACHE_WORKSPACES константа, що позначає неправильну конфігурацію кешування для робочих просторів Rust.
33
- TOOLCHAIN_RE — регулярний вираз для ідентифікації кроків, що встановлюють Rust toolchain.
34
- CACHE_RE регулярний вираз для ідентифікації кроків, що використовують кешування Rust.
35
- scanToolchainSteps — аналізує вміст YAML-файлу workflow, виявляючи кроки встановлення toolchain та інформацію про кешування в межах одного job-а.
36
- tauriWorkspaceDir — визначає шлях до робочого простору Tauri, якщо файл `Cargo.toml` не розташований у корені проєкту.
37
- lint — сканує всі `.yml` та `.yaml` файли в каталозі `.github/workflows`, перевіряючи, чи присутні необхідні кешування для кроків Rust toolchain, і повідомляє про відхилення. При цьому ігнорує каталоги .github та .git.
19
+ `lint` запускає read-only перевірку GitHub Actions workflow-файлів. Дані з YAML-файлів передаються як текст, щоб зберегти коментарі й мінімізувати зміни формату; результатом є lint-повідомлення без власних записів у файлову систему.
20
+
21
+ `scanToolchainSteps` проходить workflow-контент і знаходить кроки Rust toolchain за `TOOLCHAIN_RE`, після чого в межах того самого job-а шукає наступний cache-крок за `CACHE_RE`. Межа job-а визначається відступами, тому перевірка прив’язана до фактичної структури `steps`, а не до повного YAML-парсингу. Якщо cache-крок відсутній після встановлення toolchain, `lint` повертає порушення `MISSING_RUST_CACHE` зі значенням `"missing-rust-cache"` — job має додати `Swatinem/rust-cache@v2`.
22
+
23
+ `tauriWorkspaceDir` додає проєктний контекст до текстового сканування: якщо Rust workspace розміщений у типовому Tauri-каталозі, а не в корені репозиторію, `lint` вимагає, щоб cache-крок у job-і з Tauri action мав окремо заданий workspace. За відсутності такого налаштування повертається порушення `MISSING_RUST_CACHE_WORKSPACES` зі значенням `"missing-rust-cache-workspaces"`.
38
24
 
39
25
  ## Публічний API
40
26
 
41
- Understood. As a technical writer adhering to the specified constraints, I will transform the provided list into concise, action-oriented behavioral documentation in Ukrainian, using only bulleted markers ("name what it does"). I will avoid all introductory/concluding remarks, code blocks, signatures, types, parameters, stdlib mentions, regex descriptions, and internal private names.
27
+ - MISSING_RUST_CACHEReason-код: job ставить Rust toolchain, але не має кроку `Swatinem/rust-cache@v2`.
28
+ - MISSING_RUST_CACHE_WORKSPACES — Reason-код: кеш-крок Tauri-job-а без `with.workspaces` на каталог `src-tauri`.
29
+ - TOOLCHAIN_RE — Рядок кроку встановлення Rust toolchain (`dtolnay/rust-toolchain@…`).
30
+ - CACHE_RE — Рядок кроку кешування Cargo-артефактів (`Swatinem/rust-cache@…`).
31
+ - scanToolchainSteps — Сканує вміст workflow-файла й повертає по одному запису на кожен
32
+ `dtolnay/rust-toolchain@…` крок, з інформацією про cache-крок і tauri-action
33
+ у тому самому job-і (обмежено indentation-dedent-ом).
34
+ - tauriWorkspaceDir — Каталог Rust-workspace-а для `Swatinem/rust-cache` `with.workspaces`, якщо
35
+ `Cargo.toml` не в корені репо, а під `src-tauri/` (типовий Tauri-layout).
36
+ `undefined`, якщо корінь репо вже є workspace-коренем (окремий крок не потрібен).
37
+ - lint — знаходить конфігурації Rust без потрібного cache для збірок і workspace, щоб CI не витрачав час на повторне завантаження залежностей.
42
38
 
43
- Here is the rewritten list:
39
+ Поведінка: повідомлення маркуються як (rust.mdc), щоб порушення було прив’язане до правила Rust.
44
40
 
45
- * MISSING_RUST_CACHE — Ідентифікатор, що позначає відсутність кешу Rust.
46
- * MISSING_RUST_CACHE_WORKSPACES — Ідентифікатор, що позначає відсутність кешу для Rust-робочих просторів.
47
- * TOOLCHAIN_RE — Маркер, що вказує на інструментарій.
48
- * CACHE_RE — Маркер, що стосується механізму кешування.
49
- * scanToolchainSteps — Виявляє всі етапи використання `dtolnay/rust-toolchain@…` у workflow-файлі, надаючи деталі про кешування та дії Tauri у відповідних завданнях.
50
- * tauriWorkspaceDir — Вказує на шлях до Rust-робочого простору для кешування, якщо `Cargo.toml` знаходиться в `src-tauri/`, інакше — не визначений.
51
- * lint — Здійснює перевірку коду на відповідність встановленим стандартам.
41
+ Експортовані константи-рядки: MISSING_RUST_CACHE="missing-rust-cache"позначає відсутній cache для Rust; MISSING_RUST_CACHE_WORKSPACES="missing-rust-cache-workspaces" — позначає відсутній cache для workspace-збірок Rust.
52
42
 
53
43
  ## Гарантії поведінки
54
44
 
55
- - Read-only: не виконує операцій запису (ФС/БД).
56
- - Кешує результати в межах одного прогону.
57
- - Свідомо пропускає шляхи: `.github`, `.git`.
45
+ - Власних операцій запису (ФС/БД) у файлі немає; виклики імпортованих модулів можуть писати.
@@ -20,10 +20,14 @@ import { join, relative } from 'node:path'
20
20
 
21
21
  import { createViolationReporter } from '@7n/rules/scripts/lib/lint-surface/violation-reporter.mjs'
22
22
 
23
+ /** Reason-код: job ставить Rust toolchain, але не має кроку `Swatinem/rust-cache@v2`. */
23
24
  export const MISSING_RUST_CACHE = 'missing-rust-cache'
25
+ /** Reason-код: кеш-крок Tauri-job-а без `with.workspaces` на каталог `src-tauri`. */
24
26
  export const MISSING_RUST_CACHE_WORKSPACES = 'missing-rust-cache-workspaces'
25
27
 
28
+ /** Рядок кроку встановлення Rust toolchain (`dtolnay/rust-toolchain@…`). */
26
29
  export const TOOLCHAIN_RE = /uses:\s*dtolnay\/rust-toolchain@/u
30
+ /** Рядок кроку кешування Cargo-артефактів (`Swatinem/rust-cache@…`). */
27
31
  export const CACHE_RE = /uses:\s*Swatinem\/rust-cache@/u
28
32
  const TAURI_ACTION_RE = /uses:\s*tauri-apps\/tauri-action@/u
29
33
  const WORKSPACES_KEY_RE = /^\s*workspaces\s*:/u
@@ -3,28 +3,30 @@ type: JS Module
3
3
  title: fix-lint_security_yml.mjs
4
4
  resource: plugins/ci-github/rules/security/lint_security_yml/fix-lint_security_yml.mjs
5
5
  docgen:
6
- crc: dab1114f
7
- model: openai-codex/gpt-5.5
6
+ crc: 7063b373
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` визначає межі пошуку в кодовій базі та свідомо оминає `.github` і `.git`, щоб перевірка не зачіпала службові каталоги. Правило працює в read-only режимі й не записує зміни у файлову систему або бази даних.
16
+ Декларативний template-deep-merge для `security/lint_security_yml`, який або створює відсутній `.github/workflows/lint-security.yml` з канонічного шаблону правила, або доповнює наявний workflow лише канонічними полями. Пошук працює через `patterns` і свідомо пропускає `.github` та `.git`, тож правило не зачіпає ці шляхи під час автолікування. Це потрібно, щоб у репозиторії був узгоджений security-lint workflow.
16
17
 
17
18
  ## Поведінка
18
19
 
19
- 1. `patterns` визначає правило автоматичного приведення workflow перевірки безпеки до еталонного шаблону.
20
+ 1. `patterns` задає єдине правило автолікування для `security/lint_security_yml`: воно готує канонічний шаблон для `.github/workflows/lint-security.yml`.
21
+ 2. Якщо цільового workflow-файлу немає, `patterns` ініціює його створення зі стандартною структурою правила.
22
+ 3. Якщо файл уже існує, `patterns` доповнює лише канонічні поля, не перетираючи локальні зміни.
23
+ 4. `patterns` свідомо не працює з шляхами `.github` і `.git`, щоб не зачіпати службові області репозиторію.
20
24
 
21
- 2. Правило орієнтується на файл `.github/workflows/lint-security.yml`, щоб забезпечити наявність узгодженого процесу security lint у CI.
25
+ ## Публічний API
22
26
 
23
- 3. Під час підбору файлів для загальної обробки свідомо пропускаються службові шляхи `.github` і `.git`, щоб не аналізувати інфраструктурні каталоги як звичайний код.
24
-
25
- 4. Зміни не записуються напряму у файлову систему або зовнішні сховища: `patterns` лише описує доступне виправлення для подальшого застосування інструментом.
27
+ - patterns Фікс-патерни концерну: один template-deep-merge запис для `.github/workflows/lint-security.yml`.
26
28
 
27
29
  ## Гарантії поведінки
28
30
 
29
- - Read-only: не виконує операцій запису (ФС/БД).
31
+ - Власних операцій запису (ФС/БД) у файлі немає; виклики імпортованих модулів можуть писати.
30
32
  - Свідомо пропускає шляхи: `.github`, `.git`.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  type: Directory Index
3
- title: npm/rules/security/lint_security_yml
4
- resource: npm/rules/security/lint_security_yml/
3
+ title: plugins/ci-github/rules/security/lint_security_yml
4
+ resource: plugins/ci-github/rules/security/lint_security_yml/
5
5
  ---
6
6
 
7
7
  | Файл | Тип |
@@ -1,5 +1,11 @@
1
+ /**
2
+ * T0-autofix концерну `security/lint_security_yml`: деклараційний template-deep-merge —
3
+ * scaffold відсутнього `.github/workflows/lint-security.yml` з канонічного шаблону правила або
4
+ * дописування в наявний файл лише канонічних полів (локальні — зберігаються).
5
+ */
1
6
  import { createTemplateFixPattern } from '@7n/rules/scripts/lib/fix/template-deep-merge.mjs'
2
7
 
8
+ /** Фікс-патерни концерну: один template-deep-merge запис для `.github/workflows/lint-security.yml`. */
3
9
  export const patterns = [
4
10
  createTemplateFixPattern({
5
11
  id: 'security-lint_security_yml-template',
@@ -3,28 +3,29 @@ type: JS Module
3
3
  title: fix-lint_style_yml.mjs
4
4
  resource: plugins/ci-github/rules/style/lint_style_yml/fix-lint_style_yml.mjs
5
5
  docgen:
6
- crc: d34f182d
6
+ crc: 1230aa27
7
7
  model: openai-codex/gpt-5.5
8
+ tier: cloud-avg
8
9
  score: 100
9
- issues: judge:inaccurate:0.99
10
10
  judgeModel: openai-codex/gpt-5.4-mini
11
11
  ---
12
12
 
13
13
  ## Огляд
14
14
 
15
- Публічна функція `patterns` надає шаблони для зовнішньої перевірки очікуваного стану коду. Модуль працює як read-only джерело правил: не змінює ФС чи БД і свідомо пропускає службові шляхи `.github` та `.git`.
15
+ `style/lint_style_yml` описує автозастосування канонічного workflow `.github/workflows/lint-style.yml` саме для правила `lint-style.yml`. `patterns` потрібна, щоб через `template-deep-merge` створювати відсутній workflow з еталонного шаблону або доповнювати наявний лише обов’язковими канонічними полями без втрати локальних налаштувань.
16
16
 
17
17
  ## Поведінка
18
18
 
19
- 1. `patterns` визначає набір правил автоматичного виправлення для стандартного workflow перевірки стилю.
19
+ 1. `patterns` задає автозастосування канонічного виправлення для workflow перевірки стилю.
20
20
 
21
- 2. `patterns` спрямовує виправлення на файл `.github/workflows/lint-style.yml`, щоб підтримувати єдиний шаблон CI-перевірки стилю в проєкті.
21
+ 2. Якщо `.github/workflows/lint-style.yml` відсутній, правило має створити його з еталонного шаблону.
22
22
 
23
- 3. `patterns` не виконує запис у файлову систему чи інші сховища самостійно, а лише описує очікувану зміну для зовнішнього механізму застосування.
23
+ 3. Якщо workflow уже існує, правило має доповнити його лише обов’язковими канонічними полями, не перезаписуючи локальні налаштування.
24
24
 
25
- 4. Під час роботи свідомо не обробляються службові шляхи `.github` і `.git`, окрім цільового workflow-файлу, для якого визначено шаблонне виправлення.
25
+ ## Публічний API
26
+
27
+ - patterns — Фікс-патерни концерну: один template-deep-merge запис для `.github/workflows/lint-style.yml`.
26
28
 
27
29
  ## Гарантії поведінки
28
30
 
29
- - Read-only: не виконує операцій запису (ФС/БД).
30
- - Свідомо пропускає шляхи: `.github`, `.git`.
31
+ - Власних операцій запису (ФС/БД) у файлі немає; виклики імпортованих модулів можуть писати.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  type: Directory Index
3
- title: npm/rules/style/lint_style_yml
4
- resource: npm/rules/style/lint_style_yml/
3
+ title: plugins/ci-github/rules/style/lint_style_yml
4
+ resource: plugins/ci-github/rules/style/lint_style_yml/
5
5
  ---
6
6
 
7
7
  | Файл | Тип |
@@ -1,5 +1,11 @@
1
+ /**
2
+ * T0-autofix концерну `style/lint_style_yml`: деклараційний template-deep-merge —
3
+ * scaffold відсутнього `.github/workflows/lint-style.yml` з канонічного шаблону правила або
4
+ * дописування в наявний файл лише канонічних полів (локальні — зберігаються).
5
+ */
1
6
  import { createTemplateFixPattern } from '@7n/rules/scripts/lib/fix/template-deep-merge.mjs'
2
7
 
8
+ /** Фікс-патерни концерну: один template-deep-merge запис для `.github/workflows/lint-style.yml`. */
3
9
  export const patterns = [
4
10
  createTemplateFixPattern({ id: 'style-lint_style_yml-template', targetPath: '.github/workflows/lint-style.yml' })
5
11
  ]
@@ -3,25 +3,30 @@ type: JS Module
3
3
  title: fix-lint_text.mjs
4
4
  resource: plugins/ci-github/rules/text/lint_text/fix-lint_text.mjs
5
5
  docgen:
6
- crc: 2e80cc96
6
+ crc: 78ee3182
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` визначає, які текстові зміни вважаються придатними для узгодження з еталонною структурою workflow. Вона потрібна, щоб перевірка зосереджувалась на змісті потрібних файлів і не торкалась службових шляхів `.github` і `.git`.
16
+ `patterns` підтримує `.github/workflows/lint-text.yml` у канонічному стані: створює відсутній workflow з канонічного шаблону правила або доповнює наявний файл декларативним template-deep-merge, зберігаючи локальні поля.
16
17
 
17
18
  ## Поведінка
18
19
 
19
- 1. `patterns` формує набір правил для узгодження текстової перевірки з еталонною структурою workflow.
20
- 2. Підготовлює виправлення для цільового файлу `.github/workflows/lint-text.yml`.
21
- 3. Свідомо обходить службові шляхи `.github` і `.git`, щоб не зачіпати внутрішню інфраструктуру репозиторію.
22
- 4. Працює лише на читання: не змінює файлову систему і не виконує запис у БД.
20
+ 1. `patterns` визначає набір правил для T0-autofix у концерні `text/lint_text` і запускає декларативне злиття шаблону для `.github/workflows/lint-text.yml`.
21
+ 2. Якщо цільовий workflow-файл відсутній, `patterns` ініціює його scaffold із канонічного шаблону правила.
22
+ 3. Якщо workflow-файл уже існує, `patterns` доповнює лише канонічні поля, не перезаписуючи локальні зміни.
23
+ 4. `patterns` працює в межах дозволених шляхів і свідомо пропускає `.github` та `.git`, щоб не зачіпати службові та службово-репозиторні області поза цим сценарієм.
24
+
25
+ ## Публічний API
26
+
27
+ - patterns — Фікс-патерни концерну: один template-deep-merge запис для `.github/workflows/lint-text.yml`.
23
28
 
24
29
  ## Гарантії поведінки
25
30
 
26
- - Read-only: не виконує операцій запису (ФС/БД).
31
+ - Власних операцій запису (ФС/БД) у файлі немає; виклики імпортованих модулів можуть писати.
27
32
  - Свідомо пропускає шляхи: `.github`, `.git`.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  type: Directory Index
3
- title: npm/rules/text/lint_text
4
- resource: npm/rules/text/lint_text/
3
+ title: plugins/ci-github/rules/text/lint_text
4
+ resource: plugins/ci-github/rules/text/lint_text/
5
5
  ---
6
6
 
7
7
  | Файл | Тип |
@@ -1,5 +1,11 @@
1
+ /**
2
+ * T0-autofix концерну `text/lint_text`: деклараційний template-deep-merge —
3
+ * scaffold відсутнього `.github/workflows/lint-text.yml` з канонічного шаблону правила або
4
+ * дописування в наявний файл лише канонічних полів (локальні — зберігаються).
5
+ */
1
6
  import { createTemplateFixPattern } from '@7n/rules/scripts/lib/fix/template-deep-merge.mjs'
2
7
 
8
+ /** Фікс-патерни концерну: один template-deep-merge запис для `.github/workflows/lint-text.yml`. */
3
9
  export const patterns = [
4
10
  createTemplateFixPattern({ id: 'text-lint_text-template', targetPath: '.github/workflows/lint-text.yml' })
5
11
  ]