Skip to content

chore(security): cooldown, deterministic installs, harden labeler workflow#262

Open
Copilot wants to merge 4 commits into
mainfrom
copilot/sca-audit
Open

chore(security): cooldown, deterministic installs, harden labeler workflow#262
Copilot wants to merge 4 commits into
mainfrom
copilot/sca-audit

Conversation

Copy link
Copy Markdown

Copilot AI commented May 20, 2026

Addresses SCA audit findings: adds Dependabot cooldown, pins all dependency installs to hashes, and removes an unnecessary checkout from the labeler workflow.

Dependabot (dependabot.yml)

  • Added cooldown: default-days: 3 to all ecosystem entries
  • github-actions: replaced production/development groups with single actions: patterns: ["*"]
  • cargo: existing groups left intact, cooldown only

Deterministic npm (build.yml + new package.json, package-lock.json)

  • markdownlint-cli moved from ad-hoc global install to pinned devDependency
  • npm install -g markdownlint-clinpm ci && npx markdownlint

Hash-pinned Python (requirements.in, requirements.txt)

  • New requirements.in declares direct deps (ghastoolkit, yq)
  • requirements.txt generated via uv pip compile --generate-hashes — all 13 transitive deps hash-locked
  • All four workflows (coverage, publish, release, version) updated:
    - pip install ghastoolkit   # or pip install yq
    + pip install -r requirements.txt --require-hashes

Labeler hardening (labeler.yml)

  • Removed actions/checkout step — actions/labeler@v6 doesn't need it, and its presence unnecessarily expands the attack surface on a pull_request_target trigger

Copilot AI and others added 4 commits May 20, 2026 20:04
…kflow

- dependabot.yml: add cooldown (default-days: 3) to all entries; replace
  github-actions groups with single actions:patterns:['*'] group
- build.yml: replace npm install -g markdownlint-cli with npm ci + npx markdownlint;
  add root package.json + package-lock.json
- requirements.txt: hash-pinned (uv pip compile --generate-hashes) for
  ghastoolkit + yq
- coverage.yml, publish.yml, release.yml, version.yml: pip install -r
  requirements.txt --require-hashes
- labeler.yml: remove actions/checkout step (actions/labeler@v6 does not need it)

Co-authored-by: felickz <1760475+felickz@users.noreply.github.com>
Co-authored-by: felickz <1760475+felickz@users.noreply.github.com>
Co-authored-by: felickz <1760475+felickz@users.noreply.github.com>
Co-authored-by: felickz <1760475+felickz@users.noreply.github.com>
Copilot AI self-assigned this May 20, 2026
Copilot AI review requested due to automatic review settings May 20, 2026 21:13
Copilot AI review requested due to automatic review settings May 20, 2026 21:13
Comment thread package-lock.json
Comment thread requirements.txt
@felickz felickz marked this pull request as ready for review May 20, 2026 22:51
Copilot AI review requested due to automatic review settings May 20, 2026 22:51
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR hardens the repository’s supply-chain posture by making dependency installs more deterministic across CI workflows and reducing exposure in the pull_request_target labeler workflow.

Changes:

  • Added hash-locked Python dependencies (requirements.in → generated requirements.txt) and updated workflows to install with --require-hashes.
  • Introduced deterministic Markdown linting in CI via npm ci + npx markdownlint with a committed lockfile.
  • Updated Dependabot configuration with a cooldown and simplified grouping for GitHub Actions; removed an unnecessary checkout step from the labeler workflow.
Show a summary per file
File Description
requirements.in Declares direct Python dependencies to compile from.
requirements.txt Adds a hash-pinned, fully resolved Python dependency set for reproducible installs.
package.json Adds Node devDependency for markdownlint-cli used in CI.
package-lock.json Locks Node dependency tree and integrity hashes for deterministic npm ci.
.gitignore Ignores node_modules/ after introducing Node tooling.
.github/workflows/build.yml Switches Markdown lint step to npm ci + npx markdownlint.
.github/workflows/coverage.yml Uses hash-locked Python requirements for CI scripting.
.github/workflows/publish.yml Uses hash-locked Python requirements for release checks.
.github/workflows/release.yml Uses hash-locked Python requirements for version extraction.
.github/workflows/version.yml Uses hash-locked Python requirements for version bump tooling.
.github/workflows/labeler.yml Removes checkout step from pull_request_target labeler job.
.github/dependabot.yml Adds cooldown and updates grouping strategy for GitHub Actions.

Copilot's findings

Tip

Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

  • Files reviewed: 9/12 changed files
  • Comments generated: 3

Comment thread package.json
Comment on lines +5 to +10
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
Comment thread package.json
"version": "1.0.0",
"description": "markdownlint tooling for CI",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
Comment thread package.json
"author": "",
"license": "ISC",
"devDependencies": {
"markdownlint-cli": "^0.48.0"
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.

3 participants