Skip to content

ci: lock dependency-review workflow action graph - #2460

Open
groupthinking wants to merge 2 commits into
mainfrom
test/actions-lock-dependency-review
Open

groupthinking wants to merge 2 commits into
mainfrom
test/actions-lock-dependency-review

Conversation

@groupthinking

@groupthinking groupthinking commented Oct 22, 2026 •

Copy link
Copy Markdown
Owner

Decision: TEST — lock the dependency-review workflow

The dependency-review workflow previously referenced movable actions/checkout@v7 and actions/dependency-review-action@v5 tags and one SHA without a recorded repository identity. This PR onboards exactly that workflow into GitHub's public-preview action lockfile, preserving its jobs, permissions, triggers, advisory policy, license policy, and the separate gh-aw formats/exclusions. The dependency-input detector also recognizes Actions lockfile-only updates so they cannot skip review.

Final head: 5cd469aac4b1f7ad031d9afe54e4292dc18170f5. Base: main at verified security merge e93fd0e975cda0f3a59cb7fa812c19c64f6b2a52. PR #2456 is merged; GitHub automatically retargeted this pilot. The base tree is byte-identical to the previously tested security head 9a76e5d64bfa9d37e002dba12ac27eb8d4c5fa9b (08aca6db68446550ddd97987efb3f547e5603cf8). Final diff: .github/workflows/actions.lock; three uses: changes and an exact Actions lockfile input in .github/workflows/dependency-review.yml; executable detector regressions in tests/unit/test_dependency_review_workflow.py. The temporary pilot workflow was removed.

Official change and applicability

GitHub gh-actions-lock v0.3.0, published 2026-10-22, rejects fork-only/impostor pins and unanswered upstream checks that could previously pass. This is a supply-chain verification improvement; a lock does not prove upstream code is safe.

Exact locked graph

Action Ref Commit
actions/checkout v7.0.1 3d3c42e5aac5ba805825da76410c181273ba90b1
actions/dependency-review-action v5.0.0 a1d282b36b6f3519aa1f3fc636f609c47dddb294
advanced-security/component-detection-dependency-submission-action v0.1.6 b282c67b1008fde9b60da4bdfcd8849613e293b2

The last action retains its original commit. Lockfile v0.0.3 records owner/repository IDs and contains one workflow and three dependencies.

Executed recipe and verification

Prerequisites: clean isolated checkout, GitHub CLI, official v0.3.0 binary, and authenticated public-upstream read access. The local shell has no GitHub credential. The executed alternative used a standard Ubuntu job in this public repository, scoped to this same-repository branch, with only contents: read and the runner-issued token. No connector credential was exported. No paid runner, cache, artifact upload, AI API call, or billing change was added.

  1. Start from 560f07120dee5294da0af0f2aab8eec8b79de8b5; verify the checkout and keep this pilot separate from PR fix(security): guard AI SDKs and move to patched Pillow #2456.
  2. Download official v0.3.0 and check SHA-256 15810767a8cd28d389f0942e3ce515ac0008c3f65301c3834fd4c046d4bda497. Confirm actions-lock version v0.3.0.
  3. Execute against only the selected workflow:
    gh actions-lock --verify-local .github/workflows/dependency-review.yml
    # Baseline expected exit 1: three not-pinned.
    gh actions-lock --no-interactive .github/workflows/dependency-review.yml
    gh actions-lock --verify-local .github/workflows/dependency-review.yml
    gh actions-lock --verify .github/workflows/dependency-review.yml
    git diff --check
    The hosted run called the verified extension binary directly; these are its equivalent installed-extension commands.
  4. In the disposable checkout, substitute actions/checkout@v0.0.0-pilot-missing; local verification must exit 1. Restore the generated workflow and verify it passes again.
  5. Retrieve the generated files, compare SHA-256, and inspect the diff. Do not hand-edit actions.lock. Semantic comparison confirmed all non-uses workflow content unchanged.
  6. Publish the exact generated files and remove the temporary generator. Inspect current-head CI and reviews before any separately approved merge.

VERIFIED: hosted generation, local coverage, online verification, missing-reference rejection, restoration, scoped file assertion, exact transfer hashes, and semantic preservation.

Current-head results are recorded below. The CLI and native-runner evidence remain separate. Repository/organization action-allowlist access is not available; do not weaken it. Documentation still differs on Enterprise-only versus Free/Team preview availability; this pilot records observed repository behavior.

Rollback, effort and opportunity

Before merge: close this draft. After an explicitly approved merge: revert the final two-file change through review and verify the original workflow. Do not discard unrelated work.
ESTIMATE: 15–30 minutes maintainer review after gates pass; not measured savings.
Possible deliverable: a supervised CI provenance audit for small software teams. Revenue and saved time remain hypotheses; no offer was marketed and no checkout was created.

This pilot remains unmerged. The prerequisite security PR #2456 has now merged with Hayden's specific approval. Exact-PR/head approval for #2460 remains required. No production deployment command was issued by this continuation.

Closes #2448

Stacked-branch review receipt — 2026-10-22

The initial final pilot head 257b803, based on main, proved native hosted lockfile use: run39873500586/job120153351284 explicitly logged Using locked action versions from the workflow's lockfile and downloaded all three recorded SHAs. Its dependency gate subsequently failed on main's old certifi. That historical failure was not bypassed.

The canonical security continuation advanced PR #2456 to 9a76e5d64bfa9d37e002dba12ac27eb8d4c5fa9b, including patched certifi/Pillow, the Python 3.11–3.12 contract, and an unmerged repository-wide addition of MIT-CMU and Unlicense to the accepted license list. Dependency Review passes on that head. Its predecessor's Python lanes passed 2,946 tests each. Approval of this policy change and exact-head merge authority are still maintainer responsibilities; no merge is authorized by this receipt.

To avoid duplicating the fix, this pilot is now based on that exact existing security head. The lockfile bytes and all three action refs are unchanged from the official generated/online-verified graph. Only the selected workflow's three uses fields differ from the security base; its complete policy is inherited unchanged. The original workflow transfer hash above refers to the pre-rebase generated workflow.

Current head: be9402169b0bcffe2c415f91805f90dbbfcc1373. Fresh current-head verification is complete; exact run evidence follows. Keep this PR draft. Merge PR #2456 only after exact approval and applicable gates, then retarget this pilot to repaired main, refresh/check it, and obtain its own exact-head approval. Do not merge this pilot into the security branch merely because it is the temporary PR base.

Canonical receipt: Neon concept_tracker action149. No production deployment, merge, policy activation, or connector credential transfer.

Final verified pilot receipt

Head be9402169b0bcffe2c415f91805f90dbbfcc1373, base 9a76e5d64bfa9d37e002dba12ac27eb8d4c5fa9b.

  • CI 39874097905: every job passed, including Python 3.11/3.12, frontend tests, type checks, real Studio preflight and image build.
  • Dependency Review 39874097927: passed; job120155348866 explicitly used the lockfile and all three expected SHAs; no moderate-or-higher vulnerabilities reported in its reviewed dependency delta.
  • Coverage39874098005, Security39874097923, CodeQL39874098155, E2E39874097847 and Secret Scan39874097937 passed.
  • Local exact-head lock coverage, identical generated lock hash, semantic comparison with the security base, two-file scope, clean checkout and absence of the temporary generator all passed.
  • Combined external statuses returned success. No review approval is inferred from statuses.

VERIFIED implementation and scoped validation; draft/open/unmerged. No remaining implementation failure in this pilot. Prerequisite: exact approval and merge of PR #2456 (including its repository-wide license additions), then retarget #2460 to main, re-fetch/recheck the resulting head and obtain its separate approval. This receipt does not authorize either merge or production deployment.

Canonical receipt action149 retains source evidence, generated bytes/hashes, initial failures and recovery, exact mutations, review evidence, rejected Watch candidates and next action.

Continuation checkpoint — 2026-10-22 America/Chicago

  • Security prerequisite verified merged: e93fd0e975cda0f3a59cb7fa812c19c64f6b2a52, exact approved parent 9a76e5d64bfa9d37e002dba12ac27eb8d4c5fa9b; merged/base source trees match exactly.
  • Pilot base fetched as main; head and generated lock unchanged, two changed files. Existing generation and native-runner evidence remains attached to the same head/files, rather than being relabeled as a new test.
  • Continuation validation executed: gh-actions-lock --verify-local .github/workflows/dependency-review.yml, uv lock --check --offline, git diff --check 9a76e5d64bfa9d37e002dba12ac27eb8d4c5fa9b HEAD, and sha256sum .github/workflows/actions.lock; command output confirms full selected-workflow coverage, 346 resolved packages, and original lock hash.
  • Earlier stacked/unmerged-base narrative below is historical and superseded by this checkpoint. PR ci: lock dependency-review workflow action graph #2460 has no merge authorization yet. The overall two-PR delivery is NOT COMPLETE while that required approval/merge remains pending.

Review repair — current head 5cd469aac4b1f7ad031d9afe54e4292dc18170f5

Copilot discussion4354819144 identified a future lockfile-only bypass in the previous head. The previous green evidence covered the submitted YAML-changing diff, not future lock-only updates; any broad completion interpretation was too strong.

Added .github/workflows/actions.lock to the exact-path detector and a real Git-diff regression. Before fix: 1 failed, 3 passed (changed=false/count=0 for the lockfile). After fix: 4 passed on Python 3.11 and Python 3.12; unrelated docs/actions.lock and the distinct gh-aw lock JSON remain excluded. Ruff, Black, git diff --check, and official gh-actions-lock --verify-local passed. The tested/published tree is f458c3d86d16eaf7410781abd5c2ba29eeb13872.

The generated actions.lock bytes and graph are unchanged. Final scope is three files, with no license/advisory/permission change beyond the already merged security base. Fresh CI/review for 5cd469a is VERIFIED: all current-head required/relevant checks pass, the reported finding is fixed and resolved, and no unresolved threads remain. Older results are historical. No merge approval exists for this pilot.

Final current-head receipt — approval remains outstanding

Complete verified receipt. Current head 5cd469aac4b1f7ad031d9afe54e4292dc18170f5, base main e93fd0e975cda0f3a59cb7fa812c19c64f6b2a52, three-file diff, ready for review, mergeability clean. CI39876354795 PASS; both Python lanes 2,949 passed plus38 MCP tests. Dependency Review39876354816 PASS with native locked-action SHAs verified in raw logs. Coverage, Security, CodeQL, E2E, Secret Scan and metadata gates PASS; zero unresolved threads. Original generator online proof remains valid for the byte-identical lock graph; the new detector regression was separately executed and verified.

Shortest repeat check in a clean checkout of this exact head, with Python3.11 or3.12 plus declared test dependencies and the verified official v0.3.0 CLI:

python -m pytest -q -o addopts= tests/unit/test_dependency_review_workflow.py
gh actions-lock --verify-local .github/workflows/dependency-review.yml
uv lock --check --offline
git diff --check 9a76e5d64bfa9d37e002dba12ac27eb8d4c5fa9b HEAD

Expected:4 targeted tests pass; one workflow has complete lock coverage; lock and diff checks exit0. These checks were executed using the existing project Python3.11/3.12 environments and the official extension binary. Online generation/verification and negative-ref tests are the separately linked hosted run above. Revert through review after any future approved merge; do not hand-edit the lockfile.

NOT COMPLETE overall: the remaining required transition is an explicitly approved merge of this exact PR/head, followed by merge-artifact and post-merge checks. No production acceptance, live provider cost/latency, or savings claim is made.

@vercel

vercel Bot commented Oct 22, 2026 •

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
v0-uvai Ready Ready Preview, v0 Oct 23, 2026 12:09am UTC

@coderabbitai

coderabbitai Bot commented Oct 22, 2026 •

Copy link
Copy Markdown
Contributor

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration
  • 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.

@github-actions github-actions Bot added the ci/cd label Oct 22, 2026
@groupthinking groupthinking changed the title test(ci): pilot dependency-review workflow locking ci: lock dependency-review workflow action graph Oct 22, 2026
@github-actions

github-actions Bot commented Oct 22, 2026 •

Copy link
Copy Markdown
Contributor

Dependency Review

✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.

OpenSSF Scorecard

PackageVersionScoreDetails
actions/actions/checkout 7.0.1 🟢 5.9
Details
CheckScoreReason
Maintained⚠️ 00 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0
Code-Review🟢 10all changesets reviewed
Binary-Artifacts🟢 10no binaries found in the repo
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Token-Permissions⚠️ 0detected GitHub workflow tokens with excessive permissions
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Pinned-Dependencies🟢 3dependency not pinned by hash detected -- score normalized to 3
Fuzzing⚠️ 0project is not fuzzed
License🟢 10license file detected
Packaging⚠️ -1packaging workflow not detected
Signed-Releases⚠️ -1no releases found
Security-Policy🟢 9security policy file detected
Branch-Protection🟢 6branch protection is not maximal on development and all release branches
SAST🟢 10SAST tool is run on all commits
actions/actions/dependency-review-action 5.0.0 🟢 7.7
Details
CheckScoreReason
Maintained🟢 1030 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
Code-Review🟢 10all changesets reviewed
Security-Policy🟢 9security policy file detected
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Packaging⚠️ -1packaging workflow not detected
Binary-Artifacts🟢 10no binaries found in the repo
Token-Permissions🟢 9detected GitHub workflow tokens with excessive permissions
Pinned-Dependencies⚠️ 1dependency not pinned by hash detected -- score normalized to 1
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Fuzzing⚠️ 0project is not fuzzed
License🟢 10license file detected
Signed-Releases⚠️ -1no releases found
Branch-Protection🟢 6branch protection is not maximal on development and all release branches
SAST🟢 9SAST tool detected but not run on all commits
actions/advanced-security/component-detection-dependency-submission-action 0.1.6 🟢 6.3
Details
CheckScoreReason
Code-Review⚠️ 0Found 0/3 approved changesets -- score normalized to 0
Packaging⚠️ -1packaging workflow not detected
Maintained🟢 1030 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
Security-Policy🟢 10security policy file detected
Binary-Artifacts🟢 10no binaries found in the repo
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Token-Permissions⚠️ 0detected GitHub workflow tokens with excessive permissions
Pinned-Dependencies🟢 7dependency not pinned by hash detected -- score normalized to 7
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Fuzzing⚠️ 0project is not fuzzed
License🟢 10license file detected
Signed-Releases⚠️ -1no releases found
Branch-Protection⚠️ -1internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md
SAST🟢 10SAST tool is run on all commits
pip/google-genai 2.33.0 UnknownUnknown
pip/websockets 17.3 UnknownUnknown
pip/google-genai 2.33.0 UnknownUnknown

Scanned Files

  • .github/workflows/dependency-review.yml
  • docs/guides/requirements.txt
  • requirements.txt

@groupthinking
groupthinking changed the base branch from main to fix/anthropic-sdk-v2-compat October 22, 2026 23:47
@groupthinking
groupthinking force-pushed the test/actions-lock-dependency-review branch from 257b803 to be94021 Compare October 22, 2026 23:47
Base automatically changed from fix/anthropic-sdk-v2-compat to main October 23, 2026 00:02
@groupthinking
groupthinking marked this pull request as ready for review October 23, 2026 00:03
Copilot AI balanced review requested due to automatic review settings October 23, 2026 00:03

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Lockfile-only updates are not recognized by dependency-change detection and would skip the dependency-review gate.

1 open issue
What changed in this PR

This PR pilots GitHub Actions dependency locking for EventRelay’s dependency-review workflow, adding recorded action commits and repository identities without changing its existing jobs or policies.

Changes:

  • Adds a generated lockfile covering one workflow and three actions.
  • Updates three action references to exact version tags backed by the lockfile.
  • Preserves the security fixes inherited from merged PR #2456 and leaves separate gh-aw lock formats unchanged.
File Description
.github/​workflows/​dependency-review.yml Uses exact action version tags matching the locked graph.
.github/​workflows/​actions.lock Records action commits and owner/repository identities.

Review effort: Balanced

Comment thread .github/workflows/actions.lock
Recognize the exact Actions lockfile path in the dependency-input detector.
Exercise the workflow detector against real single-file Git diffs, including
unrelated actions.lock names and the separate gh-aw lock format.

Refs #2448; addresses review discussion_r4354819144.

This branch was successfully deployed

1 active deployment
Preview — 5cd469aa Deployed Oct 23, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Test workflow dependency locking for the dependency-review workflow

2 participants