Repository navigation
Eval: Keep each routing case's skills in one test - #5341
Merged
Merged
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.
Related issues
Proposed Changes
promptfoo expands a var that is an array of plain values into one test per element. The routing cases listed their skills as
skills: [build-site, plugin-recommendations], so each ran as one test per skill, andskillsLoadedFirstgot a string and crashed on.filter. Everyrouting-*case failed undernpm run eval.skillsis now a list of objects,skills: [{ name: build-site }], the same shapefollowUps,answersandstopAtalready use, andskillsLoadedFirstreads each entry'sname.outcome.test.mjsfails when any list var inpromptfoo.config.yamlholds plain values, so this can't come back forskillsor a future var. It fails on trunk's config and passes here.A correction to #5287: its testing instructions said
npm run eval -- --filter-pattern "^routing:"runs the routing cases, and its 69/75 baseline could not have come from that command, since every case crashed under it. The unit test passed the array to the check directly, so it never saw promptfoo's expansion.Testing Instructions
npx vitest run scripts/eval/outcome.test.mjs: 25 passed.STUDIO_EVAL_MODEL=fast npm run eval -- --filter-pattern "^routing:": 15 test cases (one per routing case), 14 passed, 8m 34s. The one failure is a real routing miss, not the harness: onrouting-eventsthe agent loadededit-manage-siteandblock-content, then created the page with plain blocks without loadingplugin-recommendations.routing-plan-questionloadedhosting-plans-helperfirst, as in the run on Eval: Stop a run at a matching tool call, and add skill routing cases #5287.Pre-merge Checklist
AI disclosure: Claude (Anthropic) in the Pi coding agent, via a Roadie session directed by @chubes4, made the change, added the test and ran the evals. @chubes4 reviewed the diff and the run.