Skip to content

fix(nix): harden pnpm prepared workspace builds#636

Merged
schickling merged 5 commits intomainfrom
schickling/2026-04-28-pnpm-builder-stability
Apr 29, 2026
Merged

fix(nix): harden pnpm prepared workspace builds#636
schickling merged 5 commits intomainfrom
schickling/2026-04-28-pnpm-builder-stability

Conversation

@schickling-assistant
Copy link
Copy Markdown
Collaborator

Summary

  • remove fragile shell subshell/heredoc/find/dirname surfaces from the shared pnpm prepared-deps path
  • keep prepared deps strict by default with frozen lockfiles and ignored lifecycle scripts, including nested install roots
  • scope aggregate workspace manifests to owned members so external install roots do not create false stale-lock failures
  • add structured workspace-prep-otel build-log events for stage-source-copy, install, rewrite, archive, and complete timings
  • refresh affected fixed-output hashes for genie, megarepo, notion-cli, and tui-stories

Local proof

  • nix build --no-link --print-build-logs --option builders '' --option max-jobs 1 --option cores 1 .#genie-pnpm-deps .#megarepo-pnpm-deps .#tui-stories-pnpm-deps .#notion-cli-pnpm-deps
  • ./nix/workspace-tools/lib/mk-pnpm-cli/tests/run.sh --skip-genie --skip-megarepo --skip-oxlint --skip-devenv-shell --skip-downstream-megarepo
  • nix build --no-link --print-build-logs --option builders '' --option max-jobs 1 --option cores 1 .#genie .#megarepo .#tui-stories .#notion-cli
  • downstream dotfiles: nix build --impure --no-link --print-build-logs --option builders '' --option max-jobs 1 --option cores 1 --override-input effect-utils path:/tmp/effect-utils-clean-patched.ZpNTkj .#discord-agent

PNPM constraints

This keeps the long-term contract intentionally narrow: dependency preparation is manifest/lockfile driven, fixed-output, frozen, and lifecycle-script free. Packages that require generated native artifacts should model that explicitly in their package build phase instead of smuggling it through dependency prep. The remaining large-tree archive/restore cost is now visible through phase timing logs and can be optimized separately without weakening the install contract.

Prior-work check

I reviewed the recent pnpm builder history before applying this so the patch preserves the frozen-lockfile regression fix, nested install roots, optional completion generation, tar-stream prepared output, and existing phase trace logs.

Posted on behalf of @schickling
field value
agent_name 🧙 co2-sage
agent_session_id d6fe14fc-126e-4968-a6b3-9bb4e8f4617b
agent_tool Codex CLI
agent_tool_version codex-cli 0.124.0
agent_runtime Codex CLI codex-cli 0.124.0
agent_model unknown
worktree effect-utils-pnpm-pr/schickling/2026-04-28-pnpm-builder-stability
machine mbp2025
tooling_profile dotfiles@1093d8c

@schickling-assistant schickling-assistant force-pushed the schickling/2026-04-28-pnpm-builder-stability branch 6 times, most recently from 4a287bf to 6d53ced Compare April 28, 2026 12:26
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Apr 28, 2026

Storybook Previews

Package Latest URL Last Deploy (Europe/Berlin)
notion-react https://notion-react-pr-636--overeng-utils.netlify.app 2026-04-29 06:22 CEST
megarepo https://megarepo-pr-636--overeng-utils.netlify.app 2026-04-29 06:22 CEST
effect-react https://effect-react-pr-636--overeng-utils.netlify.app 2026-04-29 06:22 CEST
tui-stories https://tui-stories-pr-636--overeng-utils.netlify.app 2026-04-29 06:22 CEST
genie https://genie-pr-636--overeng-utils.netlify.app 2026-04-29 06:22 CEST
react-inspector https://react-inspector-pr-636--overeng-utils.netlify.app 2026-04-29 06:22 CEST
notion-cli https://notion-cli-pr-636--overeng-utils.netlify.app 2026-04-29 06:22 CEST
effect-schema-form-aria https://effect-schema-form-aria-pr-636--overeng-utils.netlify.app 2026-04-29 06:22 CEST
tui-react https://tui-react-pr-636--overeng-utils.netlify.app 2026-04-29 06:22 CEST
Per-Commit Deploy History

Commit 3fddf88 · 2026-04-29 06:23 CEST

Package URL
notion-react https://69f18771b508609fddfce65a--overeng-utils.netlify.app
Alias: https://notion-react-pr-636--overeng-utils.netlify.app
megarepo https://69f1877db593ed9bef2e5b45--overeng-utils.netlify.app
Alias: https://megarepo-pr-636--overeng-utils.netlify.app
effect-react https://69f1877d4c93549d4ff5cc55--overeng-utils.netlify.app
Alias: https://effect-react-pr-636--overeng-utils.netlify.app
tui-stories https://69f187884c93549eeef5ca1d--overeng-utils.netlify.app
Alias: https://tui-stories-pr-636--overeng-utils.netlify.app
genie https://69f1878ff24b9c7f325a390b--overeng-utils.netlify.app
Alias: https://genie-pr-636--overeng-utils.netlify.app
react-inspector https://69f1878f37c5e89dab3eeaeb--overeng-utils.netlify.app
Alias: https://react-inspector-pr-636--overeng-utils.netlify.app
notion-cli https://69f1878fd8cf08a517d85132--overeng-utils.netlify.app
Alias: https://notion-cli-pr-636--overeng-utils.netlify.app
effect-schema-form-aria https://69f1878fb59ac3906e23c443--overeng-utils.netlify.app
Alias: https://effect-schema-form-aria-pr-636--overeng-utils.netlify.app
tui-react https://69f1879bb508609f60fce658--overeng-utils.netlify.app
Alias: https://tui-react-pr-636--overeng-utils.netlify.app

Commit 211db14 · 2026-04-29 03:33 CEST

Package URL
notion-react https://69f15fea98fa9d30d4be4113--overeng-utils.netlify.app
Alias: https://notion-react-pr-636--overeng-utils.netlify.app
megarepo https://69f15feaf38b6530baab7809--overeng-utils.netlify.app
Alias: https://megarepo-pr-636--overeng-utils.netlify.app
effect-react https://69f15fd856af8032abb14ad4--overeng-utils.netlify.app
Alias: https://effect-react-pr-636--overeng-utils.netlify.app
tui-stories https://69f15fea3251a61233b2168c--overeng-utils.netlify.app
Alias: https://tui-stories-pr-636--overeng-utils.netlify.app
genie https://69f15fea2638c03382b9beb6--overeng-utils.netlify.app
Alias: https://genie-pr-636--overeng-utils.netlify.app
react-inspector https://69f15fea3eb8d9105840565e--overeng-utils.netlify.app
Alias: https://react-inspector-pr-636--overeng-utils.netlify.app
notion-cli https://69f15fdf175d2f3b245abab4--overeng-utils.netlify.app
Alias: https://notion-cli-pr-636--overeng-utils.netlify.app
effect-schema-form-aria https://69f15fcfcee7142f83e3b7db--overeng-utils.netlify.app
Alias: https://effect-schema-form-aria-pr-636--overeng-utils.netlify.app
tui-react https://69f15fdff24b9c14e25a38cc--overeng-utils.netlify.app
Alias: https://tui-react-pr-636--overeng-utils.netlify.app

Commit 44d4d1d · 2026-04-29 00:16 CEST

Package URL
notion-react https://69f13150f0e59890e2e2f494--overeng-utils.netlify.app
Alias: https://notion-react-pr-636--overeng-utils.netlify.app
megarepo https://69f1316bc4760cb9d4178d24--overeng-utils.netlify.app
Alias: https://megarepo-pr-636--overeng-utils.netlify.app
effect-react https://69f13182ca49cba4f683e066--overeng-utils.netlify.app
Alias: https://effect-react-pr-636--overeng-utils.netlify.app
tui-stories https://69f1317568ac98947329f734--overeng-utils.netlify.app
Alias: https://tui-stories-pr-636--overeng-utils.netlify.app
genie https://69f1313fc4760cb72d178ee7--overeng-utils.netlify.app
Alias: https://genie-pr-636--overeng-utils.netlify.app
react-inspector https://69f1317b392ccca8b15f19e1--overeng-utils.netlify.app
Alias: https://react-inspector-pr-636--overeng-utils.netlify.app
notion-cli https://69f13148c8cfaae843c4f67e--overeng-utils.netlify.app
Alias: https://notion-cli-pr-636--overeng-utils.netlify.app
effect-schema-form-aria https://69f131352f8188bba344e8cb--overeng-utils.netlify.app
Alias: https://effect-schema-form-aria-pr-636--overeng-utils.netlify.app
tui-react https://69f1315e8f7b1ddadd2cce2e--overeng-utils.netlify.app
Alias: https://tui-react-pr-636--overeng-utils.netlify.app

Commit 2cce812 · 2026-04-28 17:43 CEST

Package URL
notion-react https://69f0d4f6f83be330f2104dc1--overeng-utils.netlify.app
Alias: https://notion-react-pr-636--overeng-utils.netlify.app
megarepo https://69f0d4db0d9e9d432c7c4db4--overeng-utils.netlify.app
Alias: https://megarepo-pr-636--overeng-utils.netlify.app
effect-react https://69f0d501beb53843c4d685bb--overeng-utils.netlify.app
Alias: https://effect-react-pr-636--overeng-utils.netlify.app
tui-stories https://69f0d4f68ae9a42315e6eeec--overeng-utils.netlify.app
Alias: https://tui-stories-pr-636--overeng-utils.netlify.app
genie https://69f0d54ed4329c6a7e348b88--overeng-utils.netlify.app
Alias: https://genie-pr-636--overeng-utils.netlify.app
react-inspector https://69f0d4e3e361c86064ca3908--overeng-utils.netlify.app
Alias: https://react-inspector-pr-636--overeng-utils.netlify.app
notion-cli https://69f0d4fd3e2cb343611e2ccf--overeng-utils.netlify.app
Alias: https://notion-cli-pr-636--overeng-utils.netlify.app
effect-schema-form-aria https://69f0d50866cedd59bced2d80--overeng-utils.netlify.app
Alias: https://effect-schema-form-aria-pr-636--overeng-utils.netlify.app
tui-react https://69f0d4ea8ae9a421e9e6f09a--overeng-utils.netlify.app
Alias: https://tui-react-pr-636--overeng-utils.netlify.app

Commit 6d53ced · 2026-04-28 14:30 CEST

Package URL
notion-react https://69f0a859c0990361de89ed20--overeng-utils.netlify.app
Alias: https://notion-react-pr-636--overeng-utils.netlify.app
megarepo https://69f0a843f83be37477104e9e--overeng-utils.netlify.app
Alias: https://megarepo-pr-636--overeng-utils.netlify.app
effect-react https://69f0a864bbe37475ee588400--overeng-utils.netlify.app
Alias: https://effect-react-pr-636--overeng-utils.netlify.app
tui-stories https://69f0a84cac52b75ebb7df6ec--overeng-utils.netlify.app
Alias: https://tui-stories-pr-636--overeng-utils.netlify.app
genie https://69f0a853326f63aa01033f7c--overeng-utils.netlify.app
Alias: https://genie-pr-636--overeng-utils.netlify.app
react-inspector https://69f0a84c8ae9a45d4fe6ed72--overeng-utils.netlify.app
Alias: https://react-inspector-pr-636--overeng-utils.netlify.app
notion-cli https://69f0a83dc09903628889edaf--overeng-utils.netlify.app
Alias: https://notion-cli-pr-636--overeng-utils.netlify.app
effect-schema-form-aria https://69f0a85e4d0c1662c2632a61--overeng-utils.netlify.app
Alias: https://effect-schema-form-aria-pr-636--overeng-utils.netlify.app
tui-react https://69f0a844187338a8ecc2a82c--overeng-utils.netlify.app
Alias: https://tui-react-pr-636--overeng-utils.netlify.app

@schickling-assistant schickling-assistant force-pushed the schickling/2026-04-28-pnpm-builder-stability branch from 2cce812 to 44d4d1d Compare April 28, 2026 22:10
@schickling schickling merged commit 7efdbee into main Apr 29, 2026
13 checks passed
@schickling schickling deleted the schickling/2026-04-28-pnpm-builder-stability branch April 29, 2026 09:35
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.

2 participants