fix(eval): repair broken targets.yaml and two eval-run bugs found during dogfood - #1702
Merged
Conversation
…ing dogfood
.agentv/targets.yaml failed validation on main: a recent hard-deprecation pass
rejected the legacy ${{ VAR }} interpolation syntax and removed the use_target
field with no replacement, but never migrated this repo-root file. Migrate all
scalar fields to {{ env.VAR }} and turn default/agent/llm/grader from
use_target aliases into concrete targets mirroring today's
AGENT_TARGET/LLM_TARGET/GRADER_TARGET values, so `target: llm` etc. across
examples/ keep resolving without editing 65+ example eval files.
Also fixes two bugs surfaced while dogfooding:
- `--results-repo current/.` (the exact syntax documented in --help) fell
through to being parsed as an owner/repo GitHub shorthand instead of the
source repo, producing a bogus `git clone https://github.com/current/..git`.
- `metadata.eval_file` in summary.json could be an absolute host path instead
of repo-relative, since the two call sites building it never relativized
against cwd (unlike the third call site nearby, which already did).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Entire-Checkpoint: bfb9174c1739
Deploying agentv with
|
| Latest commit: |
90e5cdc
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://b2154d12.agentv.pages.dev |
| Branch Preview URL: | https://fix-sprint-followups.agentv.pages.dev |
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.
Summary
Found while dogfooding the av-cpl5 artifact-boundary work (previous session):
.agentv/targets.yamlfailed validation onmain. Two same-day merges (f0f768f2,ce83a4dd) hard-rejected the legacy${{ VAR }}interpolation syntax and removed theuse_targetfield with no replacement mechanism, but never migrated this repo-root file. Everyagentv eval runusing the default targets file was broken.{{ env.VAR }}(straight semantic drop-in, confirmed against the framework's own migration codemod).default/agent/llm/graderuseduse_targetto redirect to whatever target name an env var (AGENT_TARGET/LLM_TARGET/GRADER_TARGET) pointed to. Since target aliasing has no replacement, and 65+ example eval files (examples/**/*.eval.yaml) plus 12 target blocks explicitly referencetarget: llm/grader_target: grader, these are now concrete targets mirroring today's env values (copilot-cli/azure/azure) instead of aliases. This keeps every example file resolving with zero edits to those files. The tradeoff: switching the active provider now means editingtargets.yamldirectly instead of one env var — a real framework limitation (use_targetremoval shipped with no migration path), not something fixable from this file alone.defaults: {target, grader}config.yaml schema instead, but confirmed viapickTargetName()inapps/cli/src/commands/eval/targets.tsthat it isn't actually wired intoeval run's target/grader resolution yet (it falls back to the literal string'default', notconfig.yaml'sdefaults.target) — so adding it here would be inert decoration. Flagging as a separate framework gap.--results-repo current/.— the exact syntax documented in--help("current/. for the source repo") — fell throughresultsRepoOverride()'s string checks and got treated as anowner/repoGitHub shorthand, producinggit clone https://github.com/current/..git(404). Addedcurrent/.as a recognized alias for./current.metadata.eval_fileinsummary.jsoncould be an absolute host path. Two call sites inrun-eval.ts(writeInitialRunSummaryArtifact's stub write, and the finalwriteArtifactsFromResultswrite) builtevalFilefromactiveTestFiles[0]without relativizing againstcwd, unlike a third nearby call site that already doespath.relative(cwd, testFilePath). Applied the same pattern to both.Test plan
bun apps/cli/src/cli.ts validate .agentv/targets.yaml— valid (only pre-existing unrelatedprovider: codexwarnings remain).bun run typecheck(workspace) — clean.bunx biome checkon touched files — clean.bun test apps/cli/test/eval.integration.test.ts— 30/33 pass; the 3 failures are pre-existing on unmodifiedmain(verified viagit stash), unrelated to this change (a differentruntime_source.eval_filespath issue).bun apps/cli/src/cli.ts eval run examples/features/rubric/evals/operators.eval.yaml --target llm --workers 1 --threshold 0.8 --results-repo current/. --results-branch agentv/results/v1 --results-pushagainst a live Azure target + realllm-rubricgrader — 100% pass,--results-repo current/.correctly resolved to the source repo, pushed toagentv/results/v1, and the pushedsummary.json'smetadata.eval_fileisexamples/features/rubric/evals/operators.eval.yaml(repo-relative).🤖 Generated with Claude Code