fix(ci): repair the install path — build approval, dead soak, skipped hook, ReDoS override - #247
Open
unional wants to merge 4 commits into
Open
fix(ci): repair the install path — build approval, dead soak, skipped hook, ReDoS override#247unional wants to merge 4 commits into
unional wants to merge 4 commits into
Conversation
…apply Two install-time defects, both silent. `pnpm install` exits non-zero on an unapproved dependency build script since pnpm 11. @repobuddy/jest v5 pulls in @swc/core, which ships a native binary via postinstall, so every renovate PR that bumps that dependency fails at Install Dependencies before a single test runs — PR #235 has been blocked on this. The 24h release soak was written to .npmrc as `minimumreleaseage`, which neither npm nor pnpm reads: npm warns "Unknown project config" and `pnpm config get minimumReleaseAge` returns undefined. pnpm reads the setting from pnpm-workspace.yaml, so it moves there and now resolves to 1440. Verified locally: install and verify pass on main, and PR #235's branch goes from failing at install to 7 suites / 63 tests passing with this change. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ETjy9oQGyETyFmDBdR9Egz
|
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #247 +/- ##
=======================================
Coverage 97.19% 97.19%
=======================================
Files 9 9
Lines 321 321
Branches 87 83 -4
=======================================
Hits 312 312
Misses 9 9 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
The repo's one open Dependabot alert (high): minimatch >=9.0.0 <9.0.7 has a ReDoS in matchOne() via multiple non-adjacent GLOBSTAR segments. Nothing depends on minimatch 9 directly — the direct dependency is ^8. The vulnerable copy is 9.0.3, pinned by @typescript-eslint/parser@6.21.0 which arrives through eslint-plugin-harmony, so it cannot be moved by bumping a direct dependency. Scoped override on the 9 line only; 3/5/7/8/10 are untouched. Resolves to 9.0.9. Verified: 7 suites / 63 tests pass. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ETjy9oQGyETyFmDBdR9Egz
Without strict, pnpm falls back past the window rather than failing, so the 24h soak stops applying exactly when a too-new version is the only resolution — the case it exists to catch. Matches the setting used across the other repos in this sweep. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ETjy9oQGyETyFmDBdR9Egz
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Four install-path defects on
main, all of them silent.1.
pnpm installfails on an unapproved build scriptpnpm 11 turns an unapproved dependency build script into a non-zero exit rather than a warning.
@repobuddy/jestv5 pulls in@swc/core, which ships a native binary viapostinstall, so every renovate PR that bumps it dies at Install Dependencies before a test runs:That is what has been blocking #235. Reproduced locally on that branch, and with
"@swc/core": trueadded it goes from failing at install to 7 suites / 63 tests passing.2. The 24h release soak never applied
.npmrccarriedminimumreleaseage=1440— not a key npm or pnpm reads. npm printsUnknown project config "minimumreleaseage"andpnpm config get minimumReleaseAgereturnsundefined, so no dependency was ever held back. pnpm reads the setting frompnpm-workspace.yaml; moved there, it resolves to1440.Worth knowing: the kebab-case
.npmrcspelling does not work either —minimum-release-age=1440in.npmrcstill reads backundefined.pnpm-workspace.yamlis the only location that takes effect.3.
.husky/commit-msgwas not executableCommitted
100644, so git skipped it (hook was ignored because it's not set as executable) and commitlint has not run on any local commit. Now100755, and it runs.4. minimatch ReDoS — the repo's one open Dependabot alert (high)
minimatch >=9.0.0 <9.0.7, ReDoS inmatchOne()via multiple non-adjacent GLOBSTAR segments. Nothing depends on minimatch 9 directly — the direct dependency is^8. The vulnerable 9.0.3 is pinned by@typescript-eslint/parser@6.21.0, arriving througheslint-plugin-harmony, so no direct-dependency bump can move it. Scoped override on the 9 line only, leaving 3/5/7/8/10 alone; resolves to 9.0.9.Verification
pnpm install --frozen-lockfileandpnpm verifypass on this branch.No runtime change to
@unional/fixture, so no changeset. The other cause of fixture's red dependency PRs is separate and handled in #248.