Skip to content

Port pnpm settings missing from pacquet #12009

Description

@zkochan

While investigating #11992, I confirmed that pnpm v11 writes a handful of settings into node_modules/.pnpm-workspace-state-v1.json that pacquet's pnpm-workspace.yaml reader does not yet recognize. They also aren't consumed anywhere in pacquet's install pipeline, so pacquet's resolution and linking ignore them outright today.

Capturing them here so they can each be tracked, ported, and removed from the ignored-in-comparison set in optimistic_repeat_install's settings-drift check.

Settings to port

Scope and process

Each setting is a separate piece of work — yaml plumbing, Config field, optional CLI flag mirror, and an actual consumer in the resolver / linker / store path. Once a setting is implemented end-to-end and lands in current_settings, the optimistic-repeat-install check naturally starts gating on it without any further wiring.

Settings explicitly NOT on this list

Pacquet already supports these (just not surfaced in current_settings for the optimistic check yet — a smaller follow-up tracked separately):

  • minimumReleaseAge, minimumReleaseAgeExclude, minimumReleaseAgeIgnoreMissingTime, minimumReleaseAgeStrict
  • trustPolicy, trustPolicyExclude, trustPolicyIgnoreAfter

And these have a different shape on the pacquet side that already covers the use case:

  • catalogs — read into WorkspaceManifest.catalogs; pnpm itself always ignores it in the checkDepsStatus comparison (ignoredSettings.add('catalogs') at deps/status/src/checkDepsStatus.ts:137).
  • workspacePackagePatterns — pnpm derives this from pnpm-workspace.yaml's packages: field, which pacquet already reads into WorkspaceManifest.packages.

Found via #11992.


Written by an agent (Claude Code, claude-opus-4-7).

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions