Skip to content

chore: Supply chain hardening#15876

Open
elliott-with-the-longest-name-on-github wants to merge 3 commits into
mainfrom
supply-chain-hardening
Open

chore: Supply chain hardening#15876
elliott-with-the-longest-name-on-github wants to merge 3 commits into
mainfrom
supply-chain-hardening

Conversation

@elliott-with-the-longest-name-on-github
Copy link
Copy Markdown
Contributor

kit

Supply-chain hardening pass.

Changes

  • Add to pnpm-workspace.yaml:
    • minimumReleaseAge: 1440
    • minimumReleaseAgeExclude: ['@sveltejs/*', svelte, esrap, devalue]
    • blockExoticSubdeps: true
    • linkWorkspacePackages: true (migrated from .npmrc)
    • shellEmulator: true (migrated from .npmrc)
  • Remove .npmrc (all settings migrated to pnpm-workspace.yaml).
  • Remove the pkg-pr-new job from ci.yml.
  • Pin all third-party GitHub Actions to full SHA with # vX.Y.Z comments across ci.yml, audit.yml, autofix-lint.yml, release.yml, platform-tests-vercel.yml, and the local composite actions in .github/actions/platform-test/action.yml and .github/actions/vercel-deploy/action.yml:
    • actions/checkout@v6
    • actions/setup-node@v6
    • actions/upload-artifact@v7
    • actions/github-script@v9
    • pnpm/action-setup@v6.0.8
    • denoland/setup-deno@v2
    • changesets/action@v1

@changeset-bot
Copy link
Copy Markdown

changeset-bot Bot commented May 20, 2026

⚠️ No Changeset found

Latest commit: 40a2a17

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

Comment thread pnpm-workspace.yaml
@@ -1,3 +1,13 @@
minimumReleaseAge: 1440
minimumReleaseAgeExclude:
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Hmm. zimmerframe and esm-env seem legit but it's weird to exclude the other ones. They're legitimately outside our sphere of influence / direct trust

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

While true that we don't control them, I have a lot of trust in Vite and we have to bump it a lot for testing new beta releases, addressing CVEs, etc. and it gets annoying if we can't do that

- Increase minimumReleaseAge from 1440 (1 day) to 2880 (2 days)
- Add zimmerframe, prettier-plugin-svelte, svelte-check, and esm-env to minimumReleaseAgeExclude
@ghostdevv
Copy link
Copy Markdown
Member

@elliott-with-the-longest-name-on-github I hope you don't mind I pushed 40a2a17 to use the full action version in the comments for clarity and prevent tooling issues - I started creating review comments and there were so many... 😄

Copy link
Copy Markdown
Member

@ghostdevv ghostdevv left a comment

Choose a reason for hiding this comment

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

It's worth running zizmor too - seems to be a lot of suggestions so I'll come back later/let you do it to avoid DoS-ing your attention any further today 😄

- uses: actions/checkout@v6
- uses: pnpm/action-setup@v6.0.8
- uses: actions/setup-node@v6
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Suggested change
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false

Comment thread .github/workflows/ci.yml
@@ -36,24 +36,12 @@ permissions:
contents: read # to fetch code (actions/checkout)
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

we could do persist-credentials: false a bunch in this file, but may be worth doing in a follow up as it's hard to tell if it'll break 🤔

- uses: actions/checkout@v6
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
ref: ${{ inputs.sha || github.sha }}
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Suggested change
ref: ${{ inputs.sha || github.sha }}
ref: ${{ inputs.sha || github.sha }}
persist-credentials: false

uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: 24.x
cache: pnpm
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Suggested change
cache: pnpm
cache: ''
package-manager-cache: false

Disabling cache in the release workflow can help reduce risk of cache poisoning attacks being able to get code published - this seems to be the way to do it with actions/setup-node, however verbose

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