Move eval/ to scripts/eval/ - #3775
Conversation
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
📊 Performance Test ResultsComparing e2263ba vs trunk app-size
site-editor
site-startup
Results are median values from multiple test runs. Legend: 🟢 Improvement (faster) | 🔴 Regression (slower) | ⚪ No change (<50ms diff) |
|
As a follow-up, this is Claude's explanation of the warnings that appear when running Claude Code explanation:Yes — those warnings come from a quirk in promptfoo's exec: provider caching, and they're harmless. Here's exactly what happens (verified against the promptfoo 0.121.4 source that npx cached on your machine): The mechanism. Before running your provider command, promptfoo tries to build a cache key by hashing any file it can find among the command's tokens (node, ../apps/cli/dist/cli/eval-runner.mjs). The catch is in src/providers/scriptCompletion.ts:
So when hashing, promptfoo looks for /../apps/cli/dist/cli/eval-runner.mjs — outside the repo, doesn't exist — and node isn't a file in the cwd either. Zero hashable files produces the first warning ("Could not find any valid files"), and since the cache key is content-based, it then disables caching and prints the second one. The script itself still executes fine afterward because execution uses the eval/ cwd. It's an inconsistency in promptfoo (hash-cwd ≠ exec-cwd), not a problem with your setup. Impact: effectively none — and arguably a good thing here. The only consequence is that promptfoo won't cache the runner's output between runs. For this eval suite you actually want that: the cases spin up the real agent and create/delete real sites, so a cached stdout from a previous identical run would skip the agent entirely and make the assertions meaningless. |

Related issues
How AI was used in this PR
Claude Code performed the move, updated the path references, and verified the suite still runs (
npm run eval -- -n 1passes against the moved config).Proposed Changes
The PromptFoo eval suite added in #3031 lives in a top-level
eval/directory. It's a dev tool, not an app or product code, so it doesn't warrant a project-root directory — this moves it underscripts/alongside the other development tooling, keeping the repo root clean. No behavior change:npm run evalandnpm run eval:viewwork exactly as before.Testing Instructions
studio auth loginnpm run eval -- -n 1Pre-merge Checklist
🤖 Generated with Claude Code