@7n/rules-ci-github 2.4.6 → 2.5.0
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.
- package/CHANGELOG.md +24 -0
- package/package.json +1 -1
- package/rules/rust/toolchain_cache/toolchain_cache.mdc +1 -1
- package/rules/text/lint_text/lint_text.rego +24 -9
- package/rules/abie/clean_merged_ignore_branches/docs/fix-clean_merged_ignore_branches.md +0 -35
- package/rules/abie/clean_merged_ignore_branches/docs/index.md +0 -9
- package/rules/abie/clean_merged_ignore_branches/fix-clean_merged_ignore_branches.mjs +0 -18
- package/rules/docker/lint_docker_yml/docs/fix-lint_docker_yml.md +0 -33
- package/rules/docker/lint_docker_yml/docs/index.md +0 -9
- package/rules/docker/lint_docker_yml/fix-lint_docker_yml.mjs +0 -15
- package/rules/ga/clean_ga_workflows/docs/fix-clean_ga_workflows.md +0 -33
- package/rules/ga/clean_ga_workflows/docs/index.md +0 -9
- package/rules/ga/clean_ga_workflows/fix-clean_ga_workflows.mjs +0 -18
- package/rules/ga/clean_merged_branch/docs/fix-clean_merged_branch.md +0 -36
- package/rules/ga/clean_merged_branch/docs/index.md +0 -9
- package/rules/ga/clean_merged_branch/fix-clean_merged_branch.mjs +0 -18
- package/rules/ga/git_ai/docs/fix-git_ai.md +0 -40
- package/rules/ga/git_ai/docs/index.md +0 -9
- package/rules/ga/git_ai/fix-git_ai.mjs +0 -15
- package/rules/ga/lint_ga/docs/fix-lint_ga.md +0 -38
- package/rules/ga/lint_ga/docs/index.md +0 -9
- package/rules/ga/lint_ga/fix-lint_ga.mjs +0 -15
- package/rules/ga/lint_repo_yml/docs/fix-lint_repo_yml.md +0 -40
- package/rules/ga/lint_repo_yml/docs/index.md +0 -9
- package/rules/ga/lint_repo_yml/fix-lint_repo_yml.mjs +0 -15
- package/rules/ga/vscode_extensions/docs/fix-vscode_extensions.md +0 -25
- package/rules/ga/vscode_extensions/docs/index.md +0 -11
- package/rules/ga/vscode_extensions/fix-vscode_extensions.mjs +0 -1
- package/rules/ga/vscode_settings/docs/fix-vscode_settings.md +0 -33
- package/rules/ga/vscode_settings/docs/index.md +0 -9
- package/rules/ga/vscode_settings/fix-vscode_settings.mjs +0 -15
- package/rules/ga/workflows/docs/fix-workflows.md +0 -37
- package/rules/ga/workflows/docs/index.md +0 -9
- package/rules/ga/workflows/fix-workflows.mjs +0 -212
- package/rules/ga/zizmor_yml/docs/fix-zizmor_yml.md +0 -33
- package/rules/ga/zizmor_yml/docs/index.md +0 -9
- package/rules/ga/zizmor_yml/fix-zizmor_yml.mjs +0 -13
- package/rules/k8s/lint_k8s_yml/docs/fix-lint_k8s_yml.md +0 -35
- package/rules/k8s/lint_k8s_yml/docs/index.md +0 -9
- package/rules/k8s/lint_k8s_yml/fix-lint_k8s_yml.mjs +0 -15
- package/rules/npm-module/npm_publish_yml/docs/fix-npm_publish_yml.md +0 -37
- package/rules/npm-module/npm_publish_yml/docs/index.md +0 -9
- package/rules/npm-module/npm_publish_yml/fix-npm_publish_yml.mjs +0 -18
- package/rules/rust/toolchain_cache/docs/fix-toolchain_cache.md +0 -35
- package/rules/rust/toolchain_cache/docs/index.md +0 -9
- package/rules/rust/toolchain_cache/fix-toolchain_cache.mjs +0 -239
- package/rules/security/lint_security_yml/docs/fix-lint_security_yml.md +0 -32
- package/rules/security/lint_security_yml/docs/index.md +0 -9
- package/rules/security/lint_security_yml/fix-lint_security_yml.mjs +0 -14
- package/rules/style/lint_style_yml/docs/fix-lint_style_yml.md +0 -31
- package/rules/style/lint_style_yml/docs/index.md +0 -9
- package/rules/style/lint_style_yml/fix-lint_style_yml.mjs +0 -11
- package/rules/text/lint_text/docs/fix-lint_text.md +0 -32
- package/rules/text/lint_text/docs/index.md +0 -9
- package/rules/text/lint_text/fix-lint_text.mjs +0 -11
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,29 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [2.5.0] - 2026-08-29
|
|
4
|
+
|
|
5
|
+
### Removed
|
|
6
|
+
|
|
7
|
+
- Знято сімнадцять JS-канонів T0-фікса — усі `rules/*/*/fix-<concern>.mjs`, чий фікс уже живе у wasm-гості `crates/plugin-ci-github`: `abie/clean_merged_ignore_branches`, `docker/lint_docker_yml`, `ga/clean_ga_workflows`, `ga/clean_merged_branch`, `ga/git_ai`, `ga/lint_ga`, `ga/lint_repo_yml`, `ga/vscode_extensions`, `ga/vscode_settings`, `ga/workflows`, `ga/zizmor_yml`, `k8s/lint_k8s_yml`, `npm-module/npm_publish_yml`, `rust/toolchain_cache`, `security/lint_security_yml`, `style/lint_style_yml`, `text/lint_text`. Разом із ними — їхні теки `docs/` і чотирнадцять характеризаційних тест-файлів. Гість відтоді ЄДИНА реалізація фіксу цих концернів, а не пріоритетна з JS-fallback-ом.
|
|
8
|
+
|
|
9
|
+
Спостережувана поведінка `--fix` не змінилась: гість і доти мав пріоритет (`T0Pattern.guestFix`). Джерела концернів — `.rego`, `concern.json`, `template/**`, `.mdc` — НЕ чіпані: їх гість вшиває `include_str!`-ом, і detect-парність лишається живою.
|
|
10
|
+
|
|
11
|
+
Практичний наслідок, який варто знати: fallback-у більше немає. Якщо wasm-компонент `ci-github` у консюмері не резолвиться (плагін не зібрано, розбіжність піна, хост без wasm), концерн деградує з «автофікс» у «порушення показано, концерн пішов у LLM-ладдер» — раніше цей випадок гасив JS-канон.
|
|
12
|
+
|
|
13
|
+
`ga/service_deploy_workflow` і `ci_artifact/consume` СВІДОМО лишились на JS (§2.81: їхні фікси потребують графа ввімкнених правил, каналу до якого гість не має).
|
|
14
|
+
|
|
15
|
+
Деталі й зразок — §2.90 / §2.88 `docs/plans/2026-08-05-open-questions-register.md`.
|
|
16
|
+
|
|
17
|
+
## [2.4.7] - 2026-08-29
|
|
18
|
+
|
|
19
|
+
### Changed
|
|
20
|
+
|
|
21
|
+
- `ensure_step_uses_key_present` прибрано цілком — після longhand-правок `lint_ga.rego` (#563) і `lint_text.rego` (#565) жоден вшитий `.rego` не читає `step.uses` незахищеним прямим доступом, тож обхід regorus-бага на боці Rust став мертвим кодом
|
|
22
|
+
|
|
23
|
+
### Fixed
|
|
24
|
+
|
|
25
|
+
- text/lint_text: `.rego` переписано на longhand-форму `job_uses_set` і позитивне звʼязування актуальних значень перед `not` — workflow без джоби `text` більше не валить пакет у `rego-engine-error`, а віддає канонічний набір `policy-deny`
|
|
26
|
+
|
|
3
27
|
## [2.4.6] - 2026-08-29
|
|
4
28
|
|
|
5
29
|
### Fixed
|
package/package.json
CHANGED
|
@@ -18,6 +18,6 @@ lint-workflow, цей — universal per-job перевірка для решти
|
|
|
18
18
|
корені репо, а під `<ws>/src-tauri/` (типовий Tauri-layout) — крок
|
|
19
19
|
`Swatinem/rust-cache@v2` має мати `with.workspaces: <ws>/src-tauri`.
|
|
20
20
|
|
|
21
|
-
Автофікс (`
|
|
21
|
+
Автофікс (wasm-гість `crates/plugin-ci-github`, T0, `fixability: config`) вставляє відсутній
|
|
22
22
|
крок одразу після `dtolnay/rust-toolchain@…` (і `with.workspaces`, де потрібно)
|
|
23
23
|
текстовим splice-ом — зберігає формат/коментарі, ідемпотентно.
|
|
@@ -29,10 +29,19 @@ gha_on := object.get(input, "on", object.get(input, "true", {}))
|
|
|
29
29
|
|
|
30
30
|
job := input.jobs.text
|
|
31
31
|
|
|
32
|
-
job_uses_set contains job.steps[_].uses
|
|
32
|
+
# LONGHAND, а не shorthand `job_uses_set contains job.steps[_].uses`:
|
|
33
|
+
# shorthand-форма падає під regorus з «item cannot be indexed», коли `job`
|
|
34
|
+
# undefined (у workflow немає джоби `text`) або коли крок не має `uses:` —
|
|
35
|
+
# замість канонічного набору `deny` порт віддавав одну `rego-engine-error`.
|
|
36
|
+
# Під OPA обидві форми еквівалентні; longhand — спільний знаменник.
|
|
37
|
+
job_uses_set contains u if {
|
|
38
|
+
some step in job.steps
|
|
39
|
+
u := step.uses
|
|
40
|
+
}
|
|
33
41
|
|
|
34
|
-
job_run_blob := concat("\n", [run |
|
|
35
|
-
|
|
42
|
+
job_run_blob := concat("\n", [object.get(step, "run", "") |
|
|
43
|
+
some step in job.steps
|
|
44
|
+
object.get(step, "run", "") != ""
|
|
36
45
|
])
|
|
37
46
|
|
|
38
47
|
expected_uses_set contains u if {
|
|
@@ -41,10 +50,9 @@ expected_uses_set contains u if {
|
|
|
41
50
|
u != ""
|
|
42
51
|
}
|
|
43
52
|
|
|
44
|
-
expected_run_substrings contains
|
|
53
|
+
expected_run_substrings contains object.get(step, "run", "") if {
|
|
45
54
|
some step in data.template.snippet.jobs.text.steps
|
|
46
|
-
|
|
47
|
-
r != ""
|
|
55
|
+
object.get(step, "run", "") != ""
|
|
48
56
|
}
|
|
49
57
|
|
|
50
58
|
deny contains msg if {
|
|
@@ -52,18 +60,25 @@ deny contains msg if {
|
|
|
52
60
|
msg := sprintf("lint-text.yml: name має бути \"%v\" (text.mdc)", [expected_name])
|
|
53
61
|
}
|
|
54
62
|
|
|
63
|
+
# Актуальне значення звʼязується ОКРЕМИМ позитивним виразом перед `not`:
|
|
64
|
+
# при undefined-аргументі regorus рахує `not helper(undefined, …)` істиною
|
|
65
|
+
# (зайвий deny), тоді як OPA лишає весь body undefined і deny мовчить.
|
|
66
|
+
# Звʼязування вирівнює обидва рушії на OPA-семантиці.
|
|
55
67
|
deny contains msg if {
|
|
56
|
-
|
|
68
|
+
actual_push_branches := gha_on.push.branches
|
|
69
|
+
not branches_superset_of(actual_push_branches, expected_push_branches)
|
|
57
70
|
msg := "lint-text.yml: on.push.branches має містити dev і main (text.mdc)"
|
|
58
71
|
}
|
|
59
72
|
|
|
60
73
|
deny contains msg if {
|
|
61
|
-
|
|
74
|
+
actual_pr_branches := gha_on.pull_request.branches
|
|
75
|
+
not branches_superset_of(actual_pr_branches, expected_pr_branches)
|
|
62
76
|
msg := "lint-text.yml: on.pull_request.branches має містити dev і main (text.mdc)"
|
|
63
77
|
}
|
|
64
78
|
|
|
65
79
|
deny contains msg if {
|
|
66
|
-
|
|
80
|
+
actual_push_paths := gha_on.push.paths
|
|
81
|
+
not paths_superset_of(actual_push_paths, expected_push_paths)
|
|
67
82
|
msg := "lint-text.yml: on.push.paths має містити очікувані glob-и (text.mdc)"
|
|
68
83
|
}
|
|
69
84
|
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
type: JS Module
|
|
3
|
-
title: fix-clean_merged_ignore_branches.mjs
|
|
4
|
-
resource: plugins/ci-github/rules/abie/clean_merged_ignore_branches/fix-clean_merged_ignore_branches.mjs
|
|
5
|
-
docgen:
|
|
6
|
-
crc: 4adccad6
|
|
7
|
-
model: openai-codex/gpt-5.4-mini
|
|
8
|
-
tier: cloud-min
|
|
9
|
-
score: 100
|
|
10
|
-
issues: judge-refine:kept-original,judge:inaccurate:0.97
|
|
11
|
-
judgeModel: openai-codex/gpt-5.4-mini
|
|
12
|
-
---
|
|
13
|
-
|
|
14
|
-
## Огляд
|
|
15
|
-
|
|
16
|
-
Нормалізує workflow чистки злитих гілок до канонічного шаблону концерну, щоб для `.github/workflows/clean-merged-branch.yml` у consumer-репо завжди використовувався один і той самий стандарт. Публічний контракт файлу — `patterns`, а `.github` і `.git` свідомо не зачіпаються.
|
|
17
|
-
|
|
18
|
-
## Поведінка
|
|
19
|
-
|
|
20
|
-
1. `patterns` задає один канонічний сценарій приведення workflow чистки злитих гілок у відповідність до шаблону концерну для `.github/workflows/clean-merged-branch.yml`.
|
|
21
|
-
2. Якщо цільовий файл уже існує, зберігаються всі позатимплейтні ключі та коментарі, а канонічні значення шаблону мають пріоритет у своїй області.
|
|
22
|
-
3. Якщо цільового файла немає, він створюється з канонічного snippet-а.
|
|
23
|
-
4. Обробка свідомо обходить `.github` і `.git`, щоб не торкатися службових шляхів поза очікуваним контуром змін.
|
|
24
|
-
|
|
25
|
-
## Публічний API
|
|
26
|
-
|
|
27
|
-
- patterns — Один детермінований патерн: deep-merge канонічного snippet-а концерну в
|
|
28
|
-
`.github/workflows/clean-merged-branch.yml` консюмер-репо — відсутні ключі
|
|
29
|
-
додаються, канонічні значення мають пріоритет, коментарі й ключі поза
|
|
30
|
-
шаблоном не чіпаються; якщо файлу немає — створюється зі snippet-а.
|
|
31
|
-
|
|
32
|
-
## Гарантії поведінки
|
|
33
|
-
|
|
34
|
-
- Власних операцій запису (ФС/БД) у файлі немає; виклики імпортованих модулів можуть писати.
|
|
35
|
-
- Свідомо пропускає шляхи: `.github`, `.git`.
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
type: Directory Index
|
|
3
|
-
title: plugins/ci-github/rules/abie/clean_merged_ignore_branches
|
|
4
|
-
resource: plugins/ci-github/rules/abie/clean_merged_ignore_branches/
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
| Файл | Тип |
|
|
8
|
-
| --------------------------------------------------------------------------- | --------- |
|
|
9
|
-
| [fix-clean_merged_ignore_branches.mjs](fix-clean_merged_ignore_branches.md) | JS Module |
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* T0-фікс концерну clean_merged_ignore_branches: приводить workflow чистки
|
|
3
|
-
* злитих гілок у консюмер-репо до канонічного шаблону концерну.
|
|
4
|
-
*/
|
|
5
|
-
import { createTemplateFixPattern } from '@7n/rules/scripts/lib/fix/template-deep-merge.mjs'
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Один детермінований патерн: deep-merge канонічного snippet-а концерну в
|
|
9
|
-
* `.github/workflows/clean-merged-branch.yml` консюмер-репо — відсутні ключі
|
|
10
|
-
* додаються, канонічні значення мають пріоритет, коментарі й ключі поза
|
|
11
|
-
* шаблоном не чіпаються; якщо файлу немає — створюється зі snippet-а.
|
|
12
|
-
*/
|
|
13
|
-
export const patterns = [
|
|
14
|
-
createTemplateFixPattern({
|
|
15
|
-
id: 'abie-clean_merged_ignore_branches-template',
|
|
16
|
-
targetPath: '.github/workflows/clean-merged-branch.yml'
|
|
17
|
-
})
|
|
18
|
-
]
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
type: JS Module
|
|
3
|
-
title: fix-lint_docker_yml.mjs
|
|
4
|
-
resource: plugins/ci-github/rules/docker/lint_docker_yml/fix-lint_docker_yml.mjs
|
|
5
|
-
docgen:
|
|
6
|
-
crc: 229cd1e2
|
|
7
|
-
model: openai-codex/gpt-5.5
|
|
8
|
-
tier: cloud-avg
|
|
9
|
-
score: 100
|
|
10
|
-
judgeModel: openai-codex/gpt-5.4-mini
|
|
11
|
-
---
|
|
12
|
-
|
|
13
|
-
## Огляд
|
|
14
|
-
|
|
15
|
-
Файл задає patterns для приведення CI-workflow docker-лінту в консюмер-репозиторіях до канонічного шаблону концерну. Він існує, щоб уніфікувати перевірку docker-домену без ручного узгодження шаблону.
|
|
16
|
-
|
|
17
|
-
## Поведінка
|
|
18
|
-
|
|
19
|
-
1. `patterns` визначає єдиний детермінований сценарій виправлення для CI-workflow лінту docker-домену в консюмер-репо.
|
|
20
|
-
2. Сценарій забезпечує наявність канонічного workflow для docker-лінту: якщо файл відсутній, він має бути створений зі стандартного шаблону концерну.
|
|
21
|
-
3. Якщо workflow уже існує, сценарій приводить його до канонічного стану через пріоритет значень шаблону, зберігаючи сторонні ключі й коментарі поза шаблонною частиною.
|
|
22
|
-
4. Поведінка потрібна, щоб усі консюмер-репозиторії мали однаковий базовий CI-контроль docker-домену без ручного копіювання шаблону.
|
|
23
|
-
|
|
24
|
-
## Публічний API
|
|
25
|
-
|
|
26
|
-
- patterns — Один детермінований патерн: deep-merge канонічного snippet-а концерну в
|
|
27
|
-
`.github/workflows/lint-docker.yml` консюмер-репо — відсутні ключі додаються,
|
|
28
|
-
канонічні значення мають пріоритет, коментарі й ключі поза шаблоном не
|
|
29
|
-
чіпаються; якщо файлу немає — створюється зі snippet-а.
|
|
30
|
-
|
|
31
|
-
## Гарантії поведінки
|
|
32
|
-
|
|
33
|
-
- Сценарій зберігає коментарі й ключі поза шаблонною частиною наявного workflow.
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
type: Directory Index
|
|
3
|
-
title: plugins/ci-github/rules/docker/lint_docker_yml
|
|
4
|
-
resource: plugins/ci-github/rules/docker/lint_docker_yml/
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
| Файл | Тип |
|
|
8
|
-
| ------------------------------------------------- | --------- |
|
|
9
|
-
| [fix-lint_docker_yml.mjs](fix-lint_docker_yml.md) | JS Module |
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* T0-фікс концерну lint_docker_yml: приводить CI-workflow лінту docker-домену
|
|
3
|
-
* у консюмер-репо до канонічного шаблону концерну.
|
|
4
|
-
*/
|
|
5
|
-
import { createTemplateFixPattern } from '@7n/rules/scripts/lib/fix/template-deep-merge.mjs'
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Один детермінований патерн: deep-merge канонічного snippet-а концерну в
|
|
9
|
-
* `.github/workflows/lint-docker.yml` консюмер-репо — відсутні ключі додаються,
|
|
10
|
-
* канонічні значення мають пріоритет, коментарі й ключі поза шаблоном не
|
|
11
|
-
* чіпаються; якщо файлу немає — створюється зі snippet-а.
|
|
12
|
-
*/
|
|
13
|
-
export const patterns = [
|
|
14
|
-
createTemplateFixPattern({ id: 'docker-lint_docker_yml-template', targetPath: '.github/workflows/lint-docker.yml' })
|
|
15
|
-
]
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
type: JS Module
|
|
3
|
-
title: fix-clean_ga_workflows.mjs
|
|
4
|
-
resource: plugins/ci-github/rules/ga/clean_ga_workflows/fix-clean_ga_workflows.mjs
|
|
5
|
-
docgen:
|
|
6
|
-
crc: e10fb666
|
|
7
|
-
model: openai-codex/gpt-5.5
|
|
8
|
-
tier: cloud-avg
|
|
9
|
-
score: 100
|
|
10
|
-
judgeModel: openai-codex/gpt-5.4-mini
|
|
11
|
-
---
|
|
12
|
-
|
|
13
|
-
## Огляд
|
|
14
|
-
|
|
15
|
-
Файл описує канонічне виправлення workflow `.github/workflows/clean-ga-workflows.yml` для консюмер-репозиторіїв за шаблоном концерну `clean_ga_workflows`. Він потрібен, щоб визначити обовʼязковий сценарій очищення застарілих GitHub Actions workflow-ів.
|
|
16
|
-
|
|
17
|
-
Публічна точка входу — `patterns`.
|
|
18
|
-
|
|
19
|
-
## Поведінка
|
|
20
|
-
|
|
21
|
-
1. `patterns` задає єдиний канонічний сценарій виправлення для workflow очищення застарілих GitHub Actions workflow-ів у консюмер-репозиторії.
|
|
22
|
-
2. Сценарій приводить файл `.github/workflows/clean-ga-workflows.yml` до шаблону концерну `clean_ga_workflows`: додає відсутні обовʼязкові частини та надає пріоритет канонічним значенням.
|
|
23
|
-
3. Якщо цільового workflow ще немає, сценарій забезпечує його створення з канонічного шаблону.
|
|
24
|
-
4. Наявні коментарі та додаткові ключі поза шаблоном зберігаються, щоб не втрачати локальний контекст репозиторію.
|
|
25
|
-
|
|
26
|
-
## Публічний API
|
|
27
|
-
|
|
28
|
-
- patterns — Один детермінований патерн: deep-merge канонічного snippet-а концерну в
|
|
29
|
-
`.github/workflows/clean-ga-workflows.yml` консюмер-репо — відсутні ключі
|
|
30
|
-
додаються, канонічні значення мають пріоритет, коментарі й ключі поза
|
|
31
|
-
шаблоном не чіпаються; якщо файлу немає — створюється зі snippet-а.
|
|
32
|
-
|
|
33
|
-
## Гарантії поведінки
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
type: Directory Index
|
|
3
|
-
title: plugins/ci-github/rules/ga/clean_ga_workflows
|
|
4
|
-
resource: plugins/ci-github/rules/ga/clean_ga_workflows/
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
| Файл | Тип |
|
|
8
|
-
| ------------------------------------------------------- | --------- |
|
|
9
|
-
| [fix-clean_ga_workflows.mjs](fix-clean_ga_workflows.md) | JS Module |
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* T0-фікс концерну clean_ga_workflows: приводить workflow чистки застарілих
|
|
3
|
-
* GitHub Actions workflow-ів у консюмер-репо до канонічного шаблону концерну.
|
|
4
|
-
*/
|
|
5
|
-
import { createTemplateFixPattern } from '@7n/rules/scripts/lib/fix/template-deep-merge.mjs'
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Один детермінований патерн: deep-merge канонічного snippet-а концерну в
|
|
9
|
-
* `.github/workflows/clean-ga-workflows.yml` консюмер-репо — відсутні ключі
|
|
10
|
-
* додаються, канонічні значення мають пріоритет, коментарі й ключі поза
|
|
11
|
-
* шаблоном не чіпаються; якщо файлу немає — створюється зі snippet-а.
|
|
12
|
-
*/
|
|
13
|
-
export const patterns = [
|
|
14
|
-
createTemplateFixPattern({
|
|
15
|
-
id: 'ga-clean_ga_workflows-template',
|
|
16
|
-
targetPath: '.github/workflows/clean-ga-workflows.yml'
|
|
17
|
-
})
|
|
18
|
-
]
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
type: JS Module
|
|
3
|
-
title: fix-clean_merged_branch.mjs
|
|
4
|
-
resource: plugins/ci-github/rules/ga/clean_merged_branch/fix-clean_merged_branch.mjs
|
|
5
|
-
docgen:
|
|
6
|
-
crc: b4fbbbfb
|
|
7
|
-
model: openai-codex/gpt-5.4-mini
|
|
8
|
-
tier: cloud-min
|
|
9
|
-
score: 100
|
|
10
|
-
issues: judge-refine:kept-original,judge:inaccurate:0.98
|
|
11
|
-
judgeModel: openai-codex/gpt-5.4-mini
|
|
12
|
-
---
|
|
13
|
-
|
|
14
|
-
## Огляд
|
|
15
|
-
|
|
16
|
-
`patterns` нормалізує workflow автоматичного видалення злитих гілок у `consumer`-репо до канонічного шаблону концерну: фіксує цільовий `clean_merged_branch` для `.github/workflows/clean-merged-branch.yml`, щоб цей сценарій відповідав спільним правилам для таких файлів. Для узгодження з контрактом файлу враховує лише релевантний контекст і свідомо не зачіпає шляхи `.github` та `.git` поза цим workflow.
|
|
17
|
-
|
|
18
|
-
## Поведінка
|
|
19
|
-
|
|
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-а.
|
|
32
|
-
|
|
33
|
-
## Гарантії поведінки
|
|
34
|
-
|
|
35
|
-
- Власних операцій запису (ФС/БД) у файлі немає; виклики імпортованих модулів можуть писати.
|
|
36
|
-
- Свідомо пропускає шляхи: `.github`, `.git`.
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
type: Directory Index
|
|
3
|
-
title: plugins/ci-github/rules/ga/clean_merged_branch
|
|
4
|
-
resource: plugins/ci-github/rules/ga/clean_merged_branch/
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
| Файл | Тип |
|
|
8
|
-
| --------------------------------------------------------- | --------- |
|
|
9
|
-
| [fix-clean_merged_branch.mjs](fix-clean_merged_branch.md) | JS Module |
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* T0-фікс концерну clean_merged_branch: приводить workflow автоматичного
|
|
3
|
-
* видалення злитих гілок у консюмер-репо до канонічного шаблону концерну.
|
|
4
|
-
*/
|
|
5
|
-
import { createTemplateFixPattern } from '@7n/rules/scripts/lib/fix/template-deep-merge.mjs'
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Один детермінований патерн: deep-merge канонічного snippet-а концерну в
|
|
9
|
-
* `.github/workflows/clean-merged-branch.yml` консюмер-репо — відсутні ключі
|
|
10
|
-
* додаються, канонічні значення мають пріоритет, коментарі й ключі поза
|
|
11
|
-
* шаблоном не чіпаються; якщо файлу немає — створюється зі snippet-а.
|
|
12
|
-
*/
|
|
13
|
-
export const patterns = [
|
|
14
|
-
createTemplateFixPattern({
|
|
15
|
-
id: 'ga-clean_merged_branch-template',
|
|
16
|
-
targetPath: '.github/workflows/clean-merged-branch.yml'
|
|
17
|
-
})
|
|
18
|
-
]
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
type: JS Module
|
|
3
|
-
title: fix-git_ai.mjs
|
|
4
|
-
resource: plugins/ci-github/rules/ga/git_ai/fix-git_ai.mjs
|
|
5
|
-
docgen:
|
|
6
|
-
crc: 4dcfdaf1
|
|
7
|
-
model: openai-codex/gpt-5.5
|
|
8
|
-
tier: cloud-avg
|
|
9
|
-
score: 100
|
|
10
|
-
issues: judge-refine:kept-original,judge:inaccurate:0.98
|
|
11
|
-
judgeModel: openai-codex/gpt-5.4-mini
|
|
12
|
-
---
|
|
13
|
-
|
|
14
|
-
## Огляд
|
|
15
|
-
|
|
16
|
-
Файл описує `patterns` для T0-фіксу концерну `git_ai`: приводить workflow інтеграції git-ai у консюмер-репозиторії до канонічного GitHub Actions шаблону концерну.
|
|
17
|
-
|
|
18
|
-
Це потрібно, щоб workflow git-ai відповідав очікуваному шаблону інтеграції та не обробляв шляхи `.github` і `.git`.
|
|
19
|
-
|
|
20
|
-
## Поведінка
|
|
21
|
-
|
|
22
|
-
1. `patterns` визначає єдиний автоматичний фікс для концерну `git_ai`, щоб workflow інтеграції git-ai у консюмер-репозиторії відповідав канонічному шаблону.
|
|
23
|
-
|
|
24
|
-
2. Фікс підтримує наявний workflow актуальним: додає відсутні обов’язкові частини, пріоритезує канонічні значення концерну та зберігає сторонні налаштування, які не конфліктують із шаблоном.
|
|
25
|
-
|
|
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-а.
|
|
36
|
-
|
|
37
|
-
## Гарантії поведінки
|
|
38
|
-
|
|
39
|
-
- Власних операцій запису (ФС/БД) у файлі немає; виклики імпортованих модулів можуть писати.
|
|
40
|
-
- Свідомо пропускає шляхи: `.github`, `.git`.
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* T0-фікс концерну git_ai: приводить workflow інтеграції git-ai у
|
|
3
|
-
* консюмер-репо до канонічного шаблону концерну.
|
|
4
|
-
*/
|
|
5
|
-
import { createTemplateFixPattern } from '@7n/rules/scripts/lib/fix/template-deep-merge.mjs'
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Один детермінований патерн: deep-merge канонічного snippet-а концерну в
|
|
9
|
-
* `.github/workflows/git-ai.yml` консюмер-репо — відсутні ключі додаються,
|
|
10
|
-
* канонічні значення мають пріоритет, коментарі й ключі поза шаблоном не
|
|
11
|
-
* чіпаються; якщо файлу немає — створюється зі snippet-а.
|
|
12
|
-
*/
|
|
13
|
-
export const patterns = [
|
|
14
|
-
createTemplateFixPattern({ id: 'ga-git_ai-template', targetPath: '.github/workflows/git-ai.yml' })
|
|
15
|
-
]
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
type: JS Module
|
|
3
|
-
title: fix-lint_ga.mjs
|
|
4
|
-
resource: plugins/ci-github/rules/ga/lint_ga/fix-lint_ga.mjs
|
|
5
|
-
docgen:
|
|
6
|
-
crc: b0207391
|
|
7
|
-
model: openai-codex/gpt-5.5
|
|
8
|
-
tier: cloud-avg
|
|
9
|
-
score: 100
|
|
10
|
-
judgeModel: openai-codex/gpt-5.4-mini
|
|
11
|
-
---
|
|
12
|
-
|
|
13
|
-
## Огляд
|
|
14
|
-
|
|
15
|
-
Файл підтримує T0-фікс для концерну `lint_ga`: приводить CI-workflow лінту `ga`-домену в консюмер-репо до канонічного шаблону концерну.
|
|
16
|
-
|
|
17
|
-
Публічна функція `patterns` визначає застосування цього виправлення.
|
|
18
|
-
|
|
19
|
-
## Поведінка
|
|
20
|
-
|
|
21
|
-
1. `patterns` визначає єдиний канонічний T0-fix для workflow лінту `ga`-домену в консюмер-репо.
|
|
22
|
-
|
|
23
|
-
2. `patterns` описує приведення `.github/workflows/lint-ga.yml` до шаблону концерну.
|
|
24
|
-
|
|
25
|
-
3. Якщо цільового workflow ще немає, `patterns` описує його створення з канонічного шаблону.
|
|
26
|
-
|
|
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` консюмер-репо.
|
|
35
|
-
|
|
36
|
-
## Гарантії поведінки
|
|
37
|
-
|
|
38
|
-
- Власних операцій запису (ФС/БД) у файлі немає; виклики імпортованих модулів можуть писати.
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* T0-фікс концерну lint_ga: приводить CI-workflow лінту ga-домену у
|
|
3
|
-
* консюмер-репо до канонічного шаблону концерну.
|
|
4
|
-
*/
|
|
5
|
-
import { createTemplateFixPattern } from '@7n/rules/scripts/lib/fix/template-deep-merge.mjs'
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Один детермінований патерн: deep-merge канонічного snippet-а концерну в
|
|
9
|
-
* `.github/workflows/lint-ga.yml` консюмер-репо — відсутні ключі додаються,
|
|
10
|
-
* канонічні значення мають пріоритет, коментарі й ключі поза шаблоном не
|
|
11
|
-
* чіпаються; якщо файлу немає — створюється зі snippet-а.
|
|
12
|
-
*/
|
|
13
|
-
export const patterns = [
|
|
14
|
-
createTemplateFixPattern({ id: 'ga-lint_ga-template', targetPath: '.github/workflows/lint-ga.yml' })
|
|
15
|
-
]
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
type: JS Module
|
|
3
|
-
title: fix-lint_repo_yml.mjs
|
|
4
|
-
resource: plugins/ci-github/rules/ga/lint_repo_yml/fix-lint_repo_yml.mjs
|
|
5
|
-
docgen:
|
|
6
|
-
crc: bcbfc5f8
|
|
7
|
-
model: openai-codex/gpt-5.4-mini
|
|
8
|
-
tier: cloud-min
|
|
9
|
-
score: 100
|
|
10
|
-
issues: judge-refine:kept-original,judge:inaccurate:0.98
|
|
11
|
-
judgeModel: openai-codex/gpt-5.4-mini
|
|
12
|
-
---
|
|
13
|
-
|
|
14
|
-
## Огляд
|
|
15
|
-
|
|
16
|
-
Збігає шляхами `.github/workflows/lint-repo.yml` і повертає `patterns`, щоб репо-рівневий CI lint-workflow у консюмер-репо відповідав канонічному шаблону концерну.
|
|
17
|
-
|
|
18
|
-
Якщо файл вже існує, оновлює лише канонічний workflow-snippet; якщо ні — формує його з шаблону для `lint-repo.yml`.
|
|
19
|
-
|
|
20
|
-
Свідомо не зачіпає `.github` і `.git`, щоб не виходити за межі репо-лінту.
|
|
21
|
-
|
|
22
|
-
## Поведінка
|
|
23
|
-
|
|
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-а.
|
|
36
|
-
|
|
37
|
-
## Гарантії поведінки
|
|
38
|
-
|
|
39
|
-
- Власних операцій запису (ФС/БД) у файлі немає; виклики імпортованих модулів можуть писати.
|
|
40
|
-
- Свідомо пропускає шляхи: `.github`, `.git`.
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
type: Directory Index
|
|
3
|
-
title: plugins/ci-github/rules/ga/lint_repo_yml
|
|
4
|
-
resource: plugins/ci-github/rules/ga/lint_repo_yml/
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
| Файл | Тип |
|
|
8
|
-
| --------------------------------------------- | --------- |
|
|
9
|
-
| [fix-lint_repo_yml.mjs](fix-lint_repo_yml.md) | JS Module |
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* T0-фікс концерну lint_repo_yml: приводить CI-workflow репо-рівневого лінту
|
|
3
|
-
* у консюмер-репо до канонічного шаблону концерну.
|
|
4
|
-
*/
|
|
5
|
-
import { createTemplateFixPattern } from '@7n/rules/scripts/lib/fix/template-deep-merge.mjs'
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Один детермінований патерн: deep-merge канонічного snippet-а концерну в
|
|
9
|
-
* `.github/workflows/lint-repo.yml` консюмер-репо — відсутні ключі додаються,
|
|
10
|
-
* канонічні значення мають пріоритет, коментарі й ключі поза шаблоном не
|
|
11
|
-
* чіпаються; якщо файлу немає — створюється зі snippet-а.
|
|
12
|
-
*/
|
|
13
|
-
export const patterns = [
|
|
14
|
-
createTemplateFixPattern({ id: 'ga-lint_repo_yml-template', targetPath: '.github/workflows/lint-repo.yml' })
|
|
15
|
-
]
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
type: JS Module
|
|
3
|
-
title: fix-vscode_extensions.mjs
|
|
4
|
-
resource: plugins/ci-github/rules/ga/vscode_extensions/fix-vscode_extensions.mjs
|
|
5
|
-
docgen:
|
|
6
|
-
crc: b6cffd44
|
|
7
|
-
model: omlx/gemma-4-e4b-it-OptiQ-4bit
|
|
8
|
-
tier: local-min
|
|
9
|
-
score: 100
|
|
10
|
-
issues: judge:inaccurate:0.99
|
|
11
|
-
judgeModel: openai-codex/gpt-5.4-mini
|
|
12
|
-
---
|
|
13
|
-
|
|
14
|
-
## Огляд
|
|
15
|
-
|
|
16
|
-
Файл сканує код розширення VS Code на наявність типових помилок. Він застосовує виправлення до знайдених зразків відповідно до визначеної логіки.
|
|
17
|
-
|
|
18
|
-
## Поведінка
|
|
19
|
-
|
|
20
|
-
1. Виявляє зразки, що потребують виправлення у розширень VS Code.
|
|
21
|
-
2. Застосовує виправлення, використовуючи логіку, визначену в скрипті `../../../scripts/lib/fix/vscode-ext-add.mjs`.
|
|
22
|
-
|
|
23
|
-
## Гарантії поведінки
|
|
24
|
-
|
|
25
|
-
- Read-only: не виконує операцій запису (ФС/БД).
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
type: Directory Index
|
|
3
|
-
title: plugins/ci-github/rules/ga/vscode_extensions
|
|
4
|
-
resource: plugins/ci-github/rules/ga/vscode_extensions/
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# plugins/ci-github/rules/ga/vscode_extensions
|
|
8
|
-
|
|
9
|
-
| Файл | Тип |
|
|
10
|
-
| ----------------------------------------------------- | --------- |
|
|
11
|
-
| [fix-vscode_extensions.mjs](fix-vscode_extensions.md) | JS Module |
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { patterns } from '@7n/rules/scripts/lib/fix/vscode-ext-add.mjs'
|