Vally 0.13.0
Released on 2026-08-07.
Breaking
- The
tool-callsgrader now validates its config semantics atvally linttime, so specs with cross-list or per-entry config mistakes that previously only failed when an eval ran are now caught at lint. (#582) - Graders now derive descriptive names from their config, so grader display names change in the console, markdown, and stored results, and the analytics DB schema bumps to v7 (delete
eval-history.dband re-ingest); consumers keyed on the old bare type names should switch to the newgraderTypefield. (#883)
Features
defaults.executorcan now be an{ name, config }object; thecopilot-sdkexecutor gains aproviderblock to point the agent under test at a custom OpenAI-compatible endpoint (BYOK), with secrets referenced by env-var name. (#835)- New
assistant-contains-tool-outputgrader captures a value from a tool result and asserts a later assistant message echoes it. (#912) - Graders now derive a descriptive name from their config, so multiple graders of the same type are distinguishable in reports instead of collapsing into one line. (#883)
- The
tool-call-countgrader gains an optionaltoolsfilter, so budgets can target specific tools (e.g.web_search) instead of only the total tool-call count. (#900) vally experiment rungains an opt-in--compareflag that runsvally compareagainst the baseline after the run. (#851)vally experiment rungains a--workspace <path>flag that preserves each variant’s agent workspaces for inspection, matchingvally eval. (#917)- The Harbor exporter now materializes
worktreeandcloneenvironment.gitenvironments as self-contained detached checkouts baked into the task image. (#834) - The Harbor exporter gains a
verifierSetupScriptoption to inject container-side setup (e.g. acquiring a short-lived token for an LLM judge) into the generated verifier. (#846) - Remote/relocating backends now materialize
trajectory.artifactDirto a host-readable path, so grading pre-hydrated output offline works across the backend boundary. (#892)
Fixed
- Large tool-output spillover is now redirected to a readable absolute path, so the agent no longer wastes turns hunting for a session-relative spill file and polluting resource-usage metrics. (#880)
- Preserving a
worktreeenvironment.gitrun to--workspacenow repairs the worktree metadata, sogit statusin the preserved directory no longer fails withfatal: not a git repository. (#853) - The
copilot-sdkexecutor no longer orphans its temporary home directory when it exits early on a fatal precondition. (#852) vally lintnow warns when aprompt/panelgrader setsconfig.promptbut defines no rubric, and validates rubric shape, surfacing problems that previously failed silently or crashed mid-grading. (#888)