π EDITED 2026-07-19 β correction per #909
This finding has been revised. The errored trials that drove the FIX-RELIABILITY (P0) flag(s) below were shown in #909 to be judge-side infrastructure failures β a disabled/throttled PAT (CAPIError 400 organization disabled) and Vally's session.idle judge timeout β not fixture nondeterminism. Verdict scores already exclude errored trials, so re-running the classifier with those judge errors dropped reclassifies the affected skill(s):
| Skill |
Was |
Now |
migrate-xunit-to-mstest |
FIX-RELIABILITY (P0) |
TRIM-COST (P1) |
Struck-through text below is the superseded finding β in particular the "pin fixture SDK/tool versions" remediation does not apply. The title's P0 count has been updated. No eval re-run is required to correct the scores; recovering the lost judgments (optional) means re-judging those trials, not re-running the skill.
Context β cross-family skill evaluation: dotnet-test-migration
This issue is self-contained: it captures everything a skill author needs to act on the dotnet-test-migration plugin without opening the full report.
What this measures. Every runnable skill in dotnet/skills was run through Vally (0.7) on a cross-family matrix: 5 executor model families β opus-4.8, gpt-5.5, sonnet-4.6, haiku-4.5, mai-flash β each judged by a different family (judge β executor; default judge = latest Opus, or GPT when Opus is the executor). For every skill, a skilled run is compared against a baseline (no-skill) run and scored per executor. This removes single-model and self-judging bias, so a skill that only helps one model family β or only its own family's judge β is visible.
- Data source: cross-family CI grid (run
29228914412 + backfills) β 5 executors Γ 85 runnable skills, 419 scored cells over 84 skills.
- Row grain: one row per skill, aggregated across its (up to 5) executor cells.
avgN is the mean trial count behind the cells (trials 1β17; higher = more statistically trustworthy). thin-N flags directional-only rows.
dotnet-test-migration at a glance (portfolio scorecard)
| Plugin |
Skills |
Cells |
Pass |
Impact |
Tie-trials |
Err |
avg ΞTok |
avg ΞTurns |
avg ΞTools |
Headline |
| dotnet-test-migration |
4 |
20 |
60% |
0.365 |
39 |
3 |
β6,971 |
β1.77 |
β2.69 |
Efficient wins, but high ties + 3 errors |
Insights. 5 skill(s); mean impact 0.36; 3/4 help β₯1 frontier model. Exemplars (win incl. frontier): migrate-vstest-to-mtp, migrate-xunit-to-xunit-v3.
Address first: migrate-xunit-to-mstest β reliability; migrate-mstest-v3-to-v4 β harness drop (no verdict).
Address first: migrate-mstest-v3-to-v4 β harness drop (no verdict); migrate-xunit-to-mstest β cost (P1). (migrate-xunit-to-mstest reclassified from reliability β see EDIT above.)
How to read the table
Each skill is scored skilled vs. baseline on these axes:
| Signal |
Column |
What it means |
Good |
| Breadth |
Families β (n/5) |
How many of the 5 model families the skill helps (per-family pass count, max 5/5) |
4β5 / 5 |
| Where |
Passed on |
Which families passed. Frontier = latest Opus + latest GPT are bold; Sonnet 4.6 / Haiku 4.5 / MAI Flash are mid/low-weight |
frontier β |
| Magnitude |
Impact (β1β¦+1) |
How strongly the judge prefers skilled over baseline |
β₯ 0.4 |
| Decisiveness |
Tiesβ΅ |
Trials where the judge saw no difference β skill is inert |
low |
| Safety |
Lossβ΅ |
Trials where skilled was WORSE than baseline β skill misfires |
~0 |
| Reliability |
Err |
Trials that errored/crashed in setup or judging |
0 |
| Efficiency |
ΞTok / ΞTurns / ΞTools |
Extra tokens / agent turns / tool calls vs baseline |
β€ 0 |
| Confidence |
avgN |
Mean trials behind the verdict; low N = directional only |
β₯ 3 |
| Invocation |
Call% |
Share of skilled trials where the model actually invoked the skill |
~100% |
Families β is cell-level (max 5/5); Tiesβ΅/Lossβ΅ are trial-level tallies summed across all families (including the ones where the skill failed). A high Families β next to non-zero Lossβ΅ is not a contradiction β see Passed on and the Action text for where losses landed.
Action buckets (each skill has one primary action; [flags] note secondary concerns):
| Bucket |
Priority |
Meaning |
| FIX-RELIABILITY |
π΄ P0 |
Errored trials / no verdict β stabilize the harness before trusting the score |
| FIX-DISCOVERY |
π΄ P0 |
Model doesn't invoke it (Call% < 50%) β a triggering/description problem |
| FIX-REGRESSION |
π΄ P0 |
Skilled is worse than baseline on many trials β the skill misfires |
| ADD-DECISIVENESS |
π P1 |
Called ~100% but ties dominate, ~0 impact β inert; needs sharper behavioral steps |
| TRIM-COST |
π P1 |
Passes but with heavy token/turn overhead β trim verbosity |
| EXEMPLAR |
π’ keep |
Broad, strong, reliable win β use as a template |
| EFFICIENT-WIN |
π’ protect |
Wins and cuts turns/tools β the ideal shape |
| KEEP-POLISH |
π’ |
Solid majority win; minor polish + more trials |
| STRENGTHEN |
π‘ P2 |
Marginal/mixed lift β sharpen triggers & success criteria |
Per-skill actions
| Skill |
Families β |
Passed on (frontier bold) |
Impact |
Tiesβ΅ |
Lossβ΅ |
Err |
avgN |
Call% |
ΞTok |
ΞTurns |
ΞTools |
Action |
migrate-vstest-to-mtp |
4/5 |
GPT, Sonnet, Haiku, MAI |
0.55 |
3 |
7 |
0 |
11 |
95% |
-25,612 |
-2.11 |
-3.71 |
EXEMPLAR Β· β
Template-worthy. What's good: broad (passes 4/5, incl. frontier GPT); cheaper (2.11 turns, 3.71 tools, 25,612 tok). Keep as-is; lift its structure (crisp triggers + imperative steps) into weaker siblings. β οΈ Caveat: frontier miss on Opus β confirm it isn't only lifting weaker models on cases frontier already handles. ([frontier-miss], [efficient]) |
migrate-xunit-to-xunit-v3 |
4/5 |
GPT, Sonnet, Haiku, MAI |
0.45 |
11 |
6 |
0 |
12 |
100% |
-68,917 |
-3.22 |
-4.07 |
EXEMPLAR Β· β
Template-worthy. What's good: broad (passes 4/5, incl. frontier GPT); cheaper (3.22 turns, 4.07 tools, 68,917 tok). Keep as-is; lift its structure (crisp triggers + imperative steps) into weaker siblings. β οΈ Caveat: frontier miss on Opus β confirm it isn't only lifting weaker models on cases frontier already handles. ([frontier-miss], [efficient]) |
migrate-xunit-to-mstest |
3/5 |
Opus, Sonnet, Haiku |
0.26 |
15 |
6 |
3 |
11.4 |
100% |
+151,598 |
+2.28 |
+2.81 |
FIX-RELIABILITY Β· π΄ 3 errored trial(s) β verdict can't be trusted until setup is deterministic. This is an infra/harness fix, not a content one: (1) capture the failing trial's stderr; (2) pin tool/SDK versions in the fixture; (3) add a setup smoke-check before scoring. ([reliability], [frontier-miss], [costly])
π EDIT (see #909): TRIM-COST Β· π Passes 3/5 (Opus, Sonnet, Haiku) but heavy (+151,598 tok, +2.28 turns). The 3 errored trials were judge-side session.idle timeouts (gpt Γ2, haiku), not fixture flakiness β the real action is cost-trimming, not harness reliability. ([frontier-miss], [costly]) |
migrate-mstest-v1v2-to-v3 |
1/5 |
Haiku |
0.20 |
10 |
8 |
0 |
8.8 |
93% |
-84,953 |
-4.04 |
-5.82 |
STRENGTHEN Β· π‘ Marginal/mixed (passes 1/5 β Haiku). Diagnosis: mostly ties β too generic/non-prescriptive. Try: (1) sharpen the trigger so it fires only where it wins; (2) add 1β2 opinionated, concrete steps that change behaviour; (3) add trials to separate signal from noise. If frontier models never benefit, scope it explicitly to weaker models or reconsider its value. ([both-frontier-miss]) |
migrate-mstest-v3-to-v4 |
β |
β |
β |
β |
β |
β |
β |
93% |
β |
β |
β |
FIX-RELIABILITY (infra) Β· called 93% of trials but no verdict emitted β judge/scoring-side drop. |
Generated from the cross-family Call-to-Action report (CALL-TO-ACTION.md Β§4βΒ§5; companion IMPACT-ANALYSIS.md). Regenerate the underlying tables with node deep-metrics.mjs "$env:TEMP\cf-ci" agg-ci β node gen-cta-tables.mjs agg-ci. Numbers are directional where avgN is low; treat single-trial cells as hypotheses to confirm with more runs.
Context β cross-family skill evaluation:
dotnet-test-migrationThis issue is self-contained: it captures everything a skill author needs to act on the
dotnet-test-migrationplugin without opening the full report.What this measures. Every runnable skill in
dotnet/skillswas run through Vally (0.7) on a cross-family matrix: 5 executor model families βopus-4.8,gpt-5.5,sonnet-4.6,haiku-4.5,mai-flashβ each judged by a different family (judge β executor; default judge = latest Opus, or GPT when Opus is the executor). For every skill, a skilled run is compared against a baseline (no-skill) run and scored per executor. This removes single-model and self-judging bias, so a skill that only helps one model family β or only its own family's judge β is visible.29228914412+ backfills) β 5 executors Γ 85 runnable skills, 419 scored cells over 84 skills.avgNis the mean trial count behind the cells (trials 1β17; higher = more statistically trustworthy).thin-Nflags directional-only rows.dotnet-test-migrationat a glance (portfolio scorecard)Insights. 5 skill(s); mean impact 0.36; 3/4 help β₯1 frontier model. Exemplars (win incl. frontier):
migrate-vstest-to-mtp,migrate-xunit-to-xunit-v3.Address first:migrate-xunit-to-mstestβ reliability;migrate-mstest-v3-to-v4β harness drop (no verdict).Address first:
migrate-mstest-v3-to-v4β harness drop (no verdict);migrate-xunit-to-mstestβ cost (P1). (migrate-xunit-to-mstestreclassified from reliability β see EDIT above.)How to read the table
Each skill is scored skilled vs. baseline on these axes:
Families β(n/5)5/5)Passed onImpact(β1β¦+1)Tiesβ΅Lossβ΅ErrΞTok/ΞTurns/ΞToolsavgNCall%Action buckets (each skill has one primary action;
[flags]note secondary concerns):Call% < 50%) β a triggering/description problemPer-skill actions
migrate-vstest-to-mtpmigrate-xunit-to-xunit-v3migrate-xunit-to-mstestFIX-RELIABILITY Β· π΄ 3 errored trial(s) β verdict can't be trusted until setup is deterministic. This is an infra/harness fix, not a content one: (1) capture the failing trial's stderr; (2) pin tool/SDK versions in the fixture; (3) add a setup smoke-check before scoring. ([reliability], [frontier-miss], [costly])π EDIT (see #909): TRIM-COST Β· π Passes 3/5 (Opus, Sonnet, Haiku) but heavy (+151,598 tok, +2.28 turns). The 3 errored trials were judge-side
session.idletimeouts (gpt Γ2, haiku), not fixture flakiness β the real action is cost-trimming, not harness reliability. ([frontier-miss], [costly])migrate-mstest-v1v2-to-v3migrate-mstest-v3-to-v4Generated from the cross-family Call-to-Action report (
CALL-TO-ACTION.mdΒ§4βΒ§5; companionIMPACT-ANALYSIS.md). Regenerate the underlying tables withnode deep-metrics.mjs "$env:TEMP\cf-ci" agg-ciβnode gen-cta-tables.mjs agg-ci. Numbers are directional whereavgNis low; treat single-trial cells as hypotheses to confirm with more runs.