Add pnpm materialization profiles#878
Draft
schickling-assistant wants to merge 9 commits into
Draft
Conversation
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.
Problem
The pnpm install helper had implicit dependency-materialization behavior. That made it hard for downstream repos to prove whether installs use job-local state, split shared files, or a future same-device hardlink profile.
Goal
Expose an explicit materialization profile contract and runtime evidence without switching the default Linux behavior to hardlink imports yet.
Decisions
materializationProfile ? "auto"with explicitciJobLocal,splitFilesCas,darwinSplitCas,linuxSharedHardlink, andisolatedprofiles.autobehavior-compatible viasplitFilesCas;linuxSharedHardlinkremains opt-in and fail-fast.autojob-local, while preserving explicitly requested global profiles in CI.localMaterializationProfile,localStoreDir, andlocalSharedFilesDirapply only outside CI.localOverridesRequireLinuxso downstream repos can declare a Linux hardlink CAS boundary without leaking/var/libLinux paths or hardlink policy into macOS.pnpm:updateandpnpm:dedupe, not onlypnpm:install.notion-clidependency FOD to Evergreen-managed per-system hash shape so full verification no longer blocks on an unrepairable literal slot.Verification
CI=1 bash nix/devenv-modules/tasks/shared/tests/pnpm.test.shCI=1 bash nix/devenv-modules/tasks/shared/tests/pnpm-task-smoke.test.shlocalOverridesRequireLinuxwith a simulated Darwin runtime.nixfmt --check nix/devenv-modules/tasks/shared/pnpm.nixgit diff --check -- nix/devenv-modules/tasks/shared/pnpm.nix nix/devenv-modules/tasks/shared/tests/pnpm-task-smoke.test.shnix build .#notion-cli --no-link --print-build-logson dev3 / x86_64-linux passed.ssh dev4 ... nix build .#notion-cli --no-link --print-build-logsat commita42a3e495passed on aarch64-linux.devenv tasks run check:all --no-tuinotion-datasource-synce2e timeouts, onerestate-effectendpoint readiness failure, and Vitest fork startup/teardown timeouts.Complexity
Adds profile-selection helpers because downstream storage observability needs a stable contract and runtime evidence. The complexity is bounded to the pnpm task helpers and keeps hardlink materialization opt-in.
Concerns
autostill does not switch to hardlink; that remains gated on production CAS path provisioning, real-workload reuse/link-count evidence, install timing, and native rebuild safety./nixdisk exhaustion on dev3; dotfiles #1219 records that as the current bottleneck.notion-clihash slot, but its direct post-write evaluator still cannot import this package becausebuild.nixrequiressrc; real flake builds are the proof surface for this package.Follow-ups
linuxSharedHardlinkas the Linux default only after measured production proof./nixvolume.References
Posted on behalf of @schickling
agent_nameagent_session_idagent_toolagent_tool_versionagent_runtimeagent_modelruntime_profileskills_manifestworktreemachinetooling_profile