@7n/rules-ci-github 1.9.7 → 1.9.8

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 CHANGED
@@ -1,5 +1,11 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.9.8] - 2026-07-26
4
+
5
+ ### Fixed
6
+
7
+ - GA workflow validation дозволяє canonical optional language config paths до появи самих конфігів.
8
+
3
9
  ## [1.9.7] - 2026-07-25
4
10
 
5
11
  ### Changed
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@7n/rules-ci-github",
3
- "version": "1.9.7",
3
+ "version": "1.9.8",
4
4
  "description": "Плагін @7n/rules: канон GitHub Actions (.github/workflows) — обов'язкові workflow, zizmor, VS Code",
5
5
  "keywords": [
6
6
  "github-actions",
@@ -3,7 +3,7 @@ type: JS Module
3
3
  title: main.mjs
4
4
  resource: plugins/ci-github/rules/ga/workflows/main.mjs
5
5
  docgen:
6
- crc: 0e45c8c5
6
+ crc: 0eb11a60
7
7
  ---
8
8
 
9
9
  ## Огляд
@@ -14,7 +14,7 @@ Please provide the code you want me to document.
14
14
 
15
15
  Поведінка:
16
16
  checkShellcheckInstalled перевіряє локальну наявність інструменту `shellcheck` у системному PATH, щоб забезпечити узгодженість логіки CI та локального запуску.
17
- main виконує комплексну перевірку відповідності репозиторію правилам `ga.mdc`, включаючи валідацію структури GitHub Actions workflow, аналіз посилань на файли за допомогою `git ls-files` та пошук залишків MegaLinter. При цьому він ігнорує шляхи, що стосуються `.github` та `.git`.
17
+ main виконує комплексну перевірку відповідності репозиторію правилам `ga.mdc`, включаючи валідацію структури GitHub Actions workflow, аналіз посилань на файли за допомогою `git ls-files` та пошук залишків MegaLinter. Canonical language config paths не вважаються stale, якщо сам config ще відсутній: workflow має бути готовий підхопити його появу без окремої синхронної правки CI.
18
18
  lint запускає стандартний лінтинг, який включає перевірку `actionlint` та `zizmor` для забезпечення якості YAML-файлів та робочого середовища, а також ініціює повну перевірку `main`.
19
19
  runLintGaCli запускає процес лінтингу `ga` через командний інтерфейс.
20
20
 
@@ -28,6 +28,12 @@ const REQUIRED_WORKFLOWS = ['clean-ga-workflows.yml', 'clean-merged-branch.yml',
28
28
  /** Патерн rego-violation про відсутній `persist-credentials`. */
29
29
  const CHECKOUT_PERSIST_RE = /persist-credentials/u
30
30
 
31
+ /**
32
+ * Language workflow policies вимагають ці config paths наперед, навіть коли
33
+ * конкретний consumer ще не має відповідного tool config.
34
+ */
35
+ const OPTIONAL_CANONICAL_PATH_GLOBS = new Set(['pyproject.toml', 'uv.lock', '**/rustfmt.toml', '**/clippy.toml'])
36
+
31
37
  /**
32
38
  * Structured fix-hint (#3) для rego-violation про `actions/checkout` без
33
39
  * `persist-credentials: false` — щоб T0 (`fix-workflows.mjs`) автофіксив детерміновано,
@@ -76,6 +82,10 @@ function shouldValidateWorkflowPathsGlob(p) {
76
82
  // Негативні патерни — лише виключають, їх існування не перевіряємо.
77
83
  if (p.startsWith('!')) return false
78
84
 
85
+ // Canonical language configs можуть зʼявитися пізніше, але мають уже
86
+ // активувати відповідний workflow без синхронної правки CI.
87
+ if (OPTIONAL_CANONICAL_PATH_GLOBS.has(p)) return false
88
+
79
89
  // “Розширення-фільтри” (або brace-варіанти) пропускаємо: вони можуть бути заготовками.
80
90
  return !p.includes('*.')
81
91
  }