Skip to content

chore: dep-refresh release-prep (pnpm 11.5 migration + trustPolicyExclude sync + quarantined dep bumps)#28

Merged
stevensacks merged 3 commits into
mainfrom
chore/dep-refresh
Jun 25, 2026
Merged

chore: dep-refresh release-prep (pnpm 11.5 migration + trustPolicyExclude sync + quarantined dep bumps)#28
stevensacks merged 3 commits into
mainfrom
chore/dep-refresh

Conversation

@stevensacks

@stevensacks stevensacks commented Jun 10, 2026

Copy link
Copy Markdown
Contributor

Release-prep branch: pnpm 11.5 migration + quarantined dependency refresh

Ready to merge. Adds one changeset, cutting a minor (1.6.0).

Config-only (not published, no changeset)

  • trustPolicyExclude sync: eslint-import-resolver-typescript@3.10.1 (config's published subtree, kept in sync with GAIA) and chokidar@4.0.3 (build-only via tsup, lint's alone). Both are benign pre-provenance releases that trip trustPolicy: no-downgrade.
  • pnpm 11.5.2 migration: packageManager bumped (pnpm/action-setup reads it); resolution/supply-chain settings relocated from package.json/.npmrc into pnpm-workspace.yaml (savePrefix: '', the allowBuilds map for esbuild/unrs-resolver, since v11 removed onlyBuiltDependencies and strictDepBuilds fails an unlisted build).

Dependency refresh (published → changeset: minor)

Each bumped to the newest version that has cleared the 7-day minimumReleaseAge window. Install is clean under trustPolicy: no-downgrade with no new trustPolicyExclude entries.

Package From To Notes
eslint-plugin-unicorn 64.0.0 65.0.1 major; capped here — unicorn 66 requires ESLint 10.4
eslint-plugin-storybook 10.4.2 10.4.6
@vitest/eslint-plugin 1.6.19 1.6.20
eslint-plugin-better-tailwindcss 4.5.0 4.6.0
eslint-plugin-perfectionist 5.9.0 5.9.1
@types/node ^25.9.1 ^25.9.3 dev-only, no changeset
typescript-eslint ^8.60.0 ^8.61.1 dev-only, no changeset

Held back by design: eslint / @eslint/js (ESLint 10 is a separate coordinated migration with the consuming app); eslint-plugin-sonarjs 4.1.0 (published within the 7-day window at prep time).

unicorn 64 → 65 consumer check

Dogfooded unicorn 65's recommended preset + this config's overrides against the GAIA app through an isolated Linter (only unicorn registered, so every hit is a real unicorn finding). Two new-in-65 rules fire on real GAIA source:

  • unicorn/prefer-string-replace-all (1 site) — auto-fixable; consumer --fix resolves it on adoption. No config change.
  • unicorn/prefer-includes-over-repeated-comparisons (1 site) — not auto-fixable and a poor fit for typed React: Array#includes returns a plain boolean, not a type predicate, so it cannot narrow a union the way an === comparison chain does. Disabled in style-hygiene.ts, joining the existing set of disabled unicorn opinions.

Verify

pnpm install / typecheck / lint / build all green under pnpm 11.5.2 with unicorn 65.

🤖 Generated with Claude Code

…typescript@3.10.1)

Config-only. pnpm-workspace.yaml is not published, so this affects only this
repo's own dev/CI installs; no version bump and no changeset.

Mirrors the exclude GAIA added when it bumped to @gaia-react/lint 1.5.1:
re-resolving this config's subtree trips trustPolicy: no-downgrade on
eslint-import-resolver-typescript@3.10.1 (final 3.x, required by
eslint-plugin-canonical ^3.7.0; no provenance attestation while the 4.x line
has it). Same benign pattern as semver@6.3.1. Only bites this repo when a
maintainer next re-resolves canonical's subtree.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@stevensacks

Copy link
Copy Markdown
Contributor Author

Watch for more trust excludes. Adding those deps re-resolves lint's subtree again, which can surface more latent pre-provenance transitives (the same way 1.5.1 surfaced this one). Add any to both lint and gaia.

- bump packageManager to pnpm@11.5.2 (CI's pnpm/action-setup reads it)
- relocate settings pnpm 11 no longer reads from package.json/.npmrc into
  pnpm-workspace.yaml: save-exact -> savePrefix '', and build approval ->
  allowBuilds map (esbuild, unrs-resolver; onlyBuiltDependencies is removed in
  v11 and strictDepBuilds fails the install if either is unlisted)
- add chokidar@4.0.3 to trustPolicyExclude: v11 enforces trustPolicy against the
  whole lockfile on every install, and this benign pre-provenance final-4.x
  release (via tsup, build-only) trips no-downgrade

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@stevensacks stevensacks changed the title chore: dep-refresh release-prep (trustPolicyExclude sync; deps to follow) chore: dep-refresh release-prep (pnpm 11.5 migration + trustPolicyExclude sync; deps to follow) Jun 10, 2026
…ionist/better-tailwindcss)

Bump dependencies that have cleared the 7-day release-age quarantine to
their newest aged-out versions. unicorn is held at 65 because 66 requires
ESLint 10.4 and the config stays on ESLint 9 until that migration is
coordinated with the consuming app.

Disable unicorn/prefer-includes-over-repeated-comparisons: Array#includes
returns a plain boolean, not a type predicate, so it cannot narrow a union
the way an === comparison chain does. In a typed codebase the chain is the
type-safe idiom, so this joins the config's existing disabled unicorn
opinions.

Dev-only @types/node and typescript-eslint bumped alongside (not consumer
facing, no changeset).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@stevensacks stevensacks changed the title chore: dep-refresh release-prep (pnpm 11.5 migration + trustPolicyExclude sync; deps to follow) chore: dep-refresh release-prep (pnpm 11.5 migration + trustPolicyExclude sync + quarantined dep bumps) Jun 25, 2026
@stevensacks stevensacks marked this pull request as ready for review June 25, 2026 04:43
@stevensacks stevensacks merged commit b05f445 into main Jun 25, 2026
1 check passed
@stevensacks stevensacks deleted the chore/dep-refresh branch June 25, 2026 04:44
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.

1 participant