@htekdev/actions-debugger 1.0.22 → 1.0.24

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 (61) hide show
  1. package/errors/caching-artifacts/artifact-minimum-retention-one-day.yml +153 -0
  2. package/errors/caching-artifacts/cache-api-propagation-delay-post-save.yml +128 -0
  3. package/errors/caching-artifacts/cache-backend-internal-error-skipped.yml +75 -0
  4. package/errors/caching-artifacts/cache-hit-step-id-case-sensitive-mismatch.yml +95 -0
  5. package/errors/caching-artifacts/cache-save-post-step-skipped-on-failure.yml +114 -0
  6. package/errors/concurrency-timing/deploy-pages-in-progress-deployment-wedged.yml +70 -0
  7. package/errors/concurrency-timing/deployment-review-timeout-expired.yml +88 -0
  8. package/errors/concurrency-timing/job-concurrency-scope-per-run-not-global.yml +81 -0
  9. package/errors/concurrency-timing/merge-queue-concurrency-cancel-blocks-all.yml +86 -0
  10. package/errors/concurrency-timing/reusable-workflow-github-workflow-context-cancel.yml +124 -0
  11. package/errors/concurrency-timing/runner-scale-set-jobs-never-start.yml +123 -0
  12. package/errors/concurrency-timing/runner-temp-dir-race-concurrent-workers.yml +90 -0
  13. package/errors/known-unsolved/artifact-download-url-unauthenticated-404.yml +98 -0
  14. package/errors/known-unsolved/checkout-v6-credentials-docker-run-manual.yml +105 -0
  15. package/errors/known-unsolved/concurrency-groups-repo-scoped-only.yml +138 -0
  16. package/errors/known-unsolved/matrix-256-job-limit.yml +142 -0
  17. package/errors/known-unsolved/merge-group-paths-filter-not-supported.yml +137 -0
  18. package/errors/known-unsolved/no-job-allow-failure.yml +73 -0
  19. package/errors/known-unsolved/reusable-secrets-inherit-not-deep-forwarded.yml +113 -0
  20. package/errors/known-unsolved/schedule-cron-hours-long-queue-drift.yml +101 -0
  21. package/errors/permissions-auth/checkout-persist-credentials-token-write.yml +90 -0
  22. package/errors/permissions-auth/create-github-app-token-cross-job-token-revoked.yml +95 -0
  23. package/errors/permissions-auth/github-token-contents-write-missing-git-push.yml +117 -0
  24. package/errors/permissions-auth/org-actions-policy-blocks-unapproved-action.yml +106 -0
  25. package/errors/runner-environment/codeql-action-v2-deprecated.yml +110 -0
  26. package/errors/runner-environment/macos-26-openssl-3-system-library-breaking.yml +114 -0
  27. package/errors/runner-environment/macos-26-ruby-34-default-upgrade.yml +114 -0
  28. package/errors/runner-environment/macos-26-xcode-default-265-pin-required.yml +99 -0
  29. package/errors/runner-environment/macos-latest-label-switches-to-macos26.yml +127 -0
  30. package/errors/runner-environment/node20-removed-toolcache-default-node22.yml +104 -0
  31. package/errors/runner-environment/org-runner-group-dispatch-null.yml +102 -0
  32. package/errors/runner-environment/powershell-74-76-threadjob-module-rename.yml +124 -0
  33. package/errors/runner-environment/self-hosted-runner-not-found.yml +134 -0
  34. package/errors/runner-environment/self-hosted-runner-selinux-service-exec-failure.yml +116 -0
  35. package/errors/runner-environment/service-container-no-healthcheck.yml +158 -0
  36. package/errors/runner-environment/setup-node-v5-corepack-pnpm-not-found.yml +101 -0
  37. package/errors/runner-environment/setup-node-yarn-not-installed-self-hosted.yml +76 -0
  38. package/errors/runner-environment/setup-python-externally-managed-env-error.yml +95 -0
  39. package/errors/runner-environment/windows-2019-runner-retired-june2025.yml +118 -0
  40. package/errors/runner-environment/windows-2022-docker-daemon-not-started.yml +108 -0
  41. package/errors/silent-failures/cache-hit-output-string-not-boolean.yml +96 -0
  42. package/errors/silent-failures/checkout-lfs-pointer-not-content.yml +105 -0
  43. package/errors/silent-failures/reusable-workflow-output-skipped-contains-secret.yml +115 -0
  44. package/errors/silent-failures/setup-node-silent-download-exit-zero.yml +105 -0
  45. package/errors/silent-failures/setup-python-truncated-manifest-silent-exit.yml +111 -0
  46. package/errors/silent-failures/undefined-env-expression-empty-string-silent.yml +115 -0
  47. package/errors/silent-failures/windows-powershell-github-output-bash-syntax.yml +118 -0
  48. package/errors/triggers/fork-pr-first-time-contributor-approval-required.yml +142 -0
  49. package/errors/triggers/on-push-branches-glob-star-no-slash-match.yml +78 -0
  50. package/errors/triggers/pull-request-target-env-protection-default-branch-eval.yml +117 -0
  51. package/errors/triggers/required-status-check-renamed-never-passes.yml +87 -0
  52. package/errors/triggers/schedule-cron-self-hosted-runner-not-triggered.yml +107 -0
  53. package/errors/triggers/workflow-run-checkout-uses-default-branch.yml +114 -0
  54. package/errors/yaml-syntax/composite-action-run-shell-missing.yml +90 -0
  55. package/errors/yaml-syntax/composite-action-secrets-context-unavailable.yml +99 -0
  56. package/errors/yaml-syntax/github-script-octokit-renamed-to-github.yml +130 -0
  57. package/errors/yaml-syntax/labeler-v5-config-format-breaking.yml +67 -0
  58. package/errors/yaml-syntax/reusable-workflow-nesting-depth-exceeded.yml +113 -0
  59. package/errors/yaml-syntax/runs-on-expression-array-syntax-error.yml +121 -0
  60. package/errors/yaml-syntax/setup-go-matrix-version-float-coercion.yml +69 -0
  61. package/package.json +1 -1
@@ -0,0 +1,106 @@
1
+ id: permissions-auth-026
2
+ title: "Org Actions Policy Blocks Workflow — Action Not in Allowlist"
3
+ category: permissions-auth
4
+ severity: error
5
+ tags:
6
+ - org-policy
7
+ - allowlist
8
+ - action-policy
9
+ - enterprise
10
+ - third-party-actions
11
+ - settings
12
+ - admin
13
+ patterns:
14
+ - regex: "is not allowed to run\\. If you believe this action should be allowed"
15
+ flags: "i"
16
+ - regex: "'[^']+' is not allowed"
17
+ flags: "i"
18
+ - regex: "Action .+ is not allowed by the organization"
19
+ flags: "i"
20
+ - regex: "This action is not allowed"
21
+ flags: "i"
22
+ error_messages:
23
+ - "Error: Action 'actions/setup-node@v4' is not allowed. If you believe this action should be allowed, ask your GitHub org admin to approve it."
24
+ - "'owner/action@v2' is not allowed to run. If you believe this action should be allowed, ask your organization's GitHub Actions admin to allow it."
25
+ - "This action is not allowed because your organization has restricted which actions can be used in workflows."
26
+ root_cause: |
27
+ GitHub organizations and enterprises can restrict which GitHub Actions are permitted
28
+ to run via Settings → Actions → General → "Allow select actions and reusable workflows".
29
+ When this policy is enabled, any workflow referencing an action not on the approved list
30
+ fails immediately at queue time with "is not allowed" — no job steps execute.
31
+
32
+ Three policy modes exist:
33
+ 1. **Allow all actions** (default) — no restrictions.
34
+ 2. **Allow GitHub-created actions only** — only `actions/*`, `github/*` etc. permitted.
35
+ 3. **Allow select actions** — explicit allowlist + optional pattern-matching rules.
36
+
37
+ Common failure scenarios:
38
+ - A developer adds a popular marketplace action (e.g., `slackapi/slack-github-action`)
39
+ that hasn't been pre-approved by the org admin.
40
+ - A new CI requirement introduces a third-party security scanner that isn't allowlisted.
41
+ - An internal action is referenced before the admin adds the pattern to the allowlist.
42
+ - After an org migration, the allowlist from the source org is not reproduced in the
43
+ target org.
44
+
45
+ The error surfaces in the "Set up job" phase, before any workflow steps run, making
46
+ it look like a runner or permissions issue rather than an org policy issue. Developers
47
+ without org admin access cannot fix this themselves.
48
+ fix: |
49
+ An organization admin must update the Actions policy:
50
+
51
+ Settings → Actions → General → "Allow select actions and reusable workflows"
52
+
53
+ Options:
54
+ 1. **Allowlist specific actions**: Add the required action pattern (e.g.,
55
+ `slackapi/slack-github-action@*`) to the allowed list.
56
+ 2. **Allow GitHub-owned and verified creator actions**: Enables all verified marketplace
57
+ actions without individual approval.
58
+ 3. **Allow all actions**: Remove policy restrictions entirely (not recommended for
59
+ security-sensitive orgs).
60
+
61
+ For enterprise-managed repos, the enterprise-level policy may override org-level
62
+ settings — check Settings → Enterprise → Policies → Actions.
63
+ fix_code:
64
+ - language: yaml
65
+ label: "Temporary workaround — pin action SHA to bypass tag-based allowlist patterns"
66
+ code: |
67
+ # If the org allowlist accepts SHA-pinned actions:
68
+ # Replace the version tag with the commit SHA of the same version.
69
+ # (Some org policies allow SHA-pinned actions even if the tag isn't approved.)
70
+
71
+ steps:
72
+ # Instead of: uses: slackapi/slack-github-action@v1.24.0
73
+ - uses: slackapi/slack-github-action@6c661ce58804a1a20f6dc5fbee7f0381b469e001 # v1.24.0
74
+ with:
75
+ channel-id: 'C12345'
76
+ - language: yaml
77
+ label: "Use a GitHub-owned alternative when allowlist blocks third-party action"
78
+ code: |
79
+ # Example: replace a third-party notification action with curl + GITHUB_TOKEN
80
+ - name: Post to Slack via webhook (no third-party action needed)
81
+ run: |
82
+ curl -X POST "${{ secrets.SLACK_WEBHOOK_URL }}" \
83
+ -H 'Content-type: application/json' \
84
+ --data '{"text":"Deploy finished: ${{ github.run_url }}"}'
85
+ - language: yaml
86
+ label: "Check which actions are permitted before adding new dependencies"
87
+ code: |
88
+ # There is no API to check allowlist programmatically — use the UI:
89
+ # Settings → Actions → General → "Allowed actions and reusable workflows"
90
+ # Or check via REST API (org admins only):
91
+ # GET /orgs/{org}/actions/permissions/selected-actions
92
+ prevention:
93
+ - "Document the org's action allowlist policy in your CONTRIBUTING.md or developer onboarding guide so developers know to request approval before adding new actions."
94
+ - "Use Dependabot for GitHub Actions updates — approved actions stay approved when bumping minor/patch versions if the org uses wildcard patterns (e.g., `slackapi/slack-github-action@*`)."
95
+ - "Prefer GitHub-owned actions (`actions/*`, `github/*`) and verified creator actions to minimize allowlist friction."
96
+ - "Create an internal Slack/Teams channel or GitHub Discussion where developers can request new action approvals from org admins."
97
+ - "Use the GitHub REST API (`GET /orgs/{org}/actions/permissions/selected-actions`) to audit and document the current allowlist for new-member onboarding."
98
+ docs:
99
+ - url: "https://docs.github.com/en/organizations/managing-organization-settings/disabling-or-limiting-github-actions-for-your-organization"
100
+ label: "GitHub Docs: Disabling or limiting GitHub Actions for your organization"
101
+ - url: "https://docs.github.com/en/rest/actions/permissions"
102
+ label: "GitHub REST API: Actions Permissions"
103
+ - url: "https://github.blog/changelog/2026-02-05-github-actions-early-february-2026-updates/"
104
+ label: "GitHub Changelog: Actions early February 2026 updates (action allowlisting)"
105
+ - url: "https://docs.github.com/en/enterprise-cloud@latest/admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-github-actions-in-your-enterprise"
106
+ label: "GitHub Docs: Enforcing GitHub Actions policies in your enterprise"
@@ -0,0 +1,110 @@
1
+ id: runner-environment-061
2
+ title: "CodeQL Action v1/v2 Deprecated — Hard Failure with Upgrade Required Message"
3
+ category: runner-environment
4
+ severity: error
5
+ tags:
6
+ - codeql
7
+ - code-scanning
8
+ - deprecated
9
+ - v2
10
+ - v3
11
+ - security
12
+ - breaking-change
13
+ patterns:
14
+ - regex: "CodeQL Action major versions v1 and v2 have been deprecated"
15
+ flags: "i"
16
+ - regex: "Please update all occurrences of the CodeQL Action in your workflow files to v3"
17
+ flags: "i"
18
+ - regex: "github/codeql-action/.*@v[12]\\b"
19
+ flags: "i"
20
+ error_messages:
21
+ - "Error: CodeQL Action major versions v1 and v2 have been deprecated. Please update all occurrences of the CodeQL Action in your workflow files to v3. For more information, see https://github.blog/changelog/2025-01-10-code-scanning-codeql-action-v2-is-now-deprecated/"
22
+ - "CodeQL Action v2 is now deprecated. Upgrade to v3."
23
+ root_cause: |
24
+ GitHub retired CodeQL Action major versions v1 and v2 in January 2025. After the
25
+ retirement date, any workflow referencing `github/codeql-action/*@v1` or
26
+ `github/codeql-action/*@v2` produces a hard failure with the above error message
27
+ and does NOT perform code scanning.
28
+
29
+ The CodeQL action family includes multiple steps that must ALL be updated together:
30
+ - `github/codeql-action/init@v2`
31
+ - `github/codeql-action/autobuild@v2`
32
+ - `github/codeql-action/analyze@v2`
33
+ - `github/codeql-action/upload-sarif@v2`
34
+ - `github/codeql-action/resolve-environment@v2`
35
+
36
+ Missing even one of these (leaving it at `@v2` while updating others to `@v3`)
37
+ causes the workflow to fail. Repos created before 2024 using the default
38
+ GitHub-provided Code Scanning setup workflow are the most common source of
39
+ stale v2 references.
40
+
41
+ This is distinct from the generic `deprecated-action-version-auto-rejected` pattern
42
+ (runner-environment-037) which covers specific minor/patch versions of actions/cache,
43
+ actions/checkout, etc. The CodeQL deprecation applies to entire major versions v1 and v2
44
+ and produces a specific, different error message.
45
+ fix: |
46
+ Replace every `github/codeql-action/*@v2` (and `@v1`) reference in all workflow files
47
+ with the corresponding `@v3` tag. All steps in the CodeQL workflow must be updated
48
+ together — a partial update (e.g., `init@v3` but `analyze@v2`) will still fail.
49
+
50
+ After updating, verify the workflow runs successfully by checking the Actions tab
51
+ and the Security → Code Scanning alerts page.
52
+ fix_code:
53
+ - language: yaml
54
+ label: "Updated CodeQL workflow using v3 (all steps)"
55
+ code: |
56
+ name: "CodeQL Analysis"
57
+ on:
58
+ push:
59
+ branches: ["main"]
60
+ pull_request:
61
+ branches: ["main"]
62
+ schedule:
63
+ - cron: '0 6 * * 1'
64
+
65
+ jobs:
66
+ analyze:
67
+ name: Analyze (${{ matrix.language }})
68
+ runs-on: ubuntu-latest
69
+ permissions:
70
+ actions: read
71
+ contents: read
72
+ security-events: write
73
+
74
+ strategy:
75
+ matrix:
76
+ language: ['javascript', 'python']
77
+
78
+ steps:
79
+ - name: Checkout repository
80
+ uses: actions/checkout@v4
81
+
82
+ - name: Initialize CodeQL
83
+ uses: github/codeql-action/init@v3 # ← was @v2
84
+ with:
85
+ languages: ${{ matrix.language }}
86
+
87
+ - name: Autobuild
88
+ uses: github/codeql-action/autobuild@v3 # ← was @v2
89
+
90
+ - name: Perform CodeQL Analysis
91
+ uses: github/codeql-action/analyze@v3 # ← was @v2
92
+ with:
93
+ category: "/language:${{ matrix.language }}"
94
+ - language: yaml
95
+ label: "Bulk-find stale v2 references (shell one-liner)"
96
+ code: |
97
+ # Run from repo root to find all @v1 or @v2 codeql-action references:
98
+ # grep -rn "codeql-action/.*@v[12]" .github/workflows/
99
+ prevention:
100
+ - "Use Dependabot for GitHub Actions to automatically open PRs when actions release new major versions."
101
+ - "Enable the 'Actions' section in Dependabot config (`package-ecosystem: github-actions`) for all repos with CodeQL workflows."
102
+ - "After any CodeQL major version update, verify Security → Code Scanning shows recent scans with no 'Tool not recognized' errors."
103
+ - "Search all workflow files for `codeql-action` references before major GitHub deprecation windows."
104
+ docs:
105
+ - url: "https://github.blog/changelog/2025-01-10-code-scanning-codeql-action-v2-is-now-deprecated/"
106
+ label: "GitHub Changelog: Code scanning — CodeQL Action v2 is now deprecated (Jan 2025)"
107
+ - url: "https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages"
108
+ label: "GitHub Docs: CodeQL code scanning for compiled languages"
109
+ - url: "https://github.com/github/codeql-action/releases"
110
+ label: "github/codeql-action Releases — v3 changelog"
@@ -0,0 +1,114 @@
1
+ id: runner-environment-070
2
+ title: "macOS 26 Upgrades OpenSSL from 1.1.1 to 3.x — Hardcoded openssl@1.1 Paths Break"
3
+ category: runner-environment
4
+ severity: error
5
+ tags:
6
+ - macos
7
+ - openssl
8
+ - macos-26
9
+ - runner-image
10
+ - breaking-change
11
+ - homebrew
12
+ patterns:
13
+ - regex: "Library not loaded.*openssl@1\\.1.*libssl\\.1\\.1\\.dylib"
14
+ flags: "i"
15
+ - regex: "ld.*library not found.*-lssl|cannot find.*libssl\\.1\\.1"
16
+ flags: "i"
17
+ - regex: "openssl@1\\.1.*not installed|brew.*openssl@1\\.1.*no longer"
18
+ flags: "i"
19
+ - regex: "Could not find OpenSSL|ssl.*version.*mismatch.*1\\.1"
20
+ flags: "i"
21
+ - regex: "OpenSSL 1\\.1\\.1.*required.*OpenSSL 3"
22
+ flags: "i"
23
+ error_messages:
24
+ - "Library not loaded: /usr/local/opt/openssl@1.1/lib/libssl.1.1.dylib"
25
+ - "Library not loaded: /opt/homebrew/opt/openssl@1.1/lib/libssl.1.1.dylib"
26
+ - "ld: library not found for -lssl (referenced from build target)"
27
+ - "Could not find a package configuration file provided by 'OpenSSL'"
28
+ - "Could not link to OpenSSL library. Please install OpenSSL."
29
+ root_cause: |
30
+ When macos-latest migrates to macos-26 (rolling out June 15 through July 15, 2026),
31
+ the system OpenSSL jumps from OpenSSL 1.1.1w (the last 1.x release, now EOL)
32
+ to OpenSSL 3.6.2. This is a major version change with breaking ABI differences.
33
+
34
+ Any workflow that hardcodes openssl@1.1 Homebrew paths or links against the
35
+ 1.1.x shared libraries will fail because:
36
+
37
+ - Homebrew's openssl@1.1 formula is deprecated on macOS 26
38
+ - The shared library /opt/homebrew/opt/openssl@1.1/lib/libssl.1.1.dylib
39
+ no longer exists; it is replaced by openssl@3
40
+ - PKG_CONFIG_PATH and LDFLAGS pointing to openssl@1.1 resolve to nothing
41
+
42
+ Common breakage surfaces:
43
+ - Ruby gems with native extensions (openssl gem links against system OpenSSL)
44
+ - Python packages (pyOpenSSL, cryptography) that link against 1.x path
45
+ - CMake projects using find_package(OpenSSL) finding incompatible version
46
+ - Homebrew formulas linking transitively against openssl@1.1
47
+
48
+ Source: runner-images#14167 — macOS 15 vs macOS 26 software diff shows
49
+ OpenSSL jumps from 1.1.1w to 3.6.2.
50
+ fix: |
51
+ Replace all openssl@1.1 references with openssl@3 (installed by default on macOS 26).
52
+
53
+ For Homebrew-based builds, use dynamic path detection:
54
+ OPENSSL_DIR=$(brew --prefix openssl@3)
55
+ export LDFLAGS="-L${OPENSSL_DIR}/lib"
56
+ export PKG_CONFIG_PATH="${OPENSSL_DIR}/lib/pkgconfig"
57
+
58
+ For Ruby gem compilation:
59
+ bundle config build.openssl --with-openssl-dir=$(brew --prefix openssl@3)
60
+
61
+ For CMake, pass OPENSSL_ROOT_DIR:
62
+ cmake -DOPENSSL_ROOT_DIR=$(brew --prefix openssl@3) ..
63
+ fix_code:
64
+ - language: yaml
65
+ label: "Dynamic OpenSSL path — works on both macOS 15 and macOS 26"
66
+ code: |
67
+ jobs:
68
+ build:
69
+ runs-on: macos-latest
70
+ steps:
71
+ - uses: actions/checkout@v4
72
+
73
+ - name: Set OpenSSL environment variables
74
+ run: |
75
+ OPENSSL_PREFIX=$(brew --prefix openssl)
76
+ echo "OPENSSL_DIR=$OPENSSL_PREFIX" >> $GITHUB_ENV
77
+ echo "LDFLAGS=-L$OPENSSL_PREFIX/lib" >> $GITHUB_ENV
78
+ echo "CPPFLAGS=-I$OPENSSL_PREFIX/include" >> $GITHUB_ENV
79
+ echo "PKG_CONFIG_PATH=$OPENSSL_PREFIX/lib/pkgconfig" >> $GITHUB_ENV
80
+
81
+ - name: Build project
82
+ run: cmake -B build -DOPENSSL_ROOT_DIR=$OPENSSL_DIR && cmake --build build
83
+ - language: yaml
84
+ label: "Ruby bundler — configure openssl@3 for native extension builds"
85
+ code: |
86
+ jobs:
87
+ ruby-build:
88
+ runs-on: macos-latest
89
+ steps:
90
+ - uses: actions/checkout@v4
91
+ - uses: ruby/setup-ruby@v1
92
+ with:
93
+ ruby-version: '3.4'
94
+ bundler-cache: true
95
+
96
+ - name: Configure OpenSSL for bundler
97
+ run: |
98
+ OPENSSL_DIR=$(brew --prefix openssl@3)
99
+ bundle config build.openssl --with-openssl-dir=$OPENSSL_DIR
100
+
101
+ - name: Install gems
102
+ run: bundle install
103
+ prevention:
104
+ - "Never hardcode openssl@1.1 paths — always use $(brew --prefix openssl) dynamically."
105
+ - "Test your macOS workflows on macos-26 before macos-latest migrates (June 15 to July 15, 2026)."
106
+ - "Use macos-15 label to pin to the older image while migrating OpenSSL dependencies."
107
+ - "For language setup actions, ensure you use recent versions that handle OpenSSL 3 automatically."
108
+ docs:
109
+ - url: "https://github.com/actions/runner-images/issues/14167"
110
+ label: "GitHub Announcement: macos-latest will use macos-26 in June 2026 (includes OpenSSL diff)"
111
+ - url: "https://www.openssl.org/news/changelog.html"
112
+ label: "OpenSSL 3.x Changelog"
113
+ - url: "https://docs.github.com/en/actions/using-github-hosted-runners/using-github-hosted-runners/about-github-hosted-runners"
114
+ label: "About GitHub-hosted runners"
@@ -0,0 +1,114 @@
1
+ id: runner-environment-072
2
+ title: "macOS 26 Upgrades Default Ruby from 3.3 to 3.4 — Native Gem ABI Breaks"
3
+ category: runner-environment
4
+ severity: error
5
+ tags:
6
+ - macos
7
+ - ruby
8
+ - macos-26
9
+ - runner-image
10
+ - breaking-change
11
+ - native-extensions
12
+ patterns:
13
+ - regex: 'incompatible library version.*\.bundle|LoadError.*incompatible library'
14
+ flags: "i"
15
+ - regex: 'ruby.*3\.3.*required.*3\.4|Gem.*compiled.*Ruby 3\.3.*running.*3\.4'
16
+ flags: "i"
17
+ - regex: "Bundler.*RUBY_VERSION.*mismatch|native extension.*wrong Ruby version"
18
+ flags: "i"
19
+ - regex: 'Error loading.*\.bundle.*built for Ruby 3\.3'
20
+ flags: "i"
21
+ error_messages:
22
+ - "LoadError: incompatible library version - /path/to/gem.bundle (expected 3.3, got 3.4)"
23
+ - "Bundler::GemNotFound: Could not find gem 'pg (>= 0) ruby' in locally installed gems"
24
+ - "An error occurred while installing nokogiri, and Bundler cannot continue."
25
+ - "Your Ruby version is 3.4.x, but your Gemfile specified 3.3.x"
26
+ root_cause: |
27
+ When macos-latest migrates to macos-26 (June 15 through July 15, 2026), the default
28
+ system Ruby version jumps from 3.3.11 to 3.4.9. This is a minor Ruby version change
29
+ but it breaks any workflow that:
30
+
31
+ 1. Has a Gemfile or .ruby-version pinning Ruby 3.3.x
32
+ 2. Uses cached gem bundles built against Ruby 3.3's C ABI (native extensions
33
+ like nokogiri, pg, mysql2, ffi compile to .bundle files tied to the Ruby ABI)
34
+ 3. Hardcodes RUBY_VERSION in build scripts or Gemfile.lock references
35
+
36
+ Ruby native extensions (.bundle files) are ABI-specific — gems compiled against
37
+ Ruby 3.3 cannot be loaded by Ruby 3.4 and vice versa. If a workflow caches
38
+ bundled gems from a prior run on macos-15 (Ruby 3.3) and restores them on
39
+ macos-26 (Ruby 3.4), native extension gems will fail to load.
40
+
41
+ Source: runner-images#14167 — macOS 15 vs macOS 26 software diff shows Ruby
42
+ jumping from 3.3.11 to 3.4.9.
43
+ fix: |
44
+ Option 1 — Use ruby/setup-ruby to pin an explicit Ruby version (recommended):
45
+ - uses: ruby/setup-ruby@v1
46
+ with:
47
+ ruby-version: '3.3' # or '3.4' to target the new default
48
+ bundler-cache: true
49
+
50
+ Option 2 — Add .ruby-version file to your repo specifying the target Ruby version.
51
+ setup-ruby will read this automatically.
52
+
53
+ Option 3 — Update your Gemfile to remove Ruby version constraint or bump it to 3.4:
54
+ # In Gemfile, remove or update:
55
+ # ruby '3.3' <- remove or change to '3.4'
56
+
57
+ For cache invalidation: if you use actions/cache for bundler, include the Ruby
58
+ version in the cache key:
59
+ key: gems-${{ runner.os }}-ruby-${{ env.RUBY_VERSION }}-${{ hashFiles('**/Gemfile.lock') }}
60
+ fix_code:
61
+ - language: yaml
62
+ label: "Pin Ruby version with setup-ruby (cross-image safe)"
63
+ code: |
64
+ jobs:
65
+ test:
66
+ runs-on: macos-latest
67
+ steps:
68
+ - uses: actions/checkout@v4
69
+
70
+ - uses: ruby/setup-ruby@v1
71
+ with:
72
+ # Pin explicitly — do not rely on runner default Ruby
73
+ ruby-version: '3.4'
74
+ bundler-cache: true
75
+
76
+ - name: Run tests
77
+ run: bundle exec rspec
78
+
79
+ - language: yaml
80
+ label: "Cache key including Ruby version to avoid ABI mismatch"
81
+ code: |
82
+ jobs:
83
+ test:
84
+ runs-on: macos-latest
85
+ steps:
86
+ - uses: actions/checkout@v4
87
+
88
+ - uses: ruby/setup-ruby@v1
89
+ with:
90
+ ruby-version: '3.4'
91
+
92
+ - name: Cache bundler gems
93
+ uses: actions/cache@v4
94
+ with:
95
+ path: vendor/bundle
96
+ # Include Ruby version in cache key to prevent ABI mismatch
97
+ key: gems-${{ runner.os }}-ruby-${{ env.RUBY_VERSION }}-${{ hashFiles('**/Gemfile.lock') }}
98
+ restore-keys: |
99
+ gems-${{ runner.os }}-ruby-${{ env.RUBY_VERSION }}-
100
+
101
+ - name: Install gems
102
+ run: bundle install --path vendor/bundle
103
+ prevention:
104
+ - "Always use ruby/setup-ruby with an explicit ruby-version — never rely on the runner's default Ruby."
105
+ - "Include the Ruby version in bundler cache keys to prevent loading native gems built for a different Ruby ABI."
106
+ - "Add a .ruby-version file to your repository to make the intended Ruby version visible and enforceable."
107
+ - "Test on macos-26 before macos-latest migrates to catch Ruby 3.3 to 3.4 incompatibilities early."
108
+ docs:
109
+ - url: "https://github.com/actions/runner-images/issues/14167"
110
+ label: "GitHub Announcement: macos-latest will use macos-26 in June 2026 (includes Ruby version diff)"
111
+ - url: "https://github.com/ruby/setup-ruby"
112
+ label: "ruby/setup-ruby action"
113
+ - url: "https://www.ruby-lang.org/en/news/2024/12/25/ruby-3-4-0-released/"
114
+ label: "Ruby 3.4.0 Release Notes"
@@ -0,0 +1,99 @@
1
+ id: runner-environment-071
2
+ title: "macOS 26 Default Xcode Switches to 26.5 on June 8 2026 — Unpin to Fix"
3
+ category: runner-environment
4
+ severity: error
5
+ tags:
6
+ - macos
7
+ - xcode
8
+ - macos-26
9
+ - runner-image
10
+ - breaking-change
11
+ - ios
12
+ patterns:
13
+ - regex: 'Xcode.*26\.4\.1.*not found|xcode.*version.*26\.4.*unavailable'
14
+ flags: "i"
15
+ - regex: 'your project.*not compatible.*Xcode 26\.5|requires Xcode.*26\.4'
16
+ flags: "i"
17
+ - regex: 'xcodebuild.*error.*incompatible.*project|DT_TOOLCHAIN.*not found.*26\.5'
18
+ flags: "i"
19
+ - regex: 'error.*The iOS Simulator.*26\.1.*required.*26\.5'
20
+ flags: "i"
21
+ error_messages:
22
+ - "xcodebuild: error: The project requires Xcode 26.4.1, but the currently selected Xcode version is 26.5."
23
+ - "error: DT_TOOLCHAIN_DIR cannot be used to evaluate TOOLCHAIN_DIR. Use TOOLCHAINS setting instead."
24
+ - "Unable to boot the Simulator. The request to boot 'iOS 26.1 Simulator' was denied because the destination is incompatible with this version of Xcode."
25
+ root_cause: |
26
+ Starting June 8, 2026 (rolling out over 2-4 days), GitHub is changing the default
27
+ Xcode on macOS-26 runners from Xcode 26.4.1 to Xcode 26.5. Workflows running on
28
+ macos-26 or macos-latest (after the macos-latest migration completes) that do not
29
+ explicitly pin an Xcode version will automatically get Xcode 26.5.
30
+
31
+ Xcode 26.5 is a new major release and may introduce build incompatibilities:
32
+ - Project files referencing deprecated Xcode 26.4 APIs
33
+ - iOS/macOS Simulator runtimes that only match Xcode 26.4.1
34
+ - Swift toolchain behavior differences between 26.4.1 and 26.5
35
+ - Build setting migrations required by the new Xcode version
36
+
37
+ Source: runner-images#14172 — official GitHub announcement for macOS 26 Xcode
38
+ default change.
39
+ fix: |
40
+ Pin your Xcode version explicitly using either:
41
+
42
+ Option 1 — sudo xcode-select (no extra action required):
43
+ sudo xcode-select -s "/Applications/Xcode_26.4.1.app"
44
+
45
+ Option 2 — maxim-lobanov/setup-xcode action:
46
+ - uses: maxim-lobanov/setup-xcode@v1
47
+ with:
48
+ xcode-version: '26.4.1'
49
+
50
+ To list available Xcode versions on macos-26 runners, check the official
51
+ runner image documentation at:
52
+ https://github.com/actions/runner-images/blob/main/images/macos/macos-26-arm64-Readme.md#xcode
53
+ fix_code:
54
+ - language: yaml
55
+ label: "Pin Xcode version using setup-xcode action"
56
+ code: |
57
+ jobs:
58
+ build-ios:
59
+ runs-on: macos-26
60
+ steps:
61
+ - uses: actions/checkout@v4
62
+
63
+ - name: Select Xcode version
64
+ uses: maxim-lobanov/setup-xcode@v1
65
+ with:
66
+ xcode-version: '26.4.1'
67
+
68
+ - name: Build iOS app
69
+ run: xcodebuild -project MyApp.xcodeproj -scheme MyApp -sdk iphonesimulator build
70
+
71
+ - language: yaml
72
+ label: "Pin Xcode version using xcode-select directly"
73
+ code: |
74
+ jobs:
75
+ build-ios:
76
+ runs-on: macos-26
77
+ steps:
78
+ - uses: actions/checkout@v4
79
+
80
+ - name: Pin Xcode 26.4.1
81
+ run: sudo xcode-select -s "/Applications/Xcode_26.4.1.app"
82
+
83
+ - name: Verify Xcode version
84
+ run: xcodebuild -version
85
+
86
+ - name: Build
87
+ run: xcodebuild -scheme MyApp build
88
+ prevention:
89
+ - "Always pin Xcode version explicitly on macOS runners — never rely on the default."
90
+ - "Use maxim-lobanov/setup-xcode@v1 with a specific xcode-version to make version changes visible in git diff."
91
+ - "Subscribe to runner-images announcements for advance notice of Xcode default version changes."
92
+ - "Audit your workflows for hardcoded Xcode version paths before macos-latest migrates to macos-26."
93
+ docs:
94
+ - url: "https://github.com/actions/runner-images/issues/14172"
95
+ label: "GitHub Announcement: Default Xcode on macOS 26 will be set to 26.5 on 2026-06-08"
96
+ - url: "https://github.com/maxim-lobanov/setup-xcode"
97
+ label: "maxim-lobanov/setup-xcode action"
98
+ - url: "https://github.com/actions/runner-images/blob/main/images/macos/macos-26-arm64-Readme.md#xcode"
99
+ label: "macOS 26 arm64 runner image README — available Xcode versions"
@@ -0,0 +1,127 @@
1
+ id: runner-environment-064
2
+ title: "macos-latest Label Switching to macOS 26 — Toolchain and Brew Package Changes"
3
+ category: runner-environment
4
+ severity: warning
5
+ tags:
6
+ - macos
7
+ - macos-latest
8
+ - macos-26
9
+ - runner-label
10
+ - homebrew
11
+ - toolchain
12
+ - migration
13
+ patterns:
14
+ - regex: "macos.*26.*not supported"
15
+ flags: "i"
16
+ - regex: "No such file or directory.*clang|clang.*not found"
17
+ flags: "i"
18
+ - regex: "dyld.*Library not loaded"
19
+ flags: "i"
20
+ - regex: "Error: Cannot install in Homebrew on macOS.*without Command Line Tools"
21
+ flags: "i"
22
+ - regex: "macos-latest.*macos-26"
23
+ flags: "i"
24
+ error_messages:
25
+ - "clang: error: no such file or directory"
26
+ - "dyld[12345]: Library not loaded: /usr/local/lib/libssl.1.1.dylib"
27
+ - "Error: Your CLT does not support macOS 26."
28
+ - "xcrun: error: SDK 'iphoneos' cannot be located"
29
+ root_cause: |
30
+ Starting June 15, 2026, the `macos-latest` runner label is being migrated
31
+ from macOS 15 (Sequoia) to macOS 26 (runner-images#14167). The rollout
32
+ runs through July 15, 2026. Workflows pinned to `macos-latest` without
33
+ testing on macOS 26 may encounter failures from toolchain and package
34
+ differences between the two OS versions.
35
+
36
+ Key differences in macOS 26 runner images compared to macOS 15:
37
+
38
+ 1. **Homebrew LLVM version bump**: LLVM jumped from 18 to 20 on macOS 26.
39
+ Hardcoded paths like `/opt/homebrew/opt/llvm@18/bin/clang` or env vars
40
+ referencing `llvm@18` binaries fail. POCO and other libraries built
41
+ against LLVM 18 ABI may link incorrectly.
42
+
43
+ 2. **macOS SDK changes**: macOS 26 uses a newer Xcode and SDK toolchain.
44
+ Libraries and headers that existed in macOS 15 SDK may have moved,
45
+ been renamed, or removed under the macOS 26 (Tahoe) SDK.
46
+
47
+ 3. **Homebrew formula versions**: Many Homebrew packages have newer
48
+ versions on macOS 26 images than on macOS 15. Formulas with no macOS 26
49
+ bottle may be built from source, increasing job time significantly.
50
+
51
+ 4. **System library locations**: Dynamic library paths (e.g., for OpenSSL,
52
+ libpq, or other system libs installed via Homebrew) may differ between
53
+ macOS 15 and macOS 26 as Homebrew evolves its prefix structure.
54
+
55
+ 5. **Xcode simulator SDK policy**: Only the 3 latest Xcode versions retain
56
+ platform tools/SDKs. Workflows using older Xcode/simulator versions
57
+ that worked on macOS 15 may not find the expected SDK on macOS 26.
58
+
59
+ Workflows that do not pin `macos-latest` and have never tested on macOS 26
60
+ may start failing after the migration completes.
61
+ fix: |
62
+ 1. **Pin to macOS 15 temporarily**: Replace `macos-latest` with `macos-15`
63
+ to preserve the current behavior while you test and migrate.
64
+
65
+ 2. **Test on macOS 26 before migration**: Add a matrix job with
66
+ `macos-26` to identify failures before `macos-latest` switches.
67
+
68
+ 3. **Fix hardcoded LLVM/Clang paths**: Update any hardcoded paths like
69
+ `/opt/homebrew/opt/llvm@18` to use `$(brew --prefix llvm)` or install
70
+ the specific version you need via `brew install llvm@18`.
71
+
72
+ 4. **Update Homebrew formula pins**: Check for `@version`-pinned Homebrew
73
+ formulas that may no longer have macOS 26 bottles and either upgrade
74
+ or build from source explicitly.
75
+
76
+ 5. **Audit system library dependencies**: For native extensions that link
77
+ against system or Homebrew libraries, verify library paths with
78
+ `brew --prefix <lib>` at runtime rather than hardcoding them.
79
+ fix_code:
80
+ - language: yaml
81
+ label: "Pin to macos-15 while testing macOS 26 compatibility"
82
+ code: |
83
+ jobs:
84
+ build:
85
+ # Temporarily pin to macos-15 while migration is in progress
86
+ # macos-latest will point to macos-26 starting June 15, 2026
87
+ runs-on: macos-15
88
+ steps:
89
+ - uses: actions/checkout@v4
90
+ - run: make build
91
+ - language: yaml
92
+ label: "Matrix to test both macOS 15 and 26 before migration"
93
+ code: |
94
+ jobs:
95
+ build:
96
+ strategy:
97
+ matrix:
98
+ os: [macos-15, macos-26]
99
+ fail-fast: false
100
+ runs-on: ${{ matrix.os }}
101
+ steps:
102
+ - uses: actions/checkout@v4
103
+ - run: make build
104
+ - language: yaml
105
+ label: "Use brew --prefix to resolve dynamic LLVM/library paths"
106
+ code: |
107
+ - name: Set up LLVM paths dynamically
108
+ run: |
109
+ # Instead of hardcoded /opt/homebrew/opt/llvm@18/bin/clang:
110
+ LLVM_PREFIX=$(brew --prefix llvm)
111
+ echo "CC=${LLVM_PREFIX}/bin/clang" >> $GITHUB_ENV
112
+ echo "CXX=${LLVM_PREFIX}/bin/clang++" >> $GITHUB_ENV
113
+ echo "${LLVM_PREFIX}/bin" >> $GITHUB_PATH
114
+ prevention:
115
+ - "Never use macos-latest without testing the next macOS version first — GitHub announces label migrations weeks in advance in runner-images issues."
116
+ - "Pin to a specific macOS version (e.g., macos-15) for production workflows; use macos-latest only in exploratory or dependency-update workflows."
117
+ - "Avoid hardcoding Homebrew formula paths — always use `$(brew --prefix <formula>)` to resolve paths dynamically."
118
+ - "Run a matrix job spanning current and next macOS versions as part of your CI to catch breakage before a label migration lands."
119
+ docs:
120
+ - url: "https://github.com/actions/runner-images/issues/14167"
121
+ label: "runner-images #14167: macos-latest will use macos-26 starting June 15, 2026"
122
+ - url: "https://github.blog/changelog/2026-05-14-github-actions-upcoming-image-migrations/"
123
+ label: "GitHub Changelog: Upcoming image migrations (May 2026)"
124
+ - url: "https://github.com/actions/runner-images/issues/14167"
125
+ label: "runner-images announcement: macOS 14 deprecation starting July 6, 2026"
126
+ - url: "https://docs.github.com/en/actions/using-github-hosted-runners/using-github-hosted-runners/about-github-hosted-runners#standard-github-hosted-runners-for-public-repositories"
127
+ label: "GitHub Docs: Standard GitHub-hosted runners — available runner labels"