Vally 0.10.0
Released on 2026-07-16.
Breaking
- LLM
prompt/panelgraders no longer automatically receive the resolved golden patch undervally gradeandvally oracle. Configurations that need reference-solution context must now addgolden_patchto the grader’sconfig.evidence(e.g.evidence: [trajectory, golden_patch]). Normalvally evalnever resolved golden patches, and configurations withoutevidencecontinue to receive trajectory evidence. (#700) vally lintnow rejects anenvironment.files[]entry that is missingdest(previously only caught at load time), so specs that passed lint with a missingdestwill now fail. The lint diagnostic code for a missingsrcwas also renamedmissing-required-field→environment-file-missing-field(bothsrcanddestshare it); tooling that keys off the old code must be updated. (#702)- The exported
TrajectoryEventunion gained a newsystemmember (SystemEvent), and the ATIF adapter now emits typedsystemevents for context-management steps (e.g. compaction) instead of the previous genericcustomevents. TypeScript consumers with exhaustiveswitchstatements overTrajectoryEventmust handle the new variant, and custom graders that matched those steps astype: "custom"must matchtype: "system"instead. (#669) - Public API (
@microsoft/vally): the exportedassertOracleGraders(graderConfigs)helper now takes a secondoptionsargument ({ hasGoldenTrajectory?, goldenTrajectoryHasTurns? }) so oracle grader validation can account for a supplied golden trajectory. Callers relying on the previous single-argument signature should pass the new options. (#690)
Features
promptandpanelLLM graders gain an explicitconfig.evidenceselector (trajectory,diff,golden_patch) that controls what a judge sees.diffinjects the agent’s cumulative workspace changes as## Agent Diff;golden_patch(undervally grade/vally oracle) injects the reference solution. Omittedevidencedefaults to trajectory evidence; when present it is a strict, complete selector. Agent Diff and Golden Patch sections are capped at 20,000 characters and nonce-fenced as untrusted evidence, anddiffcannot be combined withturn/scope. (#700)- New
environment.envfield sets environment variables on the agent process, threaded into thecopilot-sdk,claude-cli, andccaexecutors. Executors advertisesupportsEnvVars; the pipeline warns rather than silently dropping vars for executors that don’t. Includes Windows-safe case-insensitive env merging, env-var name validation, and best-effort secret redaction in executor error output. (#711) vally oraclegains two optional stimulus fields —golden_trajectory(an ATIF trajectory,inlineorpath, graded instead of the empty synthesized one, which lifts the rejection for behavior/metric/transcript graders including turn-scoped ones) andgolden_custom_metrics(a metrics JSON object written into the workspace wherever acustom-metricsgrader reads). Both are withheld by--no-golden-patchand combine withgolden_patch. (#690)- The
claude-cliexecutor now parses Claude Codestream-jsonoutput into full Vally trajectories — normalizing Claude’s tools (Bash,Edit,Read, …) to the shared canonical vocabulary, using real event timestamps, and taking token usage, cost, and model from Claude’s authoritativeresultevent — so Claude runs are gradeable with the same graders as Copilot. (#696) - The ATIF →
Trajectoryadapter now emitsreasoningevents (from each step’sreasoning_content, in both main and subagent paths) and a new typedsystemevent (type: "system") carrying compaction/context_managementsemantics, instead of collapsing non-skill system steps into a genericcustomevent. Both render in the LLM trajectory formatter rather than as[UNKNOWN]. (#669) - New
Trajectory.rawescape hatch carries the original, unconverted source document (e.g. the raw ATIF) so custom (program) graders can reach fields Vally’s normalized flat-event model drops. It is populated byfromAtif, in-process only, and stripped before JSONL serialization on both thevally evalreporter andvally grade --output jsonlpaths. (#662)
Fixed
- Temp-dir cleanup in the
vally-executor-claude-cliandvally-executor-ccaplugins now routes through the retry-hardenedremoveDir()helper, closing the last gaps in WindowsEBUSY/EPERM/ENOTEMPTYcleanup hardening. (#703)
Changed
- The live eval progress line now reads
0/1 completed (workers: 5)instead of the misleadingRunning 0/1 (workers: 5)— the number is completed trials, not in-flight ones. (#714) - Documentation: added a discoverable schema/reference map (
AGENTS.md, README golden path), multi-turn guide/reference cross-links, and a runnablesamples/multi-turn-memory/example so humans and agents can find the right docs without grepping source. (#699) - Renamed the private root workspace package from
evaluatetovally. The root package is"private": trueand never published, so this is a cosmetic change with no effect on@microsoft/vally*. (#704)