π 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 |
analyzing-dotnet-performance |
FIX-RELIABILITY (P0) |
KEEP-POLISH (keep) |
android-tombstone-symbolication |
FIX-RELIABILITY (P0) |
FIX-REGRESSION (P0, real) |
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-diag
This issue is self-contained: it captures everything a skill author needs to act on the dotnet-diag 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-diag at a glance (portfolio scorecard)
| Plugin |
Skills |
Cells |
Pass |
Impact |
Tie-trials |
Err |
avg ΞTok |
avg ΞTurns |
avg ΞTools |
Headline |
| dotnet-diag |
7 |
35 |
49% |
0.362 |
33 |
2 |
+35,515 |
+0.74 |
+2.50 |
Half-inert (33 ties); regressions in symbolication |
Insights. 7 skill(s); mean impact 0.36; 4/7 help β₯1 frontier model. Exemplars (win incl. frontier): dotnet-trace-collect. Weakest: android-tombstone-symbolication (0.16).
Address first: analyzing-dotnet-performance β reliability; android-tombstone-symbolication β reliability; microbenchmarking β cost.
Address first: android-tombstone-symbolication β regression (reclassified from reliability); microbenchmarking β cost. (analyzing-dotnet-performance reclassified out of P0 β 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 |
dotnet-trace-collect |
4/5 |
Opus, Sonnet, Haiku, MAI |
0.53 |
8 |
8 |
0 |
17 |
97% |
+30,164 |
+1.48 |
+1.6 |
EXEMPLAR Β· β
Template-worthy. What's good: broad (passes 4/5, incl. frontier Opus). Keep as-is; lift its structure (crisp triggers + imperative steps) into weaker siblings. β οΈ Caveat: frontier miss on GPT β confirm it isn't only lifting weaker models on cases frontier already handles. ([frontier-miss]) |
clr-activation-debugging |
2/5 |
Opus, MAI |
0.44 |
2 |
5 |
0 |
6.8 |
94% |
+39,418 |
+1.09 |
+2.36 |
STRENGTHEN Β· π‘ Marginal/mixed (passes 2/5 β Opus, MAI). Diagnosis: model-dependent β helps some families, not others. 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. ([frontier-miss]) |
microbenchmarking |
4/5 |
Opus, GPT, Sonnet, MAI |
0.44 |
1 |
0 |
0 |
1 |
100% |
+237,705 |
+5.6 |
+9.2 |
TRIM-COST Β· π Passes but heavy (+237,705 tok). Value is real; cost isn't justified. Trim: (1) cut redundant/whole-file reads β point to specific sections; (2) replace "explore everything" with a targeted checklist; (3) move deep reference material behind links instead of inlining it. ([costly], [thin-N]) |
dump-collect |
2/5 |
Sonnet, Haiku |
0.37 |
8 |
8 |
0 |
9 |
80% |
+18,779 |
+1.11 |
+1.6 |
STRENGTHEN Β· π‘ Marginal/mixed (passes 2/5 β Sonnet, 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]) |
analyzing-dotnet-performance |
3/5 |
GPT, Haiku, MAI |
0.33 |
7 |
4 |
1 |
9.6 |
96% |
+5,866 |
-0.73 |
+6.33 |
FIX-RELIABILITY Β· π΄ 1 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])
π EDIT (see #909): KEEP-POLISH Β· π’ Solid majority win (3/5 β GPT, Haiku, MAI). The 1 errored trial was a judge-side session.idle timeout (sonnet46), not fixture flakiness. Investigate the Opus miss; minor polish. ([frontier-miss]) |
apple-crash-symbolication |
1/5 |
Sonnet |
0.26 |
5 |
1 |
0 |
2.8 |
67% |
-75,504 |
-3.33 |
-3.37 |
STRENGTHEN Β· π‘ Marginal/mixed (passes 1/5 β Sonnet). 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]) |
android-tombstone-symbolication |
1/5 |
Haiku |
0.16 |
2 |
13 |
1 |
6.6 |
88% |
-7,821 |
-0.08 |
-0.2 |
FIX-RELIABILITY Β· π΄ 1 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], [both-frontier-miss], [frontier-regressed])
π EDIT (see #909): FIX-REGRESSION Β· π΄ Still P0 β but the real problem is regression, not reliability. The 1 errored trial was a judge-side disabled-PAT failure in the mai cell; removing it unmasks losses on both frontier models (Opus, GPT) β cells that had no errored trials (aggregate loss ~39%). Add explicit stop-conditions and narrow the trigger. ([both-frontier-miss], [frontier-regressed]) |
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-diagThis issue is self-contained: it captures everything a skill author needs to act on the
dotnet-diagplugin 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-diagat a glance (portfolio scorecard)Insights. 7 skill(s); mean impact 0.36; 4/7 help β₯1 frontier model. Exemplars (win incl. frontier):
dotnet-trace-collect. Weakest:android-tombstone-symbolication(0.16).Address first:analyzing-dotnet-performanceβ reliability;android-tombstone-symbolicationβ reliability;microbenchmarkingβ cost.Address first:
android-tombstone-symbolicationβ regression (reclassified from reliability);microbenchmarkingβ cost. (analyzing-dotnet-performancereclassified out of P0 β 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
dotnet-trace-collectclr-activation-debuggingmicrobenchmarkingdump-collectanalyzing-dotnet-performanceFIX-RELIABILITY Β· π΄ 1 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])π EDIT (see #909): KEEP-POLISH Β· π’ Solid majority win (3/5 β GPT, Haiku, MAI). The 1 errored trial was a judge-side
session.idletimeout (sonnet46), not fixture flakiness. Investigate the Opus miss; minor polish. ([frontier-miss])apple-crash-symbolicationandroid-tombstone-symbolicationFIX-RELIABILITY Β· π΄ 1 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], [both-frontier-miss], [frontier-regressed])π EDIT (see #909): FIX-REGRESSION Β· π΄ Still P0 β but the real problem is regression, not reliability. The 1 errored trial was a judge-side disabled-PAT failure in the mai cell; removing it unmasks losses on both frontier models (Opus, GPT) β cells that had no errored trials (aggregate loss ~39%). Add explicit stop-conditions and narrow the trigger. ([both-frontier-miss], [frontier-regressed])
Generated 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.