Skip to content

chore(deps): bump the actions group with 7 updates - #810

Merged
hyperpolymath merged 1 commit into
mainfrom
dependabot/github_actions/actions-08603b1370
Sep 22, 2026
Merged

hyperpolymath merged 1 commit into
mainfrom
dependabot/github_actions/actions-08603b1370

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Sep 21, 2026

Copy link
Copy Markdown
Contributor

Bumps the actions group with 7 updates:

Package From To
taiki-e/install-action 2.87.13 2.87.15
github/codeql-action/init 4.38.0 4.38.1
github/codeql-action/analyze 4.38.0 4.38.1
ruby/setup-ruby 1.323.0 1.324.0
docker/setup-buildx-action 4.4.0 4.4.1
trufflesecurity/trufflehog 3.97.4 3.97.5
github/codeql-action 4.38.0 4.38.1

Updates taiki-e/install-action from 2.87.13 to 2.87.15

Release notes

Sourced from taiki-e/install-action's releases.

2.87.15

  • Update syft@latest to 1.52.0.

  • Update mise@latest to 2026.9.10.

  • Update kingfisher@latest to 2.4.0.

  • Update kache@latest to 0.23.1.

  • Update coreutils@latest to 0.12.0.

  • Update cargo-nextest@latest to 0.9.145.

2.87.14

  • Update vacuum@latest to 0.30.6.

  • Update uv@latest to 0.12.15.

  • Update typos@latest to 1.50.2.

  • Update sccache@latest to 0.18.0.

  • Update oxfmt@latest to 1.83.0.

  • Update mise@latest to 2026.9.9.

  • Update kingfisher@latest to 2.3.0.

  • Update kache@latest to 0.22.0.

  • Update biome@latest to 2.5.14.

Changelog

Sourced from taiki-e/install-action's changelog.

[2.87.15] - 2026-09-18

  • Update syft@latest to 1.52.0.

  • Update mise@latest to 2026.9.10.

  • Update kingfisher@latest to 2.4.0.

  • Update kache@latest to 0.23.1.

  • Update coreutils@latest to 0.12.0.

  • Update cargo-nextest@latest to 0.9.145.

[2.87.14] - 2026-09-17

  • Update vacuum@latest to 0.30.6.

  • Update uv@latest to 0.12.15.

  • Update typos@latest to 1.50.2.

  • Update sccache@latest to 0.18.0.

  • Update oxfmt@latest to 1.83.0.

  • Update mise@latest to 2026.9.9.

  • Update kingfisher@latest to 2.3.0.

  • Update kache@latest to 0.22.0.

  • Update biome@latest to 2.5.14.

Commits

Updates github/codeql-action/init from 4.38.0 to 4.38.1

Release notes

Sourced from github/codeql-action/init's releases.

v4.38.1

  • The CodeQL Action now has experimental support for CodeQL releases for which per-language bundles are available. Per-language bundles support analysis for a single language and are therefore smaller than the combined bundles that allow analysis for all supported languages. As a result, per-language bundles take up less space on disk and are faster to download. We expect to roll this change out to everyone in the coming weeks. #4146
Changelog

Sourced from github/codeql-action/init's changelog.

CodeQL Action Changelog

See the releases page for the relevant changes to the CodeQL CLI and language packs.

[UNRELEASED]

No user facing changes.

4.38.1 - 18 Sept 2026

  • The CodeQL Action now has experimental support for CodeQL releases for which per-language bundles are available. Per-language bundles support analysis for a single language and are therefore smaller than the combined bundles that allow analysis for all supported languages. As a result, per-language bundles take up less space on disk and are faster to download. We expect to roll this change out to everyone in the coming weeks. #4146

4.38.0 - 09 Sept 2026

  • On GitHub-hosted runners, the CodeQL Action now deletes unused CodeQL bundles from the toolcache before downloading a different bundle, which frees up disk space for the analysis. We expect to roll this change out to everyone in September. #4124
  • The CodeQL Action now supports CodeQL releases that are compatible with Linux Arm64 and downloads the native linux-arm64 CodeQL bundle when available. #4072
  • Update default CodeQL bundle version to 2.27.0. #4129

4.37.9 - 26 Aug 2026

  • Update default CodeQL bundle version to 2.26.4. #4106

4.37.8 - 21 Aug 2026

No user facing changes.

4.37.7 - 13 Aug 2026

  • Update default CodeQL bundle version to 2.26.3. #4085

4.37.6 - 04 Aug 2026

  • Changed the default filepath for the new remote file address format that was introduced in CodeQL Action 4.37.0 / 3.37.0 to .github/codeql-config.yml to align it with the suggested path that is used elsewhere. #4070

4.37.5 - 03 Aug 2026

  • Fixed a bug where a network error while streaming the download of the CodeQL bundle could terminate the init Action instead of falling back to downloading the bundle before extracting it. #4061

4.37.4 - 29 Jul 2026

  • This version of the CodeQL Action adds support for the tools input for the codeql-action/init step to be specified using a github-codeql-tools repository property. This feature will gradually be rolled out following the release of this version. Once rolled out, this allows for the CodeQL CLI version that is used in GitHub-managed workflows, such as Default Setup, to be set to a custom value. For example, customers who run into issues with rate limits when a new CodeQL CLI version is released can set the value to toolcache to always use the CodeQL CLI version that is available in the runner toolcache. For Advanced Setup workflows, the value provided for tools in the workflow definition always takes precedence unless the value of the repository property starts with !. #4037
  • Update default CodeQL bundle version to 2.26.2. #4051

4.37.3 - 22 Jul 2026

No user facing changes.

4.37.2 - 21 Jul 2026

  • The new address format for the config-file input that was introduced in CodeQL Action 4.37.0 is now enabled by default. In addition to the format described there, the remote= prefix can now be used to explicitly indicate that the input refers to a remote file. All previous input formats continue to be accepted as well. #4023

... (truncated)

Commits
  • 1c5b675 Merge pull request #4152 from github/update-v4.38.1-a65b83a73
  • a97cdca Add changelog entry for #4146
  • cc6c691 Update changelog for v4.38.1
  • a65b83a Merge pull request #4146 from github/henrymercer/per-language-bundles-pr
  • 07fa87d Clarify the latest-nightly eligibility exception
  • f18f353 Describe the bundle URL resolver
  • ecec9b5 Share per-language telemetry fields without renaming
  • 79fe3a1 Move download telemetry into the status-report directory
  • ead1f7d Rename the platform module
  • 549d498 Simplify per-language platform eligibility checks
  • Additional commits viewable in compare view

Updates github/codeql-action/analyze from 4.38.0 to 4.38.1

Release notes

Sourced from github/codeql-action/analyze's releases.

v4.38.1

  • The CodeQL Action now has experimental support for CodeQL releases for which per-language bundles are available. Per-language bundles support analysis for a single language and are therefore smaller than the combined bundles that allow analysis for all supported languages. As a result, per-language bundles take up less space on disk and are faster to download. We expect to roll this change out to everyone in the coming weeks. #4146
Changelog

Sourced from github/codeql-action/analyze's changelog.

CodeQL Action Changelog

See the releases page for the relevant changes to the CodeQL CLI and language packs.

[UNRELEASED]

No user facing changes.

4.38.1 - 18 Sept 2026

  • The CodeQL Action now has experimental support for CodeQL releases for which per-language bundles are available. Per-language bundles support analysis for a single language and are therefore smaller than the combined bundles that allow analysis for all supported languages. As a result, per-language bundles take up less space on disk and are faster to download. We expect to roll this change out to everyone in the coming weeks. #4146

4.38.0 - 09 Sept 2026

  • On GitHub-hosted runners, the CodeQL Action now deletes unused CodeQL bundles from the toolcache before downloading a different bundle, which frees up disk space for the analysis. We expect to roll this change out to everyone in September. #4124
  • The CodeQL Action now supports CodeQL releases that are compatible with Linux Arm64 and downloads the native linux-arm64 CodeQL bundle when available. #4072
  • Update default CodeQL bundle version to 2.27.0. #4129

4.37.9 - 26 Aug 2026

  • Update default CodeQL bundle version to 2.26.4. #4106

4.37.8 - 21 Aug 2026

No user facing changes.

4.37.7 - 13 Aug 2026

  • Update default CodeQL bundle version to 2.26.3. #4085

4.37.6 - 04 Aug 2026

  • Changed the default filepath for the new remote file address format that was introduced in CodeQL Action 4.37.0 / 3.37.0 to .github/codeql-config.yml to align it with the suggested path that is used elsewhere. #4070

4.37.5 - 03 Aug 2026

  • Fixed a bug where a network error while streaming the download of the CodeQL bundle could terminate the init Action instead of falling back to downloading the bundle before extracting it. #4061

4.37.4 - 29 Jul 2026

  • This version of the CodeQL Action adds support for the tools input for the codeql-action/init step to be specified using a github-codeql-tools repository property. This feature will gradually be rolled out following the release of this version. Once rolled out, this allows for the CodeQL CLI version that is used in GitHub-managed workflows, such as Default Setup, to be set to a custom value. For example, customers who run into issues with rate limits when a new CodeQL CLI version is released can set the value to toolcache to always use the CodeQL CLI version that is available in the runner toolcache. For Advanced Setup workflows, the value provided for tools in the workflow definition always takes precedence unless the value of the repository property starts with !. #4037
  • Update default CodeQL bundle version to 2.26.2. #4051

4.37.3 - 22 Jul 2026

No user facing changes.

4.37.2 - 21 Jul 2026

  • The new address format for the config-file input that was introduced in CodeQL Action 4.37.0 is now enabled by default. In addition to the format described there, the remote= prefix can now be used to explicitly indicate that the input refers to a remote file. All previous input formats continue to be accepted as well. #4023

... (truncated)

Commits
  • 1c5b675 Merge pull request #4152 from github/update-v4.38.1-a65b83a73
  • a97cdca Add changelog entry for #4146
  • cc6c691 Update changelog for v4.38.1
  • a65b83a Merge pull request #4146 from github/henrymercer/per-language-bundles-pr
  • 07fa87d Clarify the latest-nightly eligibility exception
  • f18f353 Describe the bundle URL resolver
  • ecec9b5 Share per-language telemetry fields without renaming
  • 79fe3a1 Move download telemetry into the status-report directory
  • ead1f7d Rename the platform module
  • 549d498 Simplify per-language platform eligibility checks
  • Additional commits viewable in compare view

Updates ruby/setup-ruby from 1.323.0 to 1.324.0

Release notes

Sourced from ruby/setup-ruby's releases.

v1.324.0

What's Changed

Full Changelog: ruby/setup-ruby@v1.323.0...v1.324.0

Commits

Updates docker/setup-buildx-action from 4.4.0 to 4.4.1

Release notes

Sourced from docker/setup-buildx-action's releases.

v4.4.1

Full Changelog: docker/setup-buildx-action@v4.4.0...v4.4.1

Commits
  • f87e599 Merge pull request #624 from crazy-max/skip-pull-with-endpoint
  • e700274 chore: update generated content
  • 3061c91 skip BuildKit image pre-pulls for explicit endpoints
  • See full diff in compare view

Updates trufflesecurity/trufflehog from 3.97.4 to 3.97.5

Release notes

Sourced from trufflesecurity/trufflehog's releases.

v3.97.5

What's Changed

New Contributors

Full Changelog: trufflesecurity/trufflehog@v3.97.4...v3.97.5

Commits
  • f714bf4 [SCAN-177] Purge secret parts from verification cache (#5318)
  • 4ecb5c6 Add elasticsearch source documentation (#5284)
  • 8d77a9d Add filesystem source documentation (#5285)
  • b8a71ee Add documentation for CircleCI source (#5268)
  • b1d7dae perf(engine): lowercase prefilter chunks as ASCII in a pooled buffer (#5291)
  • 07e3ac7 Introduce a new optional detector interface that will allow us to verify cred...
  • 5a6944e ci: avoid Node 20 BuildPulse action (#5266)
  • ce7b2b8 fix(detectors/ngrok): broaden valid bearer tokens matching (#5152)
  • 58bf481 Postgres: drop non-connection URI params before verifying (#5296)
  • 82fd19c Adding no-ignore flag to allow reporting of "ignored" secrets (#5297)
  • Additional commits viewable in compare view

Updates github/codeql-action from 4.38.0 to 4.38.1

Release notes

Sourced from github/codeql-action's releases.

v4.38.1

  • The CodeQL Action now has experimental support for CodeQL releases for which per-language bundles are available. Per-language bundles support analysis for a single language and are therefore smaller than the combined bundles that allow analysis for all supported languages. As a result, per-language bundles take up less space on disk and are faster to download. We expect to roll this change out to everyone in the coming weeks. #4146
Changelog

Sourced from github/codeql-action's changelog.

4.38.1 - 18 Sept 2026

  • The CodeQL Action now has experimental support for CodeQL releases for which per-language bundles are available. Per-language bundles support analysis for a single language and are therefore smaller than the combined bundles that allow analysis for all supported languages. As a result, per-language bundles take up less space on disk and are faster to download. We expect to roll this change out to everyone in the coming weeks. #4146
Commits
  • 1c5b675 Merge pull request #4152 from github/update-v4.38.1-a65b83a73
  • a97cdca Add changelog entry for #4146
  • cc6c691 Update changelog for v4.38.1
  • a65b83a Merge pull request #4146 from github/henrymercer/per-language-bundles-pr
  • 07fa87d Clarify the latest-nightly eligibility exception
  • f18f353 Describe the bundle URL resolver
  • ecec9b5 Share per-language telemetry fields without renaming
  • 79fe3a1 Move download telemetry into the status-report directory
  • ead1f7d Rename the platform module
  • 549d498 Simplify per-language platform eligibility checks
  • Additional commits viewable in compare view

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore <dependency name> major version will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)
  • @dependabot ignore <dependency name> minor version will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)
  • @dependabot ignore <dependency name> will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)
  • @dependabot unignore <dependency name> will remove all of the ignore conditions of the specified dependency
  • @dependabot unignore <dependency name> <ignore condition> will remove the ignore condition of the specified dependency and ignore conditions

Bumps the actions group with 7 updates:

| Package | From | To |
| --- | --- | --- |
| [taiki-e/install-action](https://github.com/taiki-e/install-action) | `2.87.13` | `2.87.15` |
| [github/codeql-action/init](https://github.com/github/codeql-action) | `4.38.0` | `4.38.1` |
| [github/codeql-action/analyze](https://github.com/github/codeql-action) | `4.38.0` | `4.38.1` |
| [ruby/setup-ruby](https://github.com/ruby/setup-ruby) | `1.323.0` | `1.324.0` |
| [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) | `4.4.0` | `4.4.1` |
| [trufflesecurity/trufflehog](https://github.com/trufflesecurity/trufflehog) | `3.97.4` | `3.97.5` |
| [github/codeql-action](https://github.com/github/codeql-action) | `4.38.0` | `4.38.1` |


Updates `taiki-e/install-action` from 2.87.13 to 2.87.15
- [Release notes](https://github.com/taiki-e/install-action/releases)
- [Changelog](https://github.com/taiki-e/install-action/blob/main/CHANGELOG.md)
- [Commits](taiki-e/install-action@v2.87.13...v2.87.15)

Updates `github/codeql-action/init` from 4.38.0 to 4.38.1
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](github/codeql-action@b96794f...1c5b675)

Updates `github/codeql-action/analyze` from 4.38.0 to 4.38.1
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](github/codeql-action@b96794f...1c5b675)

Updates `ruby/setup-ruby` from 1.323.0 to 1.324.0
- [Release notes](https://github.com/ruby/setup-ruby/releases)
- [Changelog](https://github.com/ruby/setup-ruby/blob/master/release.rb)
- [Commits](ruby/setup-ruby@v1.323.0...v1.324.0)

Updates `docker/setup-buildx-action` from 4.4.0 to 4.4.1
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](docker/setup-buildx-action@v4.4.0...v4.4.1)

Updates `trufflesecurity/trufflehog` from 3.97.4 to 3.97.5
- [Release notes](https://github.com/trufflesecurity/trufflehog/releases)
- [Commits](trufflesecurity/trufflehog@v3.97.4...v3.97.5)

Updates `github/codeql-action` from 4.38.0 to 4.38.1
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](github/codeql-action@v4.38.0...v4.38.1)

---
updated-dependencies:
- dependency-name: taiki-e/install-action
  dependency-version: 2.87.15
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: actions
- dependency-name: github/codeql-action/init
  dependency-version: 4.38.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: actions
- dependency-name: github/codeql-action/analyze
  dependency-version: 4.38.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: actions
- dependency-name: ruby/setup-ruby
  dependency-version: 1.324.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: actions
- dependency-name: docker/setup-buildx-action
  dependency-version: 4.4.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: actions
- dependency-name: trufflesecurity/trufflehog
  dependency-version: 3.97.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: actions
- dependency-name: github/codeql-action
  dependency-version: 4.38.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: actions
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file github_actions Pull requests that update GitHub Actions code labels Sep 21, 2026
@coderabbitai

coderabbitai Bot commented Sep 21, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Bot user detected.

To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Advanced

Run ID: f1d3e1f4-d8fe-4b0e-a579-f8cc80915589

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Comment thread .github/workflows/ci.yml Outdated
@@ -224,7 +224,7 @@ jobs:
Comment thread .github/workflows/quality.yml Outdated
Comment thread .github/workflows/release.yml Outdated
@@ -584,13 +584,13 @@ jobs:
with:
languages: ${{ matrix.language }}
queries: security-extended,security-and-quality

Comment thread .github/workflows/security-policy.yml Outdated
@@ -533,7 +533,7 @@ jobs:
Comment thread .github/workflows/tests.yml Outdated
@hyperpolymath
hyperpolymath merged commit 0157a9b into main Sep 22, 2026
32 of 41 checks passed
@hyperpolymath
hyperpolymath deleted the dependabot/github_actions/actions-08603b1370 branch September 22, 2026 09:09
hyperpolymath added a commit that referenced this pull request Sep 22, 2026
…#817)

## The gate I shipped in #811 is red on `main`

#811 merged with its own new `ABI codegen drift` check failing. This
fixes it
forward. The gate is loudly red rather than silently green, so it is not
a
vacuous gate — but a gate that has never passed is not yet evidence of
anything, and left red it trains people to ignore it.

### The cause, measured

```
INTERNAL ERROR: Can't find data file chez/support.ss in any of
["/home/runner/.idris2/idris2-0.7.0/support/chez/support.ss",
 ".../base-0.7.0/data/chez/support.ss",
 .../contrib-0.7.0/data/chez/support.ss"]
```

Compiling an Idris2 **executable** needs the Chez support tree at
`$(idris2 --libdir)/support/chez/support.ss`. Type-checking and building
a
**library** does not.

`verify-proofs.yml` only ever does the latter — `idris2 --check` over
the proof
files, `idris2 --build` on two library packages — and never links a
binary. So
the cache this job deliberately shares with it (same key
`idris2-${IDRIS2_VERSION}-${runner.os}-2`, chosen so the gate would not
repeat
a 20-minute bootstrap) was populated **without** that tree.

**Sharing a warm cache imports its omissions as well as its contents.**
That is
the generalisable lesson here, and it is why my local build passed while
CI's
failed: locally the support tree exists under pack, so the local success
was
never evidence about CI.

### The fix

A step between "Verify Idris is on PATH" and "Build the generator" that:

1. resolves `$(idris2 --libdir)/support` and checks for
`chez/support.ss`;
2. if absent, shallow-clones the Idris2 source at the **pinned**
`IDRIS2_VERSION`
and copies `support/` into place — `support/` is plain data (Scheme and
C
   sources), needs no build, so this costs seconds, not a bootstrap;
3. **asserts the file is present by name** before continuing.

Step 3 matters independently of step 2. A missing support tree
previously
surfaced as an opaque `INTERNAL ERROR` three steps later, inside the
generator
build, where it read like a generator bug. Now it fails where it is
caused.

### Also in this PR

`zig.yml` extracted the test count with `grep … || true`, which the
`Hypatia`
workflow scanner flagged at `zig.yml:99` as swallowing a non-zero exit.

`set -o pipefail` already made a genuine `zig test` failure fatal, so
nothing
was actually masked — but a suppressed exit code is indistinguishable
from a
masked failure to a reader or a scanner, so this is a rewrite rather
than an
argument. `grep` exits 1 on no-match, which under `set -e` needs
suppressing;
**awk exits 0 whether or not it matched**, so the no-match case needs no
suppression at all and the count check below it becomes the only thing
that can
fail the step.

Measured, not assumed — the extraction was run against the real `zig
test`
output and three mutant logs:

| Input | Extracted | Gate |
|---|---|---|
| real run (`All 4 tests passed.`) | `4` | green |
| `All 0 tests passed.` | `0` | **red** |
| no summary line at all | `0` | **red** |
| empty log | `0` | **red** |
| `3 of 7 tests passed.` | `7` | green |

`awk` returns rc=0 on the no-match cases, which is the whole point of
the
change.

The one remaining `|| true` in `abi-codegen-drift.yml` — a diagnostic
`find`
inside an already-failing branch — is replaced by a `[ -d ]` guard for
the same
reason. There is now no `|| true` in either workflow.

### Not caused by this change

`governance / Actions lockfile verify` is red on every PR because #810
bumped 7
actions without refreshing `.github/workflows/actions.lock`
(`taiki-e/install-action` v2.87.13→v2.87.15, `ruby/setup-ruby`
v1.323.0→v1.324.0,
`docker/setup-buildx-action` v4.4.0→v4.4.1, and a `github/codeql-action`
SHA).
Every finding is on a workflow this PR does not touch. Filed separately
—
folding an unrelated repo-wide fault into this PR would make both harder
to
review.

The `Check` / `Test` / `Clippy` / `Cargo check + clippy + fmt` reds are
pre-existing on `main` (the unsatisfiable `testcontainers` constraint,
#814),
as are the three `governance /` reds.

### Acceptance

This PR is not done when it is merged; it is done when
`abi-codegen-drift`
reports **jobs > 0** and prints its denominator:

```
connectors emitted: 16
files compared:     3 of 3
```

Refs #120

🤖 Generated with [Claude Code](https://claude.com/claude-code)

https://claude.ai/code/session_0113HQM9LVGkNCzU1WwkJZSV

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
hyperpolymath added a commit that referenced this pull request Sep 22, 2026
… pass (#819)

## Why this exists

PR #817 was squash-merged at head `c82e9aa`, which carried only the
**first
half** of the fix. The second commit landed on the branch after the
merge and
is not in `main`. Measured, not assumed:

```
$ gh api repos/hyperpolymath/hypatia/commits/5060161.../check-runs
completed  failure  abi-codegen-drift
```

`abi-codegen-drift` — the gate #811 shipped — **is still red on
`main`**. This
PR carries the remainder.

## What was actually wrong

Running (not merely building) an Idris2 executable needs two support
artefacts,
and neither was present under `$(idris2 --libdir)` on the runner:

| artefact | when it is needed | symptom |
|---|---|---|
| `<libdir>/support/chez/support.ss` | compile | `INTERNAL ERROR: Can't
find data file chez/support.ss` |
| `<libdir>/lib/libidris2_support.so` | run | `(while loading
libidris2_support.so) cannot open shared object file` |

#817 cured the first by copying `support/` in as data. That is not
sufficient —
`libidris2_support.so` is a **built C library**, not data, and the Chez
backend
*copies it into the executable's `_app` directory at link time*. Fixing
an
incomplete installation file-by-file reveals one layer per CI round
trip, which
is exactly how the second failure happened. So this uses the tree's own
targets, which are complete by construction:

```sh
make -C "$src" support
make -C "$src" install-support PREFIX="$(idris2 --prefix)"
```

It builds `support/` only, never the compiler — seconds, not a
bootstrap.

### ⚠ It corrects the cause #817 recorded

#817 says library builds do not need the support tree, so the shared
cache
never had it. **That is false**, and the evidence was already in the
repo.
Idris2's top-level Makefile:

```
install: install-idris2 install-support install-libs
```

so `verify-proofs.yml`'s `sudo make install PREFIX=/usr/local` **does**
install
support — under `/usr/local/idris2-0.7.0/`. The binary resolves
`idris2 --libdir` to `/home/runner/.idris2/idris2-0.7.0`, and that job's
cache
`path:` list names *both* prefixes. It is a **prefix mismatch**. Library
work
(`--check`, `--build` on the two proof packages) never needs the
difference,
which is why only a job linking an executable ever noticed.

The fix is correct either way because it anchors on `$(idris2 --libdir)`
/
`$(idris2 --prefix)` rather than on a hard-coded prefix — but the
comment in
the workflow now says what was measured instead of the tidier story.

## Two further changes

**Assert on the consumer's artefact.** #817 asserted the *installer's*
output
and the job still died at run time. This asserts
`build/abi-gen/exec/hypatia-abi-gen_app/libidris2_support.so` — the
thing that
actually has to load it — because a build missing that copy still exits
0, and
the failure then surfaces one step later inside the comparison, where it
reads
as a drift failure rather than a toolchain fault. Plus a `--help` smoke
test:
the cheapest proof the binary runs, and it writes nothing, so it cannot
mask a
drift failure by leaving output behind.

**`Gen.idr`: `--help` exits 0.** It exited 1, so under `set -e` the
smoke test
would have failed and tempted an `|| true` — the exact pattern the
`Hypatia`
scanner flags and which is indistinguishable from a masked failure.
Missing
arguments are still a usage error and still exit 1.

## Verification done locally before pushing

- `--help` / `-h` → rc=0; no-args and one-arg → rc=1.
- Regeneration prints `connectors emitted: 16` / `files written: 3 of 3`
with
  **zero diff** against all three tracked targets.
- Mutants, against the gate's own comparison logic:

| case | compared | drifted | verdict |
|---|---|---|---|
| positive control (clean tree) | 3 of 3 | 0 | **green** |
| hand-edit generated Zig (`arrow_flight`→`arrowflight`) | 3 of 3 | 1 |
**red** |
| swap wire ids 3↔4 in the live `Types.idr`, no regen | 3 of 3 | 3 |
**red** |
| empty output dir | 0 of 3 | 3 | **red on the denominator** |

The third is the decisive one: it proves the gate reads the **normative
source**, not merely that the generated copies agree with each other.

## Note on caching

The repair is deliberately **not persisted** — `Post Cache` is skipped
on a
cache hit, so this job never mutates the shared entry and redoes the
clone+build
each run. That is the intended property and should not be "optimised"
away;
two workflows writing one cache key is how the poisoned `-1` cache
happened.

## Not blockers (pre-existing on `main`, per the standing ruling)

`governance / Actions lockfile verify` (#818, from #810) · `Check` /
`Test` /
`Clippy` / `Cargo check + clippy + fmt` (#814) · `governance /
{Code quality + docs, Validate Hypatia Baseline, Workflow security
linter}` ·
`CodeQL Security Analysis` startup failure. None are touched by this
diff.

Refs #120, #811, #817

🤖 Generated with [Claude Code](https://claude.com/claude-code)

https://claude.ai/code/session_0113HQM9LVGkNCzU1WwkJZSV

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
hyperpolymath added a commit that referenced this pull request Sep 22, 2026
…#824)

Closes #822.

Deletes the orphaned first `with:` block from six workflow steps. **12
deletions, 0 insertions**, two lines per file.

## Measured, not assumed — it is six files, not one

#822's body reports the symptom at **one** site
(`build-gossamer-gui.yml` line 143). The gate reports **six**, and
prints its own denominator:

```
6 of 32 workflow file(s) contain duplicate keys.
```

| Workflow | Line |
|---|---|
| `build-gossamer-gui.yml` | 143 |
| `ci.yml` | 43 |
| `quality.yml` | 118 |
| `release.yml` | 129 |
| `security-policy.yml` | 41 |
| `tests.yml` | 81 |

All six are the identical mechanical shape Dependabot's #810 produced —
the ref rewritten, a second `with:` **added** rather than the existing
one edited, leaving `toolchain: master` orphaned above `toolchain:
stable`. So #822's acceptance criterion 5 ("sweep the other six
workflows Dependabot touched, since the cause is mechanical and would
repeat") is discharged by fixing **all six here**, not by a separate
sweep.

## The mutant is already dead

Ran the gate's **own** script —
`scripts/check-workflow-duplicate-keys.sh` from
`hyperpolymath/standards` — against both trees locally:

| Tree | Result |
|---|---|
| `origin/main` @ `7e1f9fd` | `rc=1` — *"6 of 32 workflow file(s)
contain duplicate keys."* |
| this branch | `rc=0` — *"duplicate-key check: 32 workflow file(s)
clean"* |

Same script, same invocation, red and green, **denominator printed in
both directions**. Reverting this commit reproduces the red — which is
exactly what criterion 4 asks for, so no throwaway mutant PR is needed.

⚠ **Why no ordinary linter caught this.** The script's own header states
that conventional YAML parsers silently keep the *last* duplicate and
report success. Confirmed directly: **`yq` accepted all 32 files,
including the six defective ones.** A yq-based check here would have
been a vacuous gate.

## Criterion 2 is deliberately not implemented

#822 also asks that `dtolnay/rust-toolchain` be pinned to a commit SHA.
Not done, on purpose:

- `dtolnay/rust-toolchain@v1` appears at **22 sites across 8
workflows**. Converting the single site in `build-gossamer-gui.yml`
would leave it inconsistent with 21 identical siblings and create the
*appearance* of compliance without the substance.
- hypatia's convention is symbolic refs — measured **40 tag/ref to 8
SHA** across the workflow tree.
- `.github/workflows/actions.lock` **already records the resolved
commit** for `'dtolnay/rust-toolchain@v1'`
(`sha1-02cb101ec7c40f2c49e1d9714d64511d8e1b74de`), and that lockfile
gate is green as of #823. The tag is pinned *by the lock*; a literal SHA
at one call site would desynchronise it from the lock's key.

Raised as its own issue covering all 22 sites instead, per the standing
rule that a new finding is an issue rather than a merge blocker.

## This PR is also the control for #818

**No `uses:` line is changed and `actions.lock` is not modified** —
verified: zero `uses:` lines appear in the diff. That is deliberate.
#818's last acceptance criterion requires `governance / Actions lockfile
verify` to be **still green on a subsequent unrelated PR**, proving the
fix landed on `main` rather than being an artefact of #823's own merge
commit. This PR is that control, and the result will be recorded on
#818.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

https://claude.ai/code/session_0113HQM9LVGkNCzU1WwkJZSV

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file github_actions Pull requests that update GitHub Actions code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants