Skip to content

fix(ci): lock the standards-pipeline reusable ref and close the lock - #104

Merged
hyperpolymath merged 1 commit into
mainfrom
fix/lock-standards-pipeline-ref
Sep 22, 2026
Merged

hyperpolymath merged 1 commit into
mainfrom
fix/lock-standards-pipeline-ref

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

The gate earned its keep

The lock-sync gate added in #101 went red on main within five minutes of merging. It was right.

Commit b506eeda ("ci: standards ci-pipeline dry-run caller", 12:29Z) added .github/workflows/standards-pipeline.yml pinning hyperpolymath/standards@2eb9bb19… and did not add that ref to .github/workflows/actions.lock. #101 merged at 12:34Z and the gate caught it on the next push.

This is the job-level reusable-workflow class that gh actions-lock v0.1.6 will not backfill (upstream #129) — it wrote the workflows: entry for the new file as an empty list [].

Not yet fatal, but it would have been

standards-pipeline.yml triggers on pull_request and workflow_dispatch only — no push — so nothing has been startup-killed yet. The next pull request would have been the first. GitHub rejects such a run before any job is created: jobs=0, and the only diagnostic is "This run likely failed because of a workflow file issue."

Changes

file change
actions.lock record standards@2eb9bb19 under standards-pipeline.yml; add dependency records for it (4 nested refs) plus the 3 edges that closed over — haskell-actions/setup, standards@571cc734, oven-sh/setup-bun
scripts/check-lock-sync.sh fold case on the owner/repo segment only (the ref stays case-sensitive)
lock-sync-gate.yml remove the # This workflow is managed by gh actions-lock. stamp the tool prepends above line 1, which displaces the SPDX header and fails the estate head -1 check

Disclosure: one case normalisation

Swatinem/rust-cache@6323deb1… is rewritten to swatinem/rust-cache@6323deb1… in both the top-level dependency key and the nested reference, so the lock stays transitively closed. GitHub resolves owner/repo case-insensitively in actions.lock (measured on a same-commit control), and gh actions-lock --verify-local accepts the result. Flagging it because it is a line this PR did not otherwise need to touch.

Verification

  • gh actions-lock --verify-local — clean
  • scripts/check-lock-sync.sh — passes all three clauses (per-path coverage, no orphan records, transitive closure)
  • independent closure check by a second method (set membership, not the same parser) — clean
  • no uses: $/… local-action rewrite
  • SPDX still on line 1 of every workflow that had it (2 of 29, unchanged)
  • only the three files above differ from main

🤖 Generated with Claude Code

https://claude.ai/code/session_01X3hgXxWm6umMgZkjYyHnnm

The lock-sync gate added in #101 went red on `main` within five minutes of
merging. It was right: commit b506eed ("ci: standards ci-pipeline dry-run
caller"), which landed at 12:29Z, added .github/workflows/standards-pipeline.yml
pinning hyperpolymath/standards@2eb9bb19 and left that ref out of the lockfile.

This is the job-level reusable-workflow class that `gh actions-lock` v0.1.6
will not backfill (upstream #129): the workflows: entry for the new file was
written as an empty list.

standards-pipeline.yml triggers on pull_request only, so no run has been
startup-killed yet -- the next PR would have been the first.

Changes:
  - workflows: record the standards@2eb9bb19 ref under standards-pipeline.yml
  - dependencies: add records for standards@2eb9bb19 (4 nested refs) and the
    three edges that closed over: haskell-actions/setup, standards@571cc734,
    oven-sh/setup-bun. Verified transitively closed.
  - scripts/check-lock-sync.sh: fold case on the owner/repo segment only.
    GitHub resolves owner/repo case-insensitively in actions.lock (measured),
    so a case-sensitive comparison reported false desyncs.
  - lock-sync-gate.yml: drop the stamp `gh actions-lock` prepended above the
    SPDX line, which the estate `head -1` SPDX check would otherwise fail.

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

coderabbitai Bot commented Sep 22, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

Navigate logical layers of code changes, visualize relationships, and explore their blast radius.

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: 4621cc97-2fd6-499c-b8e7-9f0e33901c80

📥 Commits

Reviewing files that changed from the base of the PR and between d309505 and 3851175.

⛔ Files ignored due to path filters (1)
  • .github/workflows/actions.lock is excluded by !**/*.lock
📒 Files selected for processing (2)
  • .github/workflows/lock-sync-gate.yml
  • scripts/check-lock-sync.sh
💤 Files with no reviewable changes (1)
  • .github/workflows/lock-sync-gate.yml

Included review availability: 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. (38)
  • GitHub Check: lint-workflows
  • GitHub Check: governance / Trusted-base reduction policy
  • GitHub Check: governance / Licence consistency
  • GitHub Check: governance / Debt ratchet
  • GitHub Check: governance / Actions lockfile verify
  • GitHub Check: governance / Well-Known (RFC 9116 + RSR)
  • GitHub Check: governance / Exemption ratchet
  • GitHub Check: governance / Code quality + docs
  • GitHub Check: governance / Allowlist Preflight
  • GitHub Check: governance / Workflow security linter
  • GitHub Check: governance / Check Workflow Staleness
  • GitHub Check: governance / Language / package anti-pattern policy
  • GitHub Check: governance / Security policy checks
  • GitHub Check: governance / Live Actions policy (credentialed advisory)
  • GitHub Check: governance / Guix packaging policy (Nix retired)
  • GitHub Check: hypatia / Hypatia Neurosymbolic Analysis
  • GitHub Check: scan / gitleaks
  • GitHub Check: scan / rust-secrets
  • GitHub Check: scan / shell-secrets
  • GitHub Check: rust-ci / Detect Cargo.toml
  • GitHub Check: Hypatia neurosymbolic scan
  • GitHub Check: panic-attack assail
  • GitHub Check: Patch Bridge CVE triage
  • GitHub Check: Validate eclexiaiser manifest
  • GitHub Check: Empty-linter (invisible characters)
  • GitHub Check: Validate DEED manifests
  • GitHub Check: Groove manifest check
  • GitHub Check: docs
  • GitHub Check: openssf-compliance
  • GitHub Check: Validate K9 contracts
  • GitHub Check: actions.lock is in sync with the workflow YAML
  • GitHub Check: check
  • GitHub Check: lint
  • GitHub Check: Runtime Policy
  • GitHub Check: estate-rules
  • GitHub Check: check
  • GitHub Check: analyze (actions, none)
  • GitHub Check: lint-workflows
🔇 Additional comments (1)
scripts/check-lock-sync.sh (1)

73-74: LGTM!

Also applies to: 80-80, 92-104, 117-117, 122-122, 139-142, 159-159, 183-183, 198-198, 225-225


📝 Summary

Summary by CodeRabbit

  • Bug Fixes

    • Lock synchronisation checks now handle differences in action owner and repository capitalisation more reliably.
    • References and version identifiers remain matched with case sensitivity where appropriate.
    • Diagnostic messages preserve the original casing from the lockfile, making orphaned entries and dangling references easier to identify.
  • Chores

    • Improved workflow file discovery and consistency checks without changing the workflow’s execution behaviour.

Walkthrough

The lock-sync script now compares action owner and repository names without case sensitivity while preserving ref case and report display. Workflow discovery is deterministic. The gate workflow no longer contains the actions-lock management comment.

Changes

Lock-sync gate

Layer / File(s) Summary
Case-insensitive action matching and gate metadata
scripts/check-lock-sync.sh, .github/workflows/lock-sync-gate.yml
Workflow discovery is sorted and loaded with mapfile. Action owner and repository segments are folded for comparisons. Original casing is retained in orphaned-entry and dangling-edge reports. The workflow management comment is removed.

Priority: ⬇️ Low

Estimated code review effort: 2 (Simple) | ~15 minutes

Change: Bug fix

Merge Risk: ⚪ Minimal · up to 38511

The checker now normalizes action owner and repository casing while preserving ref sensitivity; no concrete production or merge-blocking risk remains identified.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly identifies the main change: locking the standards-pipeline reusable reference and closing the lock.
Description check ✅ Passed The description gives a detailed summary, lists the key changes, and records verification results. It does not use all template headings and omits the RSR Quality Checklist and Screenshots sections, b…
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 1…
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.
✨ Finishing Touches
📝 Generate docstrings

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

A rabbit checks each action name,
Case-folded paths now match the same,
Refs retain their chosen case,
Reports show the proper face,
The gate runs in tidy form.

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

@sonarqubecloud

Copy link
Copy Markdown

@coderabbitai

coderabbitai Bot commented Sep 22, 2026 •

Copy link
Copy Markdown
Contributor

⚠️ Coding task changes are ready, but delivery needs attention

Open the task to resolve the delivery issue or retry.

@hyperpolymath
hyperpolymath merged commit 246b673 into main Sep 22, 2026
48 of 51 checks passed
@hyperpolymath
hyperpolymath deleted the fix/lock-standards-pipeline-ref branch September 22, 2026 13:07
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.

1 participant