Skip to content

Add reusable devenv perf workflow helper#648

Open
schickling-assistant wants to merge 4 commits intomainfrom
schickling/2026-05-10-devenv-ci-perf
Open

Add reusable devenv perf workflow helper#648
schickling-assistant wants to merge 4 commits intomainfrom
schickling/2026-05-10-devenv-ci-perf

Conversation

@schickling-assistant
Copy link
Copy Markdown
Collaborator

@schickling-assistant schickling-assistant commented May 10, 2026

Summary

  • Adds a reusable devenvPerfJob helper and benchmark/artifact steps for first-party repos to embed in their normal CI workflow.
  • Captures devenv shell eval, task, and process timings plus JSON trace artifacts, stdout/stderr, and host context for regression tracking.
  • Dogfoods the helper as a devenv-perf job inside effect-utils CI rather than as a separate workflow.
  • Fixes pnpm 11 linked-workspace bottlenecks by isolating nested and inherited PNPM_STORE_DIR / npm_config_store_dir per workspace, avoiding cross-workspace projection churn.

Validation

  • bash nix/devenv-modules/tasks/shared/tests/pnpm-task-smoke.test.sh passes.
  • devenv tasks run test:genie --mode before --no-tui --show-output passes after updating the stale standalone-workflow assertion.
  • devenv tasks run check:quick --mode before --no-tui --show-output passes.
  • devenv tasks run check:all --mode before --no-tui --show-output passes after the CI integration change.
  • Downstream dotfiles check:all passes with 29cbe6bb1c5a0e54ae66bbed301ef4841534ba63 pinned.
  • Downstream megarepo-all check:all passes with 29cbe6bb1c5a0e54ae66bbed301ef4841534ba63 pinned.

Benchmarks

Effect-utils local benchmark before downstream adoption:

Probe Time
traced cold-ish devenv shell --no-reload -- true 99.06s
warm devenv shell --no-reload -- true 0.77s
warm devenv tasks list 0.11s

Dotfiles final-state benchmark on dev3 after linked-store fixes:

Probe Time
devenv shell --refresh-eval-cache --no-reload -- true with JSON trace 17.584s
warm devenv shell --no-reload -- true 4.547s
warm devenv tasks list 0.091s
warm devenv processes --help 0.034s

Stack

  • Megarepo-all adoption: schickling/megarepo-all#86
  • Dotfiles adoption: schickling/dotfiles#855
Posted on behalf of @schickling
field value
agent_name 🌄 co1-vale
agent_session_id ee2f8a7b-5623-4ad7-a682-0dbe5737d042
agent_tool Codex CLI
agent_tool_version 0.125.0
agent_runtime Codex CLI 0.125.0
agent_model unknown
worktree effect-utils/schickling/2026-05-10-devenv-ci-perf
machine dev3
tooling_profile dotfiles@unknown-dirty

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 10, 2026

Storybook Previews

Package Latest URL Last Deploy (Europe/Berlin)
effect-react https://effect-react-pr-648--overeng-utils.netlify.app 2026-05-10 07:43 CEST
effect-schema-form-aria https://effect-schema-form-aria-pr-648--overeng-utils.netlify.app 2026-05-10 07:43 CEST
react-inspector https://react-inspector-pr-648--overeng-utils.netlify.app 2026-05-10 07:43 CEST
notion-cli https://notion-cli-pr-648--overeng-utils.netlify.app 2026-05-10 07:43 CEST
genie https://genie-pr-648--overeng-utils.netlify.app 2026-05-10 07:43 CEST
tui-stories https://tui-stories-pr-648--overeng-utils.netlify.app 2026-05-10 07:43 CEST
notion-react https://notion-react-pr-648--overeng-utils.netlify.app 2026-05-10 07:43 CEST
tui-react https://tui-react-pr-648--overeng-utils.netlify.app 2026-05-10 07:43 CEST
megarepo https://megarepo-pr-648--overeng-utils.netlify.app 2026-05-10 07:43 CEST
Per-Commit Deploy History

Commit 29cbe6b · 2026-05-10 07:44 CEST

Package URL
effect-react https://6a001b002956a74adb4bad24--overeng-utils.netlify.app
Alias: https://effect-react-pr-648--overeng-utils.netlify.app
effect-schema-form-aria https://6a001b0005855c735969054e--overeng-utils.netlify.app
Alias: https://effect-schema-form-aria-pr-648--overeng-utils.netlify.app
react-inspector https://6a001b002d99e06cd7c15908--overeng-utils.netlify.app
Alias: https://react-inspector-pr-648--overeng-utils.netlify.app
notion-cli https://6a001b01b3ae58156f351e68--overeng-utils.netlify.app
Alias: https://notion-cli-pr-648--overeng-utils.netlify.app
genie https://6a001b0182153c7c64238d60--overeng-utils.netlify.app
Alias: https://genie-pr-648--overeng-utils.netlify.app
tui-stories https://6a001b01513ca067a8f35ab5--overeng-utils.netlify.app
Alias: https://tui-stories-pr-648--overeng-utils.netlify.app
notion-react https://6a001b000ee2fb24eacc660f--overeng-utils.netlify.app
Alias: https://notion-react-pr-648--overeng-utils.netlify.app
tui-react https://6a001b02094f1854dd9b5919--overeng-utils.netlify.app
Alias: https://tui-react-pr-648--overeng-utils.netlify.app
megarepo https://6a001b032d99e06ce5c1591b--overeng-utils.netlify.app
Alias: https://megarepo-pr-648--overeng-utils.netlify.app

Commit dbd32e0 · 2026-05-10 07:33 CEST

Package URL
effect-react https://6a00189c094f184efc9b591a--overeng-utils.netlify.app
Alias: https://effect-react-pr-648--overeng-utils.netlify.app
effect-schema-form-aria https://6a00189cb3ae580fdd351e7b--overeng-utils.netlify.app
Alias: https://effect-schema-form-aria-pr-648--overeng-utils.netlify.app
react-inspector https://6a00189ce7d5c4301b36c211--overeng-utils.netlify.app
Alias: https://react-inspector-pr-648--overeng-utils.netlify.app
notion-cli https://6a00189ee26c173c17c2bfe8--overeng-utils.netlify.app
Alias: https://notion-cli-pr-648--overeng-utils.netlify.app
genie https://6a00189d0ee2fb2110cc65a9--overeng-utils.netlify.app
Alias: https://genie-pr-648--overeng-utils.netlify.app
tui-stories https://6a00189f513ca06239f35ada--overeng-utils.netlify.app
Alias: https://tui-stories-pr-648--overeng-utils.netlify.app
notion-react https://6a00189d513ca062dcf35a36--overeng-utils.netlify.app
Alias: https://notion-react-pr-648--overeng-utils.netlify.app
tui-react https://6a00189eaf93ba83a4a2d91c--overeng-utils.netlify.app
Alias: https://tui-react-pr-648--overeng-utils.netlify.app
megarepo https://6a0018a0fb2f9f2cb1e8e54b--overeng-utils.netlify.app
Alias: https://megarepo-pr-648--overeng-utils.netlify.app

Commit 1f2dbb4 · 2026-05-10 05:14 CEST

Package URL
effect-react https://69fff792e26c17f34fc2bfcf--overeng-utils.netlify.app
Alias: https://effect-react-pr-648--overeng-utils.netlify.app
effect-schema-form-aria https://69fff792af93ba3e44a2db13--overeng-utils.netlify.app
Alias: https://effect-schema-form-aria-pr-648--overeng-utils.netlify.app
react-inspector https://69fff792f956d3f69b9d03e1--overeng-utils.netlify.app
Alias: https://react-inspector-pr-648--overeng-utils.netlify.app
notion-cli https://69fff7cff39326426e38f738--overeng-utils.netlify.app
Alias: https://notion-cli-pr-648--overeng-utils.netlify.app
genie https://69fff7cf1f09b12073a3e645--overeng-utils.netlify.app
Alias: https://genie-pr-648--overeng-utils.netlify.app
tui-stories https://69fff7d088b9f91016df0a3f--overeng-utils.netlify.app
Alias: https://tui-stories-pr-648--overeng-utils.netlify.app
notion-react https://69fff7922e06785056b95ac1--overeng-utils.netlify.app
Alias: https://notion-react-pr-648--overeng-utils.netlify.app
tui-react https://69fff7d02d99e023ddc15921--overeng-utils.netlify.app
Alias: https://tui-react-pr-648--overeng-utils.netlify.app
megarepo https://69fff7d1871b3a0a2d6cf72b--overeng-utils.netlify.app
Alias: https://megarepo-pr-648--overeng-utils.netlify.app

Commit 20da714 · 2026-05-10 04:43 CEST

Package URL
effect-react https://69fff0b8c3bdc60872c7defe--overeng-utils.netlify.app
Alias: https://effect-react-pr-648--overeng-utils.netlify.app
effect-schema-form-aria https://69fff0b9ea1c0e35ffe672af--overeng-utils.netlify.app
Alias: https://effect-schema-form-aria-pr-648--overeng-utils.netlify.app
react-inspector https://69fff0b8513ca00d3ff35a48--overeng-utils.netlify.app
Alias: https://react-inspector-pr-648--overeng-utils.netlify.app
notion-cli https://69fff0b9a54a18c1dab7cc49--overeng-utils.netlify.app
Alias: https://notion-cli-pr-648--overeng-utils.netlify.app
genie https://69fff0bac3bdc60a2fc7de94--overeng-utils.netlify.app
Alias: https://genie-pr-648--overeng-utils.netlify.app
tui-stories https://69fff0ba84a79ed356643c4c--overeng-utils.netlify.app
Alias: https://tui-stories-pr-648--overeng-utils.netlify.app
notion-react https://69fff0b81f09b10fa6a3e63a--overeng-utils.netlify.app
Alias: https://notion-react-pr-648--overeng-utils.netlify.app
tui-react https://69fff0bb40ea5bc5ed0e5d3b--overeng-utils.netlify.app
Alias: https://tui-react-pr-648--overeng-utils.netlify.app
megarepo https://69fff0bc094f18fe379b590c--overeng-utils.netlify.app
Alias: https://megarepo-pr-648--overeng-utils.netlify.app

@schickling-assistant schickling-assistant marked this pull request as ready for review May 10, 2026 03:43
@schickling-assistant schickling-assistant force-pushed the schickling/2026-05-10-devenv-ci-perf branch from dbd32e0 to 29cbe6b Compare May 10, 2026 05:41
@schickling
Copy link
Copy Markdown
Collaborator

@codex

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 29cbe6bb1c

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread .github/workflows/ci.yml
fi
}

measure 'shell_eval_traced' '$ARTIFACT_DIR/traces/shell_eval_traced.json' '$DEVENV_BIN' '--trace-output' '$trace_file' '--trace-format' 'json' 'shell' '--no-reload' '--' 'true'
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Expand trace artifact path before invoking traced probe

The traced probe passes '$ARTIFACT_DIR/traces/shell_eval_traced.json' as a single-quoted literal, so measure receives $ARTIFACT_DIR verbatim instead of the env-expanded directory. In this job, that causes mkdir -p "$(dirname "$trace_file")" and --trace-output file:$trace_file to target a literal ./$ARTIFACT_DIR/... path, so the JSON trace is written outside tmp/devenv-perf-ci and is missing from the uploaded artifact bundle. This only affects traced probes but breaks the main regression-tracking output this job is meant to capture.

Useful? React with 👍 / 👎.

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