@htekdev/actions-debugger 1.0.37 → 1.0.38

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.
@@ -0,0 +1,84 @@
1
+ id: runner-environment-095
2
+ title: macos-latest Points to macOS 15 — Xcode 16 Default Breaks Hardcoded SDK References
3
+ category: runner-environment
4
+ severity: error
5
+ tags:
6
+ - macos-latest
7
+ - macos-15
8
+ - xcode-16
9
+ - runner-migration
10
+ - apple-silicon
11
+ patterns:
12
+ - regex: 'SDK ''macosx14\.\d+'' cannot be located'
13
+ flags: i
14
+ - regex: 'SDKROOT.*macosx14'
15
+ flags: i
16
+ - regex: 'built for macOS 14.*linking for macOS 15'
17
+ flags: i
18
+ - regex: 'xcodebuild: error:.*SDK ''macosx14'
19
+ flags: i
20
+ error_messages:
21
+ - "error: SDK 'macosx14.5' cannot be located"
22
+ - "xcodebuild: error: The requested SDK 'macosx14.5' cannot be found."
23
+ - "ld: warning: ignoring file ...: built for macOS 14, but linking for macOS 15"
24
+ root_cause: |
25
+ GitHub updated macos-latest to point to macOS 15 (Sequoia) on Apple Silicon
26
+ (M1) runners in January 2025 (GitHub Changelog 2025-01-16). The macOS 15 runner
27
+ image ships with Xcode 16 as the default toolchain.
28
+
29
+ Workflows and Xcode project files that hardcode `SDKROOT=macosx14.5` or
30
+ `MACOSX_DEPLOYMENT_TARGET=14` fail because the macOS 14 SDK is not bundled
31
+ with Xcode 16 by default. Common failure modes:
32
+
33
+ - Hardcoded SDK version strings in .xcconfig files
34
+ - Xcode project targets specifying a minimum macOS deployment target of 14.x
35
+ that resolve against the now-absent SDK
36
+ - Homebrew formulae and pre-installed tool versions changed on macOS 15,
37
+ breaking workflows that assumed specific tool paths or versions
38
+ - The pre-installed Ruby version changed, breaking Fastlane and CocoaPods
39
+ workflows that did not pin a Ruby version
40
+ fix: |
41
+ Option 1: Pin the runner to `macos-14` explicitly to continue using Xcode 15
42
+ and the macOS 14 SDK until you are ready to migrate.
43
+
44
+ Option 2: Use the `maxim-lobanov/setup-xcode` action to pin a specific Xcode
45
+ version on macos-latest, keeping the runner current while controlling toolchain.
46
+
47
+ Option 3: Update Xcode project settings to remove hardcoded SDK version strings.
48
+ Use `$(SDKROOT)` relative targets and set `MACOSX_DEPLOYMENT_TARGET` to a value
49
+ supported by Xcode 16.
50
+
51
+ For Ruby-dependent workflows (Fastlane, CocoaPods), use `ruby/setup-ruby` with
52
+ an explicit version rather than relying on the system Ruby.
53
+ fix_code:
54
+ - language: yaml
55
+ label: Pin explicit macOS version to avoid macos-latest drift
56
+ code: |
57
+ jobs:
58
+ build:
59
+ runs-on: macos-14 # explicit; Xcode 15 + macOS 14 SDK
60
+
61
+ - language: yaml
62
+ label: Pin Xcode version on macos-latest
63
+ code: |
64
+ - uses: maxim-lobanov/setup-xcode@v1
65
+ with:
66
+ xcode-version: '15.4'
67
+
68
+ - language: yaml
69
+ label: Use ruby/setup-ruby for Fastlane and CocoaPods workflows
70
+ code: |
71
+ - uses: ruby/setup-ruby@v1
72
+ with:
73
+ ruby-version: '3.3'
74
+ bundler-cache: true
75
+ prevention:
76
+ - "Pin explicit runner OS versions (macos-14, macos-15) instead of macos-latest for stable CI builds"
77
+ - "Never hardcode SDK version strings (macosx14.x) in Xcode project .xcconfig files — use $(SDKROOT)"
78
+ - "Use ruby/setup-ruby, actions/setup-python, and similar version-pinning actions for all language runtimes"
79
+ - "Subscribe to GitHub Changelog and runner-images repository releases for macOS image update notices"
80
+ docs:
81
+ - url: https://github.blog/changelog/2025-01-16-github-actions-macos-15-is-now-the-latest-macos-runner-image/
82
+ label: "GitHub Changelog: macOS 15 becomes macos-latest (Jan 2025)"
83
+ - url: https://docs.github.com/en/actions/using-github-hosted-runners/using-github-hosted-runners/about-github-hosted-runners
84
+ label: "GitHub-hosted runner images documentation"
@@ -0,0 +1,87 @@
1
+ id: runner-environment-094
2
+ title: Node.js 16 Actions Runtime Deprecated and Disabled — Actions Using node16 Fail
3
+ category: runner-environment
4
+ severity: error
5
+ tags:
6
+ - node16
7
+ - node20
8
+ - action-runtime
9
+ - deprecation
10
+ - runs-using
11
+ patterns:
12
+ - regex: 'Node\.js 16 actions are deprecated'
13
+ flags: i
14
+ - regex: 'Please update the following actions to use Node\.js 20'
15
+ flags: i
16
+ - regex: 'uses a deprecated version of `actions/node`'
17
+ flags: i
18
+ error_messages:
19
+ - "Node.js 16 actions are deprecated. Please update the following actions to use Node.js 20: actions/checkout@v3"
20
+ - "Warning: Node.js 16 is End-of-Life. Upgrade to Node.js 20 or later."
21
+ - "Error: This request has been automatically failed because it uses a deprecated version of `actions/node`"
22
+ root_cause: |
23
+ Node.js 16 reached end-of-life on September 11, 2023. GitHub announced on
24
+ September 22, 2023 (GitHub Changelog) that it would deprecate the Node.js 16
25
+ runtime for GitHub Actions, with a hard enforcement cutoff on September 22, 2024.
26
+
27
+ Actions authored with `runs.using: node16` in their action.yml emit deprecation
28
+ warnings from late 2023 onward. From September 2024, these actions produce hard
29
+ errors and may not execute. Third-party actions pinned to older major versions
30
+ that internally use node16 are affected, including actions/checkout@v3,
31
+ actions/setup-node@v3, actions/cache@v3, and many community actions. Composite
32
+ actions that transitively call a node16-based action also fail.
33
+ fix: |
34
+ Update all action references in your workflows to major versions that use the
35
+ node20 (or node22) runtime. Common upgrades needed:
36
+ - actions/checkout@v3 → @v4
37
+ - actions/setup-node@v3 → @v4
38
+ - actions/cache@v3 → @v4
39
+ - actions/upload-artifact@v3 → @v4
40
+ - actions/download-artifact@v3 → @v4
41
+
42
+ For custom actions you own, update `runs.using` in action.yml from
43
+ `node16` to `node20`.
44
+
45
+ Use Dependabot or Renovate with the `github-actions` package ecosystem to
46
+ keep action versions current automatically.
47
+ fix_code:
48
+ - language: yaml
49
+ label: Update official actions from node16 to node20-based versions
50
+ code: |
51
+ - uses: actions/checkout@v4 # was @v3 (node16)
52
+ - uses: actions/setup-node@v4 # was @v3 (node16)
53
+ with:
54
+ node-version: '20'
55
+ - uses: actions/cache@v4 # was @v3 (node16)
56
+ with:
57
+ path: ~/.npm
58
+ key: ${{ runner.os }}-npm-${{ hashFiles('**/package-lock.json') }}
59
+
60
+ - language: yaml
61
+ label: Update custom action.yml to node20 runtime
62
+ code: |
63
+ # In your action's action.yml
64
+ runs:
65
+ using: node20
66
+ main: dist/index.js
67
+
68
+ - language: yaml
69
+ label: Enable Dependabot for github-actions ecosystem
70
+ code: |
71
+ # .github/dependabot.yml
72
+ version: 2
73
+ updates:
74
+ - package-ecosystem: github-actions
75
+ directory: /
76
+ schedule:
77
+ interval: weekly
78
+ prevention:
79
+ - "Enable Dependabot for the github-actions package ecosystem to receive automatic PRs for action version updates"
80
+ - "Audit all action.yml files in custom actions for runs.using: node16 before the hard cutoff"
81
+ - "Watch the actions/* repositories on GitHub for major version releases that upgrade the runtime"
82
+ - "Prefer Dependabot or Renovate over manually pinned major versions to stay ahead of deprecations"
83
+ docs:
84
+ - url: https://github.blog/changelog/2023-09-22-github-actions-transitioning-from-node-16-to-node-20/
85
+ label: "GitHub Changelog: Transitioning from Node.js 16 to Node.js 20 (Sep 2023)"
86
+ - url: https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runs-for-javascript-actions
87
+ label: "Actions metadata syntax: runs.using"
@@ -0,0 +1,75 @@
1
+ id: runner-environment-093
2
+ title: ubuntu-latest Now Points to Ubuntu 24.04 — Python 2 and Legacy Packages Removed
3
+ category: runner-environment
4
+ severity: error
5
+ tags:
6
+ - ubuntu-latest
7
+ - ubuntu-24-04
8
+ - python2
9
+ - apt-get
10
+ - runner-migration
11
+ patterns:
12
+ - regex: 'E: Package ''python'' has no installation candidate'
13
+ flags: i
14
+ - regex: 'python: command not found'
15
+ flags: i
16
+ - regex: 'Unable to locate package python2'
17
+ flags: i
18
+ - regex: 'E: Package ''libssl1\.1'' has no installation candidate'
19
+ flags: i
20
+ error_messages:
21
+ - "E: Package 'python' has no installation candidate"
22
+ - "python: command not found"
23
+ - "Unable to locate package python2"
24
+ - "E: Package 'libssl1.1' has no installation candidate"
25
+ root_cause: |
26
+ GitHub changed ubuntu-latest to point to Ubuntu 24.04 on November 7, 2024
27
+ (announced via GitHub Changelog on September 25, 2024). Ubuntu 24.04 (Noble
28
+ Numbat) removes several packages that were present on Ubuntu 20.04 and 22.04:
29
+
30
+ - The `python` package (Python 2.7) is entirely absent; only `python3` is available
31
+ - `python2` and `python-is-python2` are not installable via apt
32
+ - `libssl1.1` (OpenSSL 1.1.x) is removed; only OpenSSL 3.x ships with 24.04
33
+ - Various other legacy apt packages dropped in the 24.04 LTS release
34
+
35
+ Workflows that ran `sudo apt-get install python`, invoked `python script.py`
36
+ (instead of `python3`), or installed packages transitively depending on
37
+ libssl1.1 started failing immediately after the image switch.
38
+ fix: |
39
+ Option 1: Replace all `python` calls with `python3` and use `actions/setup-python`
40
+ to install a specific Python 3 version rather than relying on the system default.
41
+
42
+ Option 2: Pin the runner to `ubuntu-22.04` explicitly if Python 2 is genuinely
43
+ required or if you need time to migrate. Note that ubuntu-22.04 will eventually
44
+ be retired from the GitHub-hosted runner fleet.
45
+
46
+ Audit all `apt-get install` steps for packages removed in Ubuntu 24.04, including
47
+ libssl1.1, python2, python-is-python2, libffi7, and others listed in the Ubuntu
48
+ 24.04 release notes.
49
+ fix_code:
50
+ - language: yaml
51
+ label: Use actions/setup-python and replace python with python3
52
+ code: |
53
+ - uses: actions/setup-python@v5
54
+ with:
55
+ python-version: '3.12'
56
+
57
+ - name: Run script
58
+ run: python3 script.py
59
+
60
+ - language: yaml
61
+ label: Pin explicit runner version to avoid ubuntu-latest drift
62
+ code: |
63
+ jobs:
64
+ build:
65
+ runs-on: ubuntu-22.04 # explicit version; do not rely on ubuntu-latest
66
+ prevention:
67
+ - "Pin explicit runner versions (ubuntu-22.04, ubuntu-24.04) instead of ubuntu-latest to prevent surprise image changes"
68
+ - "Use actions/setup-python for all Python installs rather than apt-get"
69
+ - "Replace python with python3 in all shell commands and scripts"
70
+ - "Subscribe to GitHub Changelog for runner image update announcements before they take effect"
71
+ docs:
72
+ - url: https://github.blog/changelog/2024-09-25-actions-new-images-and-ubuntu-latest-changes/
73
+ label: "GitHub Changelog: ubuntu-latest points to Ubuntu 24.04 (Sep 2024)"
74
+ - url: https://docs.github.com/en/actions/using-github-hosted-runners/using-github-hosted-runners/about-github-hosted-runners
75
+ label: "GitHub-hosted runner images documentation"
@@ -0,0 +1,97 @@
1
+ id: silent-failures-042
2
+ title: Fork pull_request Secrets Are Empty Strings — Secret-Gated Steps Silently Skip
3
+ category: silent-failures
4
+ severity: silent-failure
5
+ tags:
6
+ - fork
7
+ - pull-request
8
+ - secrets
9
+ - empty-string
10
+ - conditional-step
11
+ patterns:
12
+ - regex: 'secrets\.[A-Z_]+ != ''''.*if.*condition'
13
+ flags: i
14
+ - regex: 'npm ERR! code E401'
15
+ flags: ''
16
+ - regex: 'Error: HttpError: Resource not accessible by integration'
17
+ flags: i
18
+ error_messages:
19
+ - "npm ERR! code E401"
20
+ - "Error: HttpError: Resource not accessible by integration"
21
+ - "(No log output — the step shows 'skipped' status when secrets.MY_TOKEN != '' evaluates false on fork PRs)"
22
+ root_cause: |
23
+ When a pull_request event is triggered from a fork, GitHub Actions intentionally
24
+ provides empty strings ("") for all secrets in the `secrets` context — not null,
25
+ but empty string. This is a security measure to prevent secret exfiltration from
26
+ untrusted fork code running in the base repository's context.
27
+
28
+ The silent-failure pattern occurs when a workflow guards a step with a secrets
29
+ check:
30
+
31
+ - if: ${{ secrets.NPM_TOKEN != '' }}
32
+ run: npm publish
33
+
34
+ On fork PRs, `secrets.NPM_TOKEN` is `""`, so the condition evaluates to `false`
35
+ and the step is silently skipped with no error, no warning, and no indication
36
+ in normal logs. Developers expecting either a published artifact or a clear
37
+ failure instead see a green workflow with a quietly skipped deploy step.
38
+
39
+ A related failure mode: when the empty secret IS used directly (without a guard),
40
+ the downstream tool emits a generic auth error (E401, 403) that gives no indication
41
+ the root cause is an empty secret from a fork trigger.
42
+ fix: |
43
+ Separate concerns: run untrusted fork code in a `pull_request` workflow (no
44
+ secrets needed), then gate secret-requiring operations on a `workflow_run`
45
+ workflow that triggers after the pull_request workflow completes. The
46
+ workflow_run event runs in the base branch context and has full access to
47
+ repository secrets.
48
+
49
+ If you must use secrets in a `pull_request` workflow (e.g., to post PR comments
50
+ via GITHUB_TOKEN), rely on the automatically-provided GITHUB_TOKEN with
51
+ appropriate `permissions:` — do not depend on user-defined secrets in
52
+ pull_request context from forks.
53
+
54
+ Avoid the `if: ${{ secrets.MY_SECRET != '' }}` guard pattern entirely;
55
+ document the fork limitation explicitly in the workflow file instead.
56
+ fix_code:
57
+ - language: yaml
58
+ label: "Split pattern: pull_request for tests (no secrets), workflow_run for deploys"
59
+ code: |
60
+ # pr-tests.yml — runs untrusted fork code, no secrets needed
61
+ on: pull_request
62
+ jobs:
63
+ test:
64
+ runs-on: ubuntu-latest
65
+ steps:
66
+ - uses: actions/checkout@v4
67
+ - run: npm ci && npm test
68
+
69
+ - language: yaml
70
+ label: workflow_run continuation with secrets (runs in base branch context)
71
+ code: |
72
+ # pr-deploy.yml — triggers after pr-tests completes; has full secret access
73
+ on:
74
+ workflow_run:
75
+ workflows: [PR Tests]
76
+ types: [completed]
77
+ jobs:
78
+ publish:
79
+ if: ${{ github.event.workflow_run.conclusion == 'success' }}
80
+ runs-on: ubuntu-latest
81
+ steps:
82
+ - uses: actions/checkout@v4
83
+ - run: npm publish
84
+ env:
85
+ NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
86
+ prevention:
87
+ - "Never write if: ${{ secrets.MY_SECRET != '' }} as a fork guard — this silently evaluates false on all fork PRs"
88
+ - "Use the pull_request + workflow_run split pattern for any workflow needing both fork code and repository secrets"
89
+ - "Add a comment in your workflow file explaining that secret-gated steps intentionally skip on fork PRs"
90
+ - "Use GITHUB_TOKEN with explicit permissions: blocks for operations that only require base repository access"
91
+ docs:
92
+ - url: https://docs.github.com/en/actions/security-for-github-actions/security-guides/security-hardening-for-github-actions#using-secrets
93
+ label: "GitHub Docs: Security hardening for GitHub Actions — using secrets"
94
+ - url: https://securitylab.github.com/resources/github-actions-preventing-pwn-requests/
95
+ label: "GitHub Security Lab: Preventing pwn requests (pull_request_target risks)"
96
+ - url: https://docs.github.com/en/actions/writing-workflows/choosing-when-your-workflow-runs/events-that-trigger-workflows#workflow_run
97
+ label: "GitHub Docs: workflow_run event"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@htekdev/actions-debugger",
3
- "version": "1.0.37",
3
+ "version": "1.0.38",
4
4
  "description": "65+ real GitHub Actions errors, queryable by agents. CLI + MCP server + Copilot skills + error database.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",