Pin min-threads and env-var ground truth in migrate-dotnet8-to-dotnet9 rubric - #1046
Pin min-threads and env-var ground truth in migrate-dotnet8-to-dotnet9 rubric#1046AbhitejJohn wants to merge 1 commit into
Conversation
…9 rubric
Strengthen two stimulus rubrics so the judge has explicit ground truth for
the .NET 8->9 runtime-configuration change. In .NET 9 environment variables
take precedence over runtimeconfig.json for GC and ThreadPool settings, so
server GC becomes workstation GC, concurrent GC is disabled, and the minimum
ThreadPool thread count drops from 25 to 4. The rubric now states that a
response claiming any of these values are unchanged (for example that min
threads stay at 25) is factually wrong however confidently stated.
Rubric-only by design: deterministic output-matches/output-not-matches graders
were tried and rejected because a regex cannot distinguish a correct answer
that mentions the old value in a negated or past-tense clause ("no longer 25",
"stayed at 25 in .NET 8") from an incorrect answer, so graders would false-fail
correct text. The rubric guides the judge without hard-failing valid answers.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: e23e5efe-713f-4898-a158-8970f70fdcaf
Skill Coverage Report
|
|
/evaluate 30b0125 |
📊 Skill Evaluation Results2 model/skill results across 1 skill and 2 models — ✅ 1 improved, ➖ 1 not proven improved, Measurement identity: evaluated commit Measurement health: 2 expected / 2 observed / 2 written; 0 missing, 0 unexpected, 0 invalid; 0 recovered comparison error slots and 0 unresolved comparison error slots. Objective completion gate: not enabled. Aggregate completion transitions are telemetry only, so this report does not claim that zero objective regressions were proven. A result passes only when the aggregate net win across distinct-stimulus votes is at least 20% and an exact one-sided sign-test result of
ℹ️ How to read this report
➖ Not proven improved — migrate-dotnet8-to-dotnet9 (gpt-5.6-luna)Why: Net win -8.3% (5W/1T/6L over 12 stimulus vote(s), sign test p=0.500), mean preference -13.3% across 12 paired run(s) — no improvement Next action: Inspect tied or lost stimuli and fix inconsistent skill behavior. State: Gate evidence: n=12; 5W/1T/6L; d=11; p=0.500; net -8.3% Overfit: Low (score 0.06) Repeated-run reliability (not used by the gate): 12 paired runs (5W/1T/6L). Weak or warning scenarios:
Illustrative judge evidence:
This is one example, not the aggregate verdict. Open Full Results for every judgment. Routine passing details for 1 result are in Full Results. 🔍 Full Results - all metrics and investigation details
▶ Sessions Visualisation -- interactive replay of all evaluation sessions |
What
Strengthens two stimulus rubrics in
migrate-dotnet8-to-dotnet9/eval.yamlso the judge has explicit ground truth for the .NET 8 -> 9 runtime-configuration change.In .NET 9, environment variables take precedence over
runtimeconfig.jsonfor GC and ThreadPool settings. As a result:The rubric now states that a response claiming any of these values are unchanged (for example, that min threads stay at 25) is factually wrong however confidently it is stated.
Why
In a prior dual-judge run on this exact skill, the two judges split on the "env var precedence reversal" stimulus: the primary judge scored the baseline answer as correct while the second judge scored the treatment answer as correct. The reversal is a factual matter with one right answer. Pinning the ground truth in the rubric gives the judge the fact it needs, which should reduce that kind of split.
Design note: rubric-only, on purpose
Deterministic
output-matches/output-not-matchesgraders were tried and rejected. A regex cannot distinguish a correct answer that mentions the old value in a negated or past-tense clause ("no longer 25", "stayed at 25 in .NET 8") from an incorrect answer, so graders would false-fail correct text on both arms and corrupt the very eval we want to make reliable. The rubric guides the judge without ever hard-failing a valid answer.Scope / blast radius
eng/eval-quality/check_eval_quality.pyexits 0.Verification still needed
The live judge cannot be run locally. A live eval run is needed to confirm the strengthened rubric actually changes the verdict on these stimuli.
/cc @AbhitejJohn