[cherry-pick source, do not merge] Cross-family skill eval — dispatch pre-merge#920
Draft
AbhitejJohn wants to merge 1 commit into
Draft
[cherry-pick source, do not merge] Cross-family skill eval — dispatch pre-merge#920AbhitejJohn wants to merge 1 commit into
AbhitejJohn wants to merge 1 commit into
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
Adds a standalone workflow_dispatch-driven “cross-family” Vally evaluation workflow intended to be cherry-picked onto feature branches to run executor×plugin (×shard) comparisons with an enforced judge-family separation.
Changes:
- Replaces the existing reusable
vally-evaluation.ymlshape with a dispatch-only workflow that builds an executor×plugin×shard matrix and runsvally experiment run+adapt.mjsper cell. - Adds sharding support by round-robining per-plugin eval specs into per-cell
--eval-filterlists. - Adds a
summaryjob that downloads all cell artifacts and generates a cross-family pass matrix + JSON summary artifact.
Show a summary per file
| File | Description |
|---|---|
| .github/workflows/vally-evaluation.yml | Reworks the workflow into a dispatchable cross-family evaluation matrix with per-cell execution and a results summary job. |
Copilot's findings
Tip
Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- Files reviewed: 1/1 changed files
- Comments generated: 3
Comment on lines
53
to
55
| on: | ||
| # Triggered by the main evaluation workflow after discover completes | ||
| workflow_call: | ||
| workflow_dispatch: | ||
| inputs: |
| runs-on: ubuntu-latest | ||
| environment: copilot-pat-pool | ||
| timeout-minutes: 180 | ||
| timeout-minutes: ${{ fromJSON(inputs.timeout_minutes) }} |
Comment on lines
+424
to
+426
| const skill = path.basename(path.dirname(fp)); | ||
| rows[skill] = rows[skill] || {}; | ||
| rows[skill][executor] = !!v.passed; |
AbhitejJohn
marked this pull request as draft
July 21, 2026 22:07
AbhitejJohn
force-pushed
the
abhitejjohn-cross-family-eval-workflow
branch
3 times, most recently
from
July 21, 2026 22:35
1c802a2 to
b8cab54
Compare
AbhitejJohn
temporarily deployed
to
copilot-pat-pool
July 21, 2026 22:35 — with
GitHub Actions
Inactive
Hosts the cross-family executor x plugin evaluation matrix under evaluation-run.yml so it is dispatchable on any branch before merging to main (workflow_dispatch is only registered for filenames present on the default branch, and #877 removed the previous host vally-evaluation.yml). - Executor x plugin (x shard) matrix; judge != executor family (default judge = latest Opus; GPT when Opus executes). - Inputs: plugins (empty=all), skills (empty=all), executors (default opus,gpt,sonnet46,haiku,mai), runs, workers, shards, timeout_minutes. - EVAL_SPEC filename auto-derived from dotnet-skills.experiment.yaml's evals: glob (works with eval.yaml on current main or eval.vally.yaml). NOT FOR MERGE: this replaces main's reusable evaluation-run.yml and drops its workflow_call trigger. Cherry-pick / dispatch source branch only. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
AbhitejJohn
force-pushed
the
abhitejjohn-cross-family-eval-workflow
branch
from
July 21, 2026 23:36
b8cab54 to
7c97b73
Compare
This was referenced Jul 22, 2026
Closed
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.
This PR exists so anyone can run a cross-family skill evaluation on their own branch before any of this lands on
main. It is a single, self-contained commit designed to be cherry-picked. Do not merge it tomainas-is (see "Why not merge" below).What this is
A standalone cross-family evaluation workflow: every runnable skill is run through a matrix of executor models and judged head-to-head (skilled vs. baseline) by
vally compare, with the judge never in the same model family as the executor:claude-opus-4.8gpt-5.5Each matrix cell =
{executor} x {plugin}(optionallyx {shard}). Results upload per cell and assemble into a cross-family pass matrix. Informational only — it never gates PRs.How to run it (pre-merge, no merge required)
GitHub runs this workflow version + inputs against your branch's code. Leave
pluginsempty to auto-discover every plugin with non-agent evals.Run a single skill (or a few) instead of whole plugins
Pass
skills(comma-separated skill directory names). It matches on the skill folder name — e.g.plugins/dotnet-msbuild/skills/msbuild-server→msbuild-server— and works with or withoutplugins:skillscomposes withplugins: give both to scope to a skill within a plugin; give onlyskillsto let the workflow find it in any discovered plugin.preparewith::error::Requested skill(s) not found …(typo protection) — no wasted matrix cells.skillsempty to evaluate every skill in the selected plugins (default).Why it lives under
evaluation-run.ymlworkflow_dispatchonly registers workflows whose file exists on the default branch.evaluation-run.yml(the reusable Vally eval harness added by #877) already exists onmainand is dispatchable — putting the matrix under that filename makes it runnable via--ref <branch>with no merge. A brand-new filename would 404 on dispatch until merged.Inputs
pluginsskillsmsbuild-server). Works with or withoutpluginsexecutorsopus,gpt,sonnet46,haiku,maigpt53codex(opt-in)runs3workers5shards1timeout_minutes300Compatible with #877 (merged)
#877 (Vally harness migration) is merged to
main. This workflow auto-derives the eval-spec filename fromdotnet-skills.experiment.yaml'sevals:glob, so discovery works whether the repo globseval.yaml(currentmain) oreval.vally.yaml(older branches) — no edit needed. Themodel:/runs:overrides are patched via anchoredsed(leavesjudge_model:untouched; the judge is applied byadapt.mjs --judge-model).Why NOT merge
This file replaces
main's reusableevaluation-run.ymland drops itsworkflow_calltrigger (the path invoked byevaluation.yml's discover / vally-evaluate job). Merging it would break the PR-eval path. This branch carries the dispatch-only matrix under that filename purely so it is dispatchable pre-merge. Keep it as a cherry-pick / dispatch source only.Validation
actionlint(pinned v1.7.7) exits0.tests/tree: single-skill (with/without plugin), multi-skill, no-filter (full plugin = 18 skills), and typo-rejection (::error::+ non-zero exit) all behave correctly.main(78054c116, post-Migrate LLM evals to the Vally harness #877) and smoke-tested run 29874307929 dispatched via--refon this branch:prepare✅, cellgpt--dotnet-nuget✅ (full vally eval +adapt.mjsjudge),summary✅ — proving pre-merge cherry-pick-and-run works end to end against currentmain.