Repository navigation
ci: shared security scan, actionlint, house Renovate preset; upgrade simple-git 4 and vitest 4 - #94
Conversation
- security.yml: osv-scanner and full-history gitleaks via rishitank/.github security.yml@v1 (ecosystem node). Runs alongside the existing CodeQL and npm audit jobs in ci.yml, which stay as they are. - workflows-lint.yml: actionlint via the shared workflow. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012rYJxu978iUSGFZ1UuqTsi
config:base is deprecated (renamed config:recommended), and matchPackagePatterns is deprecated in favour of regex entries in matchPackageNames. Switch the base to github>rishitank/.github:node (which already includes config:recommended) and convert the patterns to /regex/ matchPackageNames. Both custom packageRules are kept. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012rYJxu978iUSGFZ1UuqTsi
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configuration
⛔ Files ignored due to path filters (1)
📒 Files selected for processing (2)
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🔇 Additional comments (3)
📝 SummarySummary by CodeRabbit
WalkthroughAdds security and workflow-lint GitHub Actions workflows. Updates package dependency versions and Renovate rules. ChangesWorkflow automation
Dependency updates
Priority: ➖ Normal Estimated code review effort: 2 (Simple) | ~10 minutes Change: Other Merge Risk: ⚪ Minimal · up to No actionable merge-blocking risk remains in the reviewed changes; the PR is mergeable after normal checks. 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
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. Apprentice, workflows awaken on schedule and change. Comment |
There was a problem hiding this comment.
🔇 Additional comments (3)
renovate.json (1)
3-3: LGTM!Also applies to: 7-13
.github/workflows/security.yml-22-22 (1)
22-22: 🔒 Security & Privacy | 🟠 Major | ⚡ Quick win
⚠️ Unverified finding
Verification ran but could not confirm this finding. It is shown for review, not as a verified issue.Apprentice, pin the reusable workflow to an immutable commit SHA.
The
@v1tag can move. A moved tag can make this security job execute changed workflow code without a reviewed change here. Replace@v1with a full commit SHA; otherwise the scan’s supply-chain boundary remains vulnerable to rebel scum. Based on learnings, CI/CD reusable workflows must use immutable commit SHAs rather than mutable tags. (raw.githubusercontent.com)Sources: Learnings, Linters/SAST tools
.github/workflows/workflows-lint.yml-18-18 (1)
18-18: 🔒 Security & Privacy | 🟡 Minor | ⚡ Quick win
⚠️ Unverified finding
Verification ran but could not confirm this finding. It is shown for review, not as a verified issue.Apprentice, pin the reusable workflow to a full commit SHA.
The
@v1tag is mutable. If it moves, later lint runs can execute different workflow code without a change in this repository. Replace@v1with the full SHA of the reviewed revision. As per the retrieved learning, third-party reusable workflows must use immutable commit references. The zizmor diagnostic also identifies this unpinned reference. Do not let this rebel scum change the lint run.Sources: Learnings, Linters/SAST tools
ℹ️ Review info
⚙️ Run configuration
- Configuration used: Organization UI
- Review profile: ASSERTIVE
- Plan: Advanced
- Run ID:
a9d9e73a-ab2e-4674-ad7a-c0a2e1b9c566
📒 Files selected for processing (3)
.github/workflows/security.yml.github/workflows/workflows-lint.ymlrenovate.json
Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.
📜 Review details
⏰ Context from checks skipped due to timeout. (8)
- GitHub Check: security / Vulnerable dependencies
- GitHub Check: security / Secrets
- GitHub Check: security / Ecosystem audit
- GitHub Check: CodeQL
- GitHub Check: Lint
- GitHub Check: Security Audit
- GitHub Check: Test
- GitHub Check: Type Check
⚠️ CI failures not shown inline (2)
GitHub Actions: security / 2_security _ Ecosystem audit.txt: ci: shared security scan, actionlint and house Renovate preset
Conclusion: failure
##[group]Run set -euo pipefail
�[36;1mset -euo pipefail�[0m
�[36;1mcase "${ECOSYSTEM}" in�[0m
�[36;1m node)�[0m
�[36;1m npm audit --audit-level="${AUDIT_LEVEL}"�[0m
�[36;1m ;;�[0m
�[36;1m python)�[0m
�[36;1m pip install pip-audit�[0m
�[36;1m if [ -f requirements.txt ]; then�[0m
�[36;1m pip-audit -r requirements.txt�[0m
�[36;1m else�[0m
�[36;1m pip install -e .�[0m
�[36;1m pip-audit�[0m
�[36;1m fi�[0m
�[36;1m ;;�[0m
�[36;1m rust)�[0m
�[36;1m cargo install cargo-audit --locked�[0m
�[36;1m cargo audit�[0m
�[36;1m ;;�[0m
�[36;1m *)�[0m
�[36;1m echo "::error title=Unknown ecosystem::'${ECOSYSTEM}' is not one of node, python, rust, none."�[0m
GitHub Actions: security / security _ Ecosystem audit: ci: shared security scan, actionlint and house Renovate preset
Conclusion: failure
##[group]Run set -euo pipefail
�[36;1mset -euo pipefail�[0m
�[36;1mcase "${ECOSYSTEM}" in�[0m
�[36;1m node)�[0m
�[36;1m npm audit --audit-level="${AUDIT_LEVEL}"�[0m
�[36;1m ;;�[0m
�[36;1m python)�[0m
�[36;1m pip install pip-audit�[0m
�[36;1m if [ -f requirements.txt ]; then�[0m
�[36;1m pip-audit -r requirements.txt�[0m
�[36;1m else�[0m
�[36;1m pip install -e .�[0m
�[36;1m pip-audit�[0m
�[36;1m fi�[0m
�[36;1m ;;�[0m
�[36;1m rust)�[0m
�[36;1m cargo install cargo-audit --locked�[0m
�[36;1m cargo audit�[0m
�[36;1m ;;�[0m
�[36;1m *)�[0m
�[36;1m echo "::error title=Unknown ecosystem::'${ECOSYSTEM}' is not one of node, python, rust, none."�[0m
🧰 Additional context used
🪛 zizmor (1.30.1)
.github/workflows/security.yml
[error] 22-22: unpinned action reference (unpinned-uses): action is not pinned to a hash (required by blanket policy)
(unpinned-uses)
.github/workflows/workflows-lint.yml
[error] 18-18: unpinned action reference (unpinned-uses): action is not pinned to a hash (required by blanket policy)
(unpinned-uses)
Pull request was converted to draft
…fresh - package.json: override tsup's esbuild to ^0.28.1. tsup 8.5.1 asks for ^0.27.0, and GHSA-g7r4-m6w7-qqqr affects esbuild >=0.27.3 <0.28.1, so no 0.27.x fix exists. `npm run build` passes with 0.28.2. - .github/workflows/deps-refresh-once.yml: one-shot runner job running `npm update` within the declared ranges. This clears hono, ip-address, js-yaml, minimatch, nanoid, path-to-regexp, picomatch, postcss, proxy-addr, qs, rollup, sharp, source-map-js and vite. Checked locally on the refreshed lock: typecheck, lint (same 22 warnings as before, 0 errors), all 240 tests and the build pass. Deleted in the next commit. Not fixable here without a major upgrade: simple-git 3 -> 4 (GHSA-858h-whjf-mvg5, GHSA-g4wm-2vf7-vfgr, GHSA-x6jw-m9v5-85vh; Renovate #85/#91) and vitest/@vitest/coverage-v8 3 -> 4.1.11+ (GHSA-82fw-gwwq-j7x9, plus tinypool through vitest; Renovate #74/#82). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012rYJxu978iUSGFZ1UuqTsi
Ran on a runner by the one-shot deps-refresh-once workflow: npm update --package-lock-only --ignore-scripts --no-audit --no-fund
It refreshed package-lock.json in ed5ae35 (`npm update` within the declared ranges, tsup's esbuild override applied). This commit is what runs CI against the refreshed lockfile. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012rYJxu978iUSGFZ1UuqTsi
…; hold TypeScript 7 - simple-git ^3 -> ^4.0.2: GHSA-858h-whjf-mvg5, GHSA-g4wm-2vf7-vfgr, GHSA-x6jw-m9v5-85vh and @simple-git/argv-parser GHSA-v5rq-49vh-5v5c are fixed only in 4.x (Renovate #85 / Dependabot #91 show it is compatible). - vitest and @vitest/coverage-v8 ^3 -> ^4.1.11 together: GHSA-82fw-gwwq-j7x9 (vitest/@vitest/mocker) and tinypool GHSA-5gmw-xhrv-c9v3 / GHSA-85c8-ppgw-ccpr. coverage-v8 peers the exact vitest version, which is why #74 (vitest only) and #82 (coverage-v8 5 only) each fail npm ci. - @eslint/js is imported by eslint.config.js but was never declared; it only resolved because eslint 9 depends on it. ESLint 10 no longer does (#83), so declare it explicitly. - renovate.json: hold TypeScript 7 (typescript-eslint 8.x peers typescript <6.1.0, #84) and group vitest with @vitest/* so they can't split again. - Lockfile refreshed on a runner by the one-shot deps-refresh-once workflow. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012rYJxu978iUSGFZ1UuqTsi
Ran on a runner by the one-shot deps-refresh-once workflow: npm install --package-lock-only --ignore-scripts --no-audit --no-fund
Its job is done: a5e9414 committed the lockfile resolved on a runner. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012rYJxu978iUSGFZ1UuqTsi
rishitank
left a comment
There was a problem hiding this comment.
Self-review by Claude
Read the changes in full, and CI was green. No issues found.
Why
This brings holocron in line with the shared CI in
rishitank/.github:npm auditdon't cover these);config:base.It also clears every open osv advisory.
What changed
.github/workflows/security.yml(new). Callsrishitank/.github/.github/workflows/security.yml@v1withecosystem: node: osv-scanner, gitleaks (full history) and an advisorynpm audit. The existing CodeQL, npm-audit and dependency-review jobs inci.ymlare unchanged..github/workflows/workflows-lint.yml(new). Shared actionlint. Runs when.github/workflows/**changes.renovate.json:config:base→github>rishitank/.github:node.matchPackagePatterns→ regexmatchPackageNames. Both custompackageRulesare kept.Fixes in this PR
^0.28.1for GHSA-g7r4-m6w7-qqqr (dd460ba).simple-git^4.0.2. Fixes GHSA-858h-whjf-mvg5, GHSA-g4wm-2vf7-vfgr, GHSA-x6jw-m9v5-85vh and@simple-git/argv-parserGHSA-v5rq-49vh-5v5c. Supersedes fix(deps): update dependency simple-git to v4 - autoclosed #85 and chore(deps): bump simple-git from 3.36.0 to 4.0.2 #91.vitestand@vitest/coverage-v8^4.1.11, moved together. Fixes GHSA-82fw-gwwq-j7x9 and the vitest-3tinypooladvisories. Supersedes chore(deps): update dependency vitest to v4 [security] - autoclosed #74 and chore(deps): update dependency @vitest/coverage-v8 to v5 - autoclosed #82, which each bumped only one half and failed. A Renovate rule now groups the vitest family.@eslint/js^9.39.5declared explicitly.eslint.configimports it, but it was only reachable through ESLint 9. ESLint 10 (chore(deps): update eslint monorepo to v10 #83) stops shipping it, so declaring it is the first step for that major.packageRuleshold ontypescriptmajors (chore(deps): update dependency typescript to v7 - autoclosed #84). typescript-eslint doesn't yet support TS 7.All checks pass on cc84cbd: CI (Lint, Type Check, Test on vitest 4, Build, CodeQL, Security Audit, Dependency Review), security (Secrets, Vulnerable dependencies, Ecosystem audit) and actionlint.
Overlap with #71
#71 (Dependabot → Renovate migration) also rewrites
renovate.json. Whichever PR lands second will need a rebase on that file. #71 is not touched here.Not in this PR
Code-scanning alert #27 (
js/path-injection,src/context/fileIndexer.ts:200,resolveRoot) resolves a user-chosen index root by design. Fixing it needs a product decision: either restrict indexable roots to an allowlist (for example the workspace or$HOME), or dismiss the alert as intended behaviour.🤖 Generated with Claude Code
https://claude.ai/code/session_012rYJxu978iUSGFZ1UuqTsi