Skip to content

ci: re-pin standards callers to a85aa8e and relock (fixes "invalid lockfile pin") - #159

Merged
hyperpolymath merged 3 commits into
mainfrom
claude/vibrant-cori-lirqrr
Oct 20, 2026
Merged

hyperpolymath merged 3 commits into
mainfrom
claude/vibrant-cori-lirqrr

Conversation

@hyperpolymath

@hyperpolymath hyperpolymath commented Oct 19, 2026 •

Copy link
Copy Markdown
Owner

Summary

Fixes the invalid lockfile pin failure that kills every standards-reusable caller in "Set up job". It has failed on main since 2026-10-15/16, with no code change in this repository: commit 69de917 was green on 10-14 and red on 10-19.

Root cause (evidence-backed)

GitHub resolves a called reusable workflow's actions against the callee's actions.lock at the called SHA. It now rejects an action record whose ref: is the record's own commit SHA.

  • At standards 7d2041a, this repository's old pin, the lock records actions/checkout@3d3c42e… with ref: '3d3c42e…'.
  • standards repaired its own lock in #1271 (2026-10-16) and #1285.
  • standards/scripts/lock-selfcheck.sh reports 7d2041a POISON (73 self-SHA refs). It reports 75bd599 and a85aa8e SELF-CONSISTENT.
  • hyperpolymath/cicd-squabbler hit the identical error from 2026-10-16. Re-pinned to 75bd599, its callers run green.

The obvious alternative fix, a plain gh actions-lock v0.2.0 relock, would not work here:

What changes

  • The 7 standards callers move from 7d2041a to a85aa8e.
    • The first push used 75bd599. Every reusable job started, but governance / JS runtimes — environment provisions Bun first hit a cargo workspace clash: the standards checkout sits inside this repository's Cargo workspace.
    • standards fixed that in #1296, and a85aa8e is the first commit with the fix.
  • Pins and lock come from the estate generator, standards/scripts/propagate-workflow-pins.sh --fix, which runs relock-standards-pin.sh. The lock was not edited by hand.
  • relock-standards-pin.sh had a case-folding bug that produced a lock GitHub's parser rejects. I fixed it at the source in fix(lock): relock-standards-pin matches records case-insensitively on owner/repo standards#1314, and this lock was generated with the fixed script.
  • The reusables' workflow_call interfaces and permissions match. The only difference is one new optional hypatia-scan output, which this caller does not read.

Verification

  • CI on 40fc864: every check is green except Squabble (below), including Rust CI, CodeQL, Hypatia, the secret scanner and all governance jobs.
  • Locally: github/actions-lockfile v0.0.6 Parse is OK, and standards check-lock-sync.sh reports the lock in sync.

Not fixed here

CI dependency chains (Squabble) is still red. The lock record hyperpolymath/cicd-squabbler@b34cd53 has a self-SHA ref:, and that commit has no release tag. The plan:

  1. Merge ci: re-pin every standards caller to 75bd599 and rebuild the lock closure cicd-squabbler#135, whose own lock currently breaks its release.yml.
  2. Cut a properly versioned cicd-squabbler release.
  3. Re-pin squabble.yml to it.

Squabble is not a required check.

🤖 Generated with Claude Code

https://claude.ai/code/session_013CuBToxr5h9catptGiTsFX

…ile pin)

Since 2026-10-15/16, every job in a januskey workflow that calls a standards
reusable has died in "Set up job" with no code change on this side:

    Unable to resolve action `actions/checkout@3d3c42e5…`: invalid
    lockfile pin. Run `gh actions-lock` to update the lockfile

The same commit, 69de917, was green on 2026-10-14 and red on 2026-10-19.

Cause: GitHub resolves a called reusable workflow's actions against the
CALLEE repository's actions.lock at the called SHA. It now rejects an
action record whose `ref:` is the record's own commit SHA. standards at
7d2041a (the old pin) recorded actions/checkout@3d3c42e5… with
`ref: '3d3c42e5…'`. standards #1271 (2026-10-16) and #1285 repaired its own
lock. Evidence:
- standards/scripts/lock-selfcheck.sh reports 7d2041a POISON (73
  self-SHA refs, checkout@3d3c42e5 among them) and 75bd599
  SELF-CONSISTENT.
- cicd-squabbler hit the same error on the same day. Re-pinned to 75bd599,
  its Rust CI, Governance, Hypatia, Secret Scanner and Scorecard callers run
  green.

Generated with the estate tooling, not edited by hand:
  standards/scripts/propagate-workflow-pins.sh --fix --to 75bd599
which runs relock-standards-pin.sh. That rebuilds the
hyperpolymath/standards@75bd599 record from what the seven reusables use
at 75bd599, and refreshes leaf refs from standards' own lock: cache,
upload-artifact, rust-toolchain, editorconfig-checker, codeql-action and
setup-zig get tag refs. relock-standards-pin.sh had a case-folding bug
that wrote a second swatinem/rust-cache record. GitHub's lockfile parser
rejects that duplicate ("duplicate action key ... after canonicalization").
This lock was generated with that bug fixed (standards PR on the same
branch name).

The reusables' workflow_call interfaces and permissions match between
7d2041a and 75bd599. The only change is an optional HYPATIA_SCAN_PAT
secret on hypatia-scan; this caller passes `secrets: inherit`.

Checks run locally:
- github/actions-lockfile v0.0.6 Parse: OK. Before: OK. After the buggy
  relock: duplicate-key error.
- standards check-lock-sync.sh: in sync.
- standards .githooks/validate-actions-lock.sh: one remaining finding, the
  self-SHA ref on hyperpolymath/cicd-squabbler@b34cd53. Not fixed here; see
  the PR.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013CuBToxr5h9catptGiTsFX
@coderabbitai

coderabbitai Bot commented Oct 19, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

Important

Review skipped

Review was skipped as selected files did not have any reviewable changes.

⛔ Files ignored due to path filters: 1
  • .github/workflows/actions.lock is excluded by !**/*.lock
⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: ASSERTIVE
  • Plan: Advanced
  • Run ID: 108fdefc-9277-4a30-8e43-2a6264219751
📥 Commits

Reviewing files that changed from the base of the PR and between 40fc864 and 81104f4.

⛔ Files ignored due to path filters: 1
  • .github/workflows/actions.lock is excluded by !**/*.lock

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

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: ASSERTIVE
  • Plan: Advanced
  • Run ID: eae19a5d-e252-4dce-a821-2d8795333e2a
📥 Commits

Reviewing files that changed from the base of the PR and between 69de917 and 40fc864.

⛔ Files ignored due to path filters: 1
  • .github/workflows/actions.lock is excluded by !**/*.lock
📒 Files selected for processing: 7
  • .github/workflows/codeql.yml
  • .github/workflows/governance.yml
  • .github/workflows/hypatia-scan.yml
  • .github/workflows/mirror.yml
  • .github/workflows/rust-ci.yml
  • .github/workflows/scorecard.yml
  • .github/workflows/secret-scanner.yml

Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.

📜 Recent review details
⏰ Context from checks skipped due to timeout: 2
  • GitHub Check: rust-ci / Cargo audit (security)
  • GitHub Check: codeql-rust / analyze
⚠️ CI failures not shown inline: 2

GitHub Actions: Squabble / 0_CI dependency chains.txt: ci: re-pin standards callers to 75bd599 and relock (fixes "invalid lockfile pin")

Conclusion: failure

View job details

##[group]GITHUB_TOKEN Permissions
 Attestations: read
 Contents: read
 Metadata: read
 ##[endgroup]
 Secret source: Actions
 Cache mode: write
 Using locked action versions from the workflow's lockfile
 Prepare workflow directory
 Prepare all required actions
 Getting action download info
 ##[error]lockfile verification did not produce a result for this action. Unable to resolve action `hyperpolymath/cicd-squabbler/.github/actions/squabble@b34cd53f9157d1b8a4f9c5c8d843846557f8622c`: invalid lockfile pin. Run `gh actions-lock` to update the lockfile

GitHub Actions: Squabble / CI dependency chains: ci: re-pin standards callers to 75bd599 and relock (fixes "invalid lockfile pin")

Conclusion: failure

View job details

##[group]GITHUB_TOKEN Permissions
 Attestations: read
 Contents: read
 Metadata: read
 ##[endgroup]
 Secret source: Actions
 Cache mode: write
 Using locked action versions from the workflow's lockfile
 Prepare workflow directory
 Prepare all required actions
 Getting action download info
 ##[error]lockfile verification did not produce a result for this action. Unable to resolve action `hyperpolymath/cicd-squabbler/.github/actions/squabble@b34cd53f9157d1b8a4f9c5c8d843846557f8622c`: invalid lockfile pin. Run `gh actions-lock` to update the lockfile
🧰 Additional context used
🪛 zizmor (1.30.1)
.github/workflows/mirror.yml

[warning] 17-17: secrets unconditionally inherited by called workflow (secrets-inherit): this reusable workflow

(secrets-inherit)

.github/workflows/hypatia-scan.yml

[warning] 31-31: secrets unconditionally inherited by called workflow (secrets-inherit): this reusable workflow

(secrets-inherit)

.github/workflows/scorecard.yml

[warning] 20-20: secrets unconditionally inherited by called workflow (secrets-inherit): this reusable workflow

(secrets-inherit)

🔇 Additional comments: 7
.github/workflows/codeql.yml: 1

35-35: LGTM!

Also applies to: 39-39

.github/workflows/governance.yml: 1

37-37: LGTM!

.github/workflows/hypatia-scan.yml: 1

31-31: LGTM!

.github/workflows/mirror.yml: 1

17-17: LGTM!

.github/workflows/rust-ci.yml: 1

24-24: LGTM!

.github/workflows/scorecard.yml: 1

20-20: LGTM!

.github/workflows/secret-scanner.yml: 1

25-25: LGTM!

📝 Summary

Summary by CodeRabbit

  • Chores
    • Updated the project’s automated security, governance, mirroring and build checks to use the latest shared workflow revisions.
    • Refreshed the automated secret-scanning workflow metadata.
    • No changes were made to supported features, public interfaces or user-facing functionality.

Seven GitHub Actions workflows now reference reusable workflows at commit a85aa8e70326cceedae169013a47daee554918b7 instead of the previous pinned commit.

Changes: Reusable workflow pins

Layer / File(s) Summary
Update reusable workflow pins
.github/workflows/*.yml
The reusable workflow references use the updated pinned commit. The CodeQL job languages and wiring remain unchanged.

Priority: ⬇️ Low

Estimated code review effort: 1 (Trivial) | ~4 minutes

Change: Bug fix

Merge Risk: ⚪ Minimal · up to 40fc8

The workflow pin updates are synchronized and present no verified merge-blocking risk.

Architecture risk: 🔵 Low · up to 40fc8

The changed surface does not map to a changed system, dependency edge, entrypoint, or external dependency.

Changed systems: None identified.

Architecture concerns
No architecture-level concerns identified.

Review details

Before / after behavior

  • observed — Modified behavior in .github/workflows/codeql.yml: Updated the reusable CodeQL workflow reference for both the actions and rust jobs to commit a85aa8e70326cceedae169013a47daee554918b7; job languages and wiring remain unchanged.
  • observed — Modified behavior in .github/workflows/governance.yml: The governance job’s reusable workflow reference was updated from the previous pinned revision to a85aa8e70326cceedae169013a47daee554918b7.
  • observed — Modified behavior in .github/workflows/hypatia-scan.yml: The hypatia job’s reusable workflow reference was updated to a newer pinned commit.
  • observed — Modified behavior in .github/workflows/mirror.yml: Updated the mirror job’s reusable workflow reference to the newer standards revision.
Pre-merge checks: Passed 5
Check name Status Explanation
Docstring Coverage Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Title check Passed The title clearly identifies the main change: re-pinning standards reusable-workflow callers to commit a85aa8e and correcting the lockfile pin issue.
Description check Passed The description directly explains the invalid lockfile pin failure, the updated reusable-workflow pins, the lock regeneration, verification results, and the remaining Squabble issue.
Full details: Docstring Coverage

Explanation

No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0 files. (7 skipped: 7 unsupported.)

✨ Finishing Touches
🛠️ Fix failing CI checks
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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.

On 75bd599, every standards-reusable job on this PR now starts. The
lockfile fix works. One governance job failed in its own body: "JS
runtimes — environment provisions Bun first" (job 118367034408).

    error: current package believes it's in a workspace when it's not:
    current:   .standards-js/tools/js-runtimes/Cargo.toml
    workspace: Cargo.toml

That job checks standards out into .standards-js/ inside this Cargo
workspace. It is new to januskey with the move off 7d2041a. standards
fixed it in #1296/#1299 by giving tools/js-runtimes its own [workspace]
table. a85aa8e is the first commit carrying that fix.

Regenerated as before with standards/scripts/propagate-workflow-pins.sh
--fix --to a85aa8e. That runs the relock-standards-pin.sh with the
standards#1314 fix.
- lock-selfcheck.sh: a85aa8e is SELF-CONSISTENT.
- The reusables' workflow_call interfaces and permissions match 75bd599,
  except one new hypatia-scan output that this caller does not read.
- The lock parses with actions-lockfile v0.0.6.
- check-lock-sync.sh: in sync.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013CuBToxr5h9catptGiTsFX

Copy link
Copy Markdown
Owner Author

CI status on f8ca8a9, the first push:

  • Every standards-reusable job now gets past "Set up job". Rust CI, CodeQL, Hypatia, the secret scanner and all governance jobs but one went green.
  • That one, governance / JS runtimes — environment provisions Bun first, was a cargo workspace clash inside the standards checkout. standards fixed it in #1296. 40fc864 moves the pin to a85aa8e, the first commit with that fix.

CI dependency chains (Squabble) is still red, and this PR does not fix it. januskey's lock record hyperpolymath/cicd-squabbler@b34cd53 has the commit SHA as its ref:, which GitHub now rejects. That commit has no release tag. The plan:

  1. Merge ci: re-pin every standards caller to 75bd599 and rebuild the lock closure cicd-squabbler#135, whose own lock currently breaks its release.yml.
  2. Cut a properly versioned cicd-squabbler release.
  3. Re-pin squabble.yml to it.

Squabble is not a required check.


Generated by Claude Code

@hyperpolymath
hyperpolymath marked this pull request as ready for review October 20, 2026 00:13
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 20, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-20T13:33:35.373435Z 81104f4 New commits
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@coderabbitai

coderabbitai Bot commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

✅ Coding Agent task started: View task and status

The task will inspect the CI failures, validate its fix, and commit the fix to this branch automatically.

Note: Fixing CI failures is a beta feature and may encounter errors. Expect some limitations and changes as we gather feedback and continue to improve it.

⏭️ Checks skipped: 1 · already failing on `main` (not caused by this PR)
  • GitHub Actions: Squabble / 0_CI dependency chains.txt

@coderabbitai

coderabbitai Bot commented Oct 20, 2026

Copy link
Copy Markdown
Contributor

Add Carrot credits or activate Agent usage billing to use Autofix

@hyperpolymath hyperpolymath changed the title ci: re-pin standards callers to 75bd599 and relock (fixes "invalid lockfile pin") ci: re-pin standards callers to a85aa8e and relock (fixes "invalid lockfile pin") Oct 20, 2026
@hyperpolymath
hyperpolymath merged commit 45ae207 into main Oct 20, 2026
43 of 46 checks passed
@hyperpolymath
hyperpolymath deleted the claude/vibrant-cori-lirqrr branch October 20, 2026 13:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants