2026-10-20T01:03:17.9272454Z Current runner version: '2.337.0' 2026-10-20T01:03:17.9300804Z ##[group]Runner Image Provisioner 2026-10-20T01:03:17.9301986Z Hosted Compute Agent 2026-10-20T01:03:17.9302875Z Version: 20261012.601 2026-10-20T01:03:17.9303694Z Commit: f3dc54e1fb89da6852db922499a0233137369e1d 2026-10-20T01:03:17.9304656Z Build Date: 2026-10-12T17:48:21Z 2026-10-20T01:03:17.9305552Z Worker ID: {411405fd-ef82-4488-ad00-0a6b076fdd6f} 2026-10-20T01:03:17.9306700Z Region: centralus 2026-10-20T01:03:17.9307568Z Cloud: Azure 2026-10-20T01:03:17.9308281Z ##[endgroup] 2026-10-20T01:03:17.9310063Z ##[group]Operating System 2026-10-20T01:03:17.9310985Z Ubuntu 2026-10-20T01:03:17.9311624Z 24.04.5 2026-10-20T01:03:17.9312331Z LTS 2026-10-20T01:03:17.9313003Z ##[endgroup] 2026-10-20T01:03:17.9313740Z ##[group]Runner Image 2026-10-20T01:03:17.9314561Z Image: ubuntu-24.04 2026-10-20T01:03:17.9315259Z Version: 20261012.334.1 2026-10-20T01:03:17.9317173Z Included Software: https://github.com/actions/runner-images/blob/ubuntu24/20261012.334/images/ubuntu/Ubuntu2404-Readme.md 2026-10-20T01:03:17.9318994Z Image Release: https://github.com/actions/runner-images/releases/tag/ubuntu24%2F20261012.334 2026-10-20T01:03:17.9320288Z ##[endgroup] 2026-10-20T01:03:17.9321735Z ##[group]GITHUB_TOKEN Permissions 2026-10-20T01:03:17.9324677Z Contents: read 2026-10-20T01:03:17.9325434Z Metadata: read 2026-10-20T01:03:17.9326190Z Packages: read 2026-10-20T01:03:17.9327172Z ##[endgroup] 2026-10-20T01:03:17.9330190Z Secret source: Actions 2026-10-20T01:03:17.9331506Z Cache mode: write 2026-10-20T01:03:17.9332706Z Prepare workflow directory 2026-10-20T01:03:17.9667251Z Prepare all required actions 2026-10-20T01:03:17.9720460Z Getting action download info 2026-10-20T01:03:18.2315011Z Download action repository 'actions/checkout@v4' (SHA:11d5960a326750d5838078e36cf38b85af677262) 2026-10-20T01:03:18.3568856Z Download action repository 'hacs/action@main' (SHA:1ebf01c408f29afcb6406bd431bc98fd8cbb15aa) 2026-10-20T01:03:18.6089390Z Complete job name: hacs 2026-10-20T01:03:18.6462223Z ##[group]Pull down action image 'ghcr.io/hacs/action:main' 2026-10-20T01:03:18.6538397Z ##[command]/usr/bin/docker pull ghcr.io/hacs/action:main 2026-10-20T01:03:20.0466290Z main: Pulling from hacs/action 2026-10-20T01:03:20.2049484Z e2de96513ba9: Already exists 2026-10-20T01:03:20.2110304Z 48f6a2588427: Pulling fs layer 2026-10-20T01:03:20.2111889Z 2a22c5887fa2: Pulling fs layer 2026-10-20T01:03:20.2113113Z d486488257d0: Pulling fs layer 2026-10-20T01:03:20.2114295Z f40a1afc7f6d: Pulling fs layer 2026-10-20T01:03:20.2115499Z ccbe08bb1e90: Pulling fs layer 2026-10-20T01:03:20.2117027Z 33755999fcf0: Pulling fs layer 2026-10-20T01:03:20.2118214Z f40a1afc7f6d: Waiting 2026-10-20T01:03:20.2119221Z ccbe08bb1e90: Waiting 2026-10-20T01:03:20.2120217Z 33755999fcf0: Waiting 2026-10-20T01:03:20.3507242Z d486488257d0: Verifying Checksum 2026-10-20T01:03:20.3509061Z d486488257d0: Download complete 2026-10-20T01:03:20.4185319Z 48f6a2588427: Download complete 2026-10-20T01:03:20.5204997Z f40a1afc7f6d: Verifying Checksum 2026-10-20T01:03:20.5205836Z f40a1afc7f6d: Download complete 2026-10-20T01:03:20.5602532Z 2a22c5887fa2: Verifying Checksum 2026-10-20T01:03:20.5603142Z 2a22c5887fa2: Download complete 2026-10-20T01:03:20.6713642Z ccbe08bb1e90: Verifying Checksum 2026-10-20T01:03:20.6714220Z ccbe08bb1e90: Download complete 2026-10-20T01:03:20.7577068Z 48f6a2588427: Pull complete 2026-10-20T01:03:21.9545065Z 33755999fcf0: Verifying Checksum 2026-10-20T01:03:21.9545746Z 33755999fcf0: Download complete 2026-10-20T01:03:22.3738697Z 2a22c5887fa2: Pull complete 2026-10-20T01:03:22.5049054Z d486488257d0: Pull complete 2026-10-20T01:03:22.5204658Z f40a1afc7f6d: Pull complete 2026-10-20T01:03:22.5525847Z ccbe08bb1e90: Pull complete 2026-10-20T01:03:48.9383575Z 33755999fcf0: Pull complete 2026-10-20T01:03:48.9427028Z Digest: sha256:c26fd07e546d17cb30573f36c1cb7decbe3bd13a801d3480164a40bd1d3dfd08 2026-10-20T01:03:48.9441611Z Status: Downloaded newer image for ghcr.io/hacs/action:main 2026-10-20T01:03:48.9452298Z ghcr.io/hacs/action:main 2026-10-20T01:03:48.9469274Z ##[endgroup] 2026-10-20T01:03:48.9764189Z ##[group]Run actions/checkout@v4 2026-10-20T01:03:48.9764685Z with: 2026-10-20T01:03:48.9765122Z repository: Mezzle/govee-bluetooth 2026-10-20T01:03:48.9767741Z token: *** 2026-10-20T01:03:48.9768057Z ssh-strict: true 2026-10-20T01:03:48.9768403Z ssh-user: git 2026-10-20T01:03:48.9768698Z persist-credentials: true 2026-10-20T01:03:48.9769061Z clean: true 2026-10-20T01:03:48.9769356Z sparse-checkout-cone-mode: true 2026-10-20T01:03:48.9769682Z fetch-depth: 1 2026-10-20T01:03:48.9769972Z fetch-tags: false 2026-10-20T01:03:48.9770258Z show-progress: true 2026-10-20T01:03:48.9770579Z lfs: false 2026-10-20T01:03:48.9770848Z submodules: false 2026-10-20T01:03:48.9771178Z set-safe-directory: true 2026-10-20T01:03:48.9771505Z allow-unsafe-pr-checkout: false 2026-10-20T01:03:48.9772029Z ##[endgroup] 2026-10-20T01:03:49.0784287Z Syncing repository: Mezzle/govee-bluetooth 2026-10-20T01:03:49.0786246Z ##[group]Getting Git version info 2026-10-20T01:03:49.0787350Z Working directory is '/home/runner/work/govee-bluetooth/govee-bluetooth' 2026-10-20T01:03:49.0788462Z [command]/usr/bin/git version 2026-10-20T01:03:49.0788910Z git version 2.55.0 2026-10-20T01:03:49.0813484Z ##[endgroup] 2026-10-20T01:03:49.0821667Z Temporarily overriding HOME='/home/runner/work/_temp/90cada9d-dfee-4e2b-ae80-be3562c52299' before making global git config changes 2026-10-20T01:03:49.0823315Z Adding repository directory to the temporary git global config as a safe directory 2026-10-20T01:03:49.0824665Z [command]/usr/bin/git config --global --add safe.directory /home/runner/work/govee-bluetooth/govee-bluetooth 2026-10-20T01:03:49.0859672Z Deleting the contents of '/home/runner/work/govee-bluetooth/govee-bluetooth' 2026-10-20T01:03:49.0861802Z ##[group]Initializing the repository 2026-10-20T01:03:49.0955637Z [command]/usr/bin/git init /home/runner/work/govee-bluetooth/govee-bluetooth 2026-10-20T01:03:49.0956947Z hint: Using 'master' as the name for the initial branch. This default branch name 2026-10-20T01:03:49.0958191Z hint: will change to "main" in Git 3.0. To configure the initial branch name 2026-10-20T01:03:49.0959415Z hint: to use in all of your new repositories, which will suppress this warning, 2026-10-20T01:03:49.0960522Z hint: call: 2026-10-20T01:03:49.0961143Z hint: 2026-10-20T01:03:49.0962649Z hint: git config --global init.defaultBranch 2026-10-20T01:03:49.0963365Z hint: 2026-10-20T01:03:49.0963904Z hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and 2026-10-20T01:03:49.0964855Z hint: 'development'. The just-created branch can be renamed via this command: 2026-10-20T01:03:49.0965508Z hint: 2026-10-20T01:03:49.0965964Z hint: git branch -m 2026-10-20T01:03:49.0966389Z hint: 2026-10-20T01:03:49.0967187Z hint: Disable this message with "git config set advice.defaultBranchName false" 2026-10-20T01:03:49.0968243Z Initialized empty Git repository in /home/runner/work/govee-bluetooth/govee-bluetooth/.git/ 2026-10-20T01:03:49.0970293Z [command]/usr/bin/git remote add origin https://github.com/Mezzle/govee-bluetooth 2026-10-20T01:03:49.1017503Z ##[endgroup] 2026-10-20T01:03:49.1018311Z ##[group]Disabling automatic garbage collection 2026-10-20T01:03:49.1021408Z [command]/usr/bin/git config --local gc.auto 0 2026-10-20T01:03:49.1049468Z ##[endgroup] 2026-10-20T01:03:49.1050325Z ##[group]Setting up auth 2026-10-20T01:03:49.1056102Z [command]/usr/bin/git config --local --name-only --get-regexp core\.sshCommand 2026-10-20T01:03:49.1084879Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'core\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :" 2026-10-20T01:03:49.1418398Z [command]/usr/bin/git config --local --name-only --get-regexp http\.https\:\/\/github\.com\/\.extraheader 2026-10-20T01:03:49.1450978Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'http\.https\:\/\/github\.com\/\.extraheader' && git config --local --unset-all 'http.https://github.com/.extraheader' || :" 2026-10-20T01:03:49.1642746Z [command]/usr/bin/git config --local --name-only --get-regexp ^includeIf\.gitdir: 2026-10-20T01:03:49.1675826Z [command]/usr/bin/git submodule foreach --recursive git config --local --show-origin --name-only --get-regexp remote.origin.url 2026-10-20T01:03:49.1856951Z [command]/usr/bin/git config --local http.https://github.com/.extraheader AUTHORIZATION: basic *** 2026-10-20T01:03:49.1890620Z ##[endgroup] 2026-10-20T01:03:49.1891375Z ##[group]Fetching the repository 2026-10-20T01:03:49.1899049Z [command]/usr/bin/git -c protocol.version=2 fetch --no-tags --prune --no-recurse-submodules --depth=1 origin +8c634373eda616b4a17613a554c70999dc887441:refs/remotes/origin/fix/broken-main-tests 2026-10-20T01:03:49.6284587Z From https://github.com/Mezzle/govee-bluetooth 2026-10-20T01:03:49.6285689Z * [new ref] 8c634373eda616b4a17613a554c70999dc887441 -> origin/fix/broken-main-tests 2026-10-20T01:03:49.6289923Z ##[endgroup] 2026-10-20T01:03:49.6290676Z ##[group]Determining the checkout info 2026-10-20T01:03:49.6293427Z ##[endgroup] 2026-10-20T01:03:49.6300629Z [command]/usr/bin/git sparse-checkout disable 2026-10-20T01:03:49.6354344Z [command]/usr/bin/git config --local --unset-all extensions.worktreeConfig 2026-10-20T01:03:49.6384923Z ##[group]Checking out the ref 2026-10-20T01:03:49.6390347Z [command]/usr/bin/git checkout --progress --force -B fix/broken-main-tests refs/remotes/origin/fix/broken-main-tests 2026-10-20T01:03:49.6497553Z Switched to a new branch 'fix/broken-main-tests' 2026-10-20T01:03:49.6502532Z branch 'fix/broken-main-tests' set up to track 'origin/fix/broken-main-tests'. 2026-10-20T01:03:49.6509717Z ##[endgroup] 2026-10-20T01:03:49.6544291Z [command]/usr/bin/git log -1 --format=%H 2026-10-20T01:03:49.6564546Z 8c634373eda616b4a17613a554c70999dc887441 2026-10-20T01:03:49.6766235Z ##[group]Run hacs/action@main 2026-10-20T01:03:49.6766739Z with: 2026-10-20T01:03:49.6767095Z category: integration 2026-10-20T01:03:49.6767511Z comment: true 2026-10-20T01:03:49.6769853Z github_token: *** 2026-10-20T01:03:49.6770143Z ##[endgroup] 2026-10-20T01:03:49.6865409Z ##[command]/usr/bin/docker run --name ghcriohacsactionmain_9e6cfd --label 6d69bb --workdir /github/workspace --rm -e "INPUT_CATEGORY" -e "INPUT_IGNORE" -e "INPUT_REPOSITORY" -e "INPUT_COMMENT" -e "INPUT_GITHUB_TOKEN" -e "HOME" -e "GITHUB_JOB" -e "GITHUB_REF" -e "GITHUB_SHA" -e "GITHUB_REPOSITORY" -e "GITHUB_REPOSITORY_OWNER" -e "GITHUB_REPOSITORY_OWNER_ID" -e "GITHUB_RUN_ID" -e "GITHUB_RUN_NUMBER" -e "GITHUB_RETENTION_DAYS" -e "GITHUB_RUN_ATTEMPT" -e "GITHUB_ACTOR_ID" -e "GITHUB_ACTOR" -e "GITHUB_WORKFLOW" -e "GITHUB_HEAD_REF" -e "GITHUB_BASE_REF" -e "GITHUB_EVENT_NAME" -e "GITHUB_SERVER_URL" -e "GITHUB_API_URL" -e "GITHUB_GRAPHQL_URL" -e "GITHUB_REF_NAME" -e "GITHUB_REF_PROTECTED" -e "GITHUB_REF_TYPE" -e "GITHUB_WORKFLOW_REF" -e "GITHUB_WORKFLOW_SHA" -e "GITHUB_REPOSITORY_ID" -e "GITHUB_TRIGGERING_ACTOR" -e "GITHUB_WORKSPACE" -e "GITHUB_ACTION" -e "GITHUB_EVENT_PATH" -e "GITHUB_ACTION_REPOSITORY" -e "GITHUB_ACTION_REF" -e "GITHUB_PATH" -e "GITHUB_ENV" -e "GITHUB_STEP_SUMMARY" -e "GITHUB_STATE" -e "GITHUB_OUTPUT" -e "GITHUB_ARTIFACTS" -e "GITHUB_ARTIFACTS_LIST" -e "RUNNER_OS" -e "RUNNER_ARCH" -e "RUNNER_NAME" -e "RUNNER_ENVIRONMENT" -e "RUNNER_TOOL_CACHE" -e "RUNNER_TEMP" -e "RUNNER_WORKSPACE" -e "ACTIONS_RUNTIME_URL" -e "ACTIONS_RUNTIME_TOKEN" -e "ACTIONS_CACHE_URL" -e "ACTIONS_RESULTS_URL" -e "ACTIONS_CACHE_MODE" -e "ACTIONS_ORCHESTRATION_ID" -e GITHUB_ACTIONS=true -e CI=true -v "/var/run/docker.sock":"/var/run/docker.sock" -v "/home/runner/work/_temp":"/github/runner_temp" -v "/home/runner/work/_temp/_github_home":"/github/home" -v "/home/runner/work/_temp/_github_workflow":"/github/workflow" -v "/home/runner/work/_temp/_runner_file_commands":"/github/file_commands" -v "/home/runner/work/govee-bluetooth/govee-bluetooth":"/github/workspace" ghcr.io/hacs/action:main 2026-10-20T01:03:55.9046043Z ::INFO:: Category: integration 2026-10-20T01:03:55.9048133Z ::INFO:: Repository: Mezzle/govee-bluetooth@refs/heads/fix/broken-main-tests 2026-10-20T01:03:56.9453629Z ::INFO:: completed 2026-10-20T01:03:56.9502459Z ##[warning] The integration manifest has no categories, see https://contributors.home-assistant.io/core/integrations/categories/ 2026-10-20T01:03:56.9511482Z ::INFO:: completed 2026-10-20T01:03:56.9512187Z ::INFO:: completed 2026-10-20T01:03:56.9512723Z ::INFO:: completed 2026-10-20T01:03:56.9513496Z ::INFO:: completed 2026-10-20T01:03:56.9514488Z ::INFO:: completed 2026-10-20T01:03:56.9514952Z ::INFO:: completed 2026-10-20T01:03:56.9515514Z ::INFO:: completed 2026-10-20T01:03:56.9516099Z ::INFO:: completed 2026-10-20T01:03:57.0803870Z ::INFO:: completed 2026-10-20T01:03:57.0804459Z ::INFO:: All (10) checks passed 2026-10-20T01:03:58.0820111Z ::INFO:: Validation completed 2026-10-20T01:03:58.0832863Z ##[group]data 2026-10-20T01:03:58.0833264Z { 2026-10-20T01:03:58.0833727Z "data": { 2026-10-20T01:03:58.0834098Z "archived": false, 2026-10-20T01:03:58.0834851Z "authors": [ 2026-10-20T01:03:58.0835194Z "@mezzle" 2026-10-20T01:03:58.0835463Z ], 2026-10-20T01:03:58.0835806Z "category": "integration", 2026-10-20T01:03:58.0836136Z "config_flow": true, 2026-10-20T01:03:58.0836450Z "default_branch": "main", 2026-10-20T01:03:58.0837261Z "description": "Home Assistant integration for Govee LED strips over Bluetooth LE, via local adapters or ESPHome Bluetooth proxies. No cloud.", 2026-10-20T01:03:58.0838188Z "domain": "govee_bluetooth", 2026-10-20T01:03:58.0838656Z "downloads": 0, 2026-10-20T01:03:58.0839123Z "etag_repository": "W/\"75de9e82ef9b20c1eb58ff8370171111e3f73b18e03e1b740166f20ce393add9\"", 2026-10-20T01:03:58.0839671Z "etag_releases": null, 2026-10-20T01:03:58.0840007Z "file_name": "", 2026-10-20T01:03:58.0840311Z "first_install": false, 2026-10-20T01:03:58.0840688Z "full_name": "Mezzle/govee-bluetooth", 2026-10-20T01:03:58.0841028Z "hide": false, 2026-10-20T01:03:58.0841307Z "has_issues": true, 2026-10-20T01:03:58.0841632Z "id": "1424335838", 2026-10-20T01:03:58.0841937Z "installed_commit": null, 2026-10-20T01:03:58.0842281Z "installed_version": null, 2026-10-20T01:03:58.0842640Z "installed": false, 2026-10-20T01:03:58.0842926Z "last_commit": null, 2026-10-20T01:03:58.0843293Z "last_updated": "2026-10-20T01:03:12Z", 2026-10-20T01:03:58.0843632Z "last_version": "v0.1.0", 2026-10-20T01:03:58.0844007Z "manifest_name": "Govee Bluetooth", 2026-10-20T01:03:58.0844348Z "new": true, 2026-10-20T01:03:58.0844637Z "open_issues": 1, 2026-10-20T01:03:58.0844946Z "prerelease": null, 2026-10-20T01:03:58.0845249Z "published_tags": [ 2026-10-20T01:03:58.0845548Z "v0.1.0" 2026-10-20T01:03:58.0845990Z ], 2026-10-20T01:03:58.0846303Z "releases": true, 2026-10-20T01:03:58.0857499Z "selected_tag": "refs/heads/fix/broken-main-tests", 2026-10-20T01:03:58.0877173Z "show_beta": false, 2026-10-20T01:03:58.0897322Z "stargazers_count": 0, 2026-10-20T01:03:58.0899297Z "topics": [ 2026-10-20T01:03:58.0899656Z "bluetooth", 2026-10-20T01:03:58.0900054Z "bluetooth-le", 2026-10-20T01:03:58.0900469Z "esphome", 2026-10-20T01:03:58.0900877Z "govee", 2026-10-20T01:03:58.0901246Z "hacs", 2026-10-20T01:03:58.0901625Z "home-assistant", 2026-10-20T01:03:58.0902106Z "home-assistant-integration" 2026-10-20T01:03:58.0902548Z ] 2026-10-20T01:03:58.0902888Z }, 2026-10-20T01:03:58.0903554Z "manifest": { 2026-10-20T01:03:58.0903847Z "content_in_root": false, 2026-10-20T01:03:58.0904160Z "country": [], 2026-10-20T01:03:58.0904514Z "filename": null, 2026-10-20T01:03:58.0904829Z "hacs": null, 2026-10-20T01:03:58.0905246Z "hide_default_branch": false, 2026-10-20T01:03:58.0905638Z "homeassistant": "2025.6.0", 2026-10-20T01:03:58.0906080Z "manifest": { 2026-10-20T01:03:58.0906814Z "name": "Govee Bluetooth", 2026-10-20T01:03:58.0907150Z "render_readme": true, 2026-10-20T01:03:58.0907495Z "homeassistant": "2025.6.0" 2026-10-20T01:03:58.0907811Z }, 2026-10-20T01:03:58.0908114Z "name": "Govee Bluetooth", 2026-10-20T01:03:58.0908474Z "persistent_directory": null, 2026-10-20T01:03:58.0908801Z "render_readme": true, 2026-10-20T01:03:58.0909135Z "zip_release": false 2026-10-20T01:03:58.0909459Z }, 2026-10-20T01:03:58.0909785Z "release": { 2026-10-20T01:03:58.0910123Z "tag": "v0.1.0", 2026-10-20T01:03:58.0910448Z "assets": [] 2026-10-20T01:03:58.0910736Z }, 2026-10-20T01:03:58.0911005Z "category": "integration", 2026-10-20T01:03:58.0911363Z "ref": "refs/heads/fix/broken-main-tests" 2026-10-20T01:03:58.0911753Z } 2026-10-20T01:03:58.0912600Z ##[endgroup] 2026-10-20T01:03:58.8098533Z Post job cleanup. 2026-10-20T01:03:58.8894147Z [command]/usr/bin/git version 2026-10-20T01:03:58.8929373Z git version 2.55.0 2026-10-20T01:03:58.8960282Z Temporarily overriding HOME='/home/runner/work/_temp/a091ecb1-10f6-44b6-808d-b2ac92c7777d' before making global git config changes 2026-10-20T01:03:58.8961493Z Adding repository directory to the temporary git global config as a safe directory 2026-10-20T01:03:58.8966126Z [command]/usr/bin/git config --global --add safe.directory /home/runner/work/govee-bluetooth/govee-bluetooth 2026-10-20T01:03:58.9000163Z [command]/usr/bin/git config --local --name-only --get-regexp core\.sshCommand 2026-10-20T01:03:58.9029706Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'core\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :" 2026-10-20T01:03:58.9253383Z [command]/usr/bin/git config --local --name-only --get-regexp http\.https\:\/\/github\.com\/\.extraheader 2026-10-20T01:03:58.9279504Z http.https://github.com/.extraheader 2026-10-20T01:03:58.9288879Z [command]/usr/bin/git config --local --unset-all http.https://github.com/.extraheader 2026-10-20T01:03:58.9320134Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'http\.https\:\/\/github\.com\/\.extraheader' && git config --local --unset-all 'http.https://github.com/.extraheader' || :" 2026-10-20T01:03:58.9537737Z [command]/usr/bin/git config --local --name-only --get-regexp ^includeIf\.gitdir: 2026-10-20T01:03:58.9578794Z [command]/usr/bin/git submodule foreach --recursive git config --local --show-origin --name-only --get-regexp remote.origin.url 2026-10-20T01:03:58.9947649Z Cleaning up orphan processes 2026-10-20T01:03:59.0226396Z ##[warning]Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/