Skip to content

Separate dormancy evidence and improve affected evals - #1079

Merged
Evangelink merged 9 commits into
mainfrom
dev/amauryleve/dormancy-preference-isolation
Aug 28, 2026
Merged

Separate dormancy evidence and improve affected evals#1079
Evangelink merged 9 commits into
mainfrom
dev/amauryleve/dormancy-preference-isolation

Conversation

@Evangelink

@Evangelink Evangelink commented Aug 27, 2026

Copy link
Copy Markdown
Member

Summary

Correctly dormant skilled arms are intentionally behaviorally equivalent to baseline, so their paired preference is a tie or judge noise by construction. Those scenarios were still voting in the exact sign test and could turn a valid skill improvement into a random preference loss.

This change introduces adapter schema version 4:

  • expect_activation: false scenarios remain fully retained in raw trials, judge evidence, retry/error and pairing integrity, comparisonTrialEvidence, and completionTransitions, but are excluded from signTest, netWin, and stimulusVoteCount.
  • excludedScenarioEvidence and per-scenario preference eligibility make the exclusion explicit rather than silently dropping evidence.
  • activationContract evaluates explicit dormancy against isolated target-skill activation. Unexpected activation blocks a pass and is reported distinctly; plugin activity remains diagnostic because it cannot identify the emitting skill.
  • Eval-quality power checks count preference-eligible stimuli only and report dormancy-contract counts separately.
  • PR reporting, dashboard data/rendering, authoring skills, and investigation guidance explain the preference/activation split.

Evaluation-informed skill fixes

The first complete schema-v4 run produced 48 model/skill results: 24 improved, 20 measured but not proven improved, and 4 activation-contract failures. There were no invalid, underpowered, or preference-regression results. The follow-up reads the exact losing trial evidence and addresses all 16 unique non-passing skills without adding repeated runs or weakening graders.

  • Activation boundaries: coverage-analysis now defers single named method/class/file CRAP work to crap-score; generate-testability-wrappers stays dormant when code already consumes an interface or built-in abstraction.
  • Analysis quality: assertion-quality, detect-static-dependencies, test-anti-patterns, test-gap-analysis, and test-smell-detection now enforce precise matcher semantics, reconciled occurrence counts, coherent severity/counting, complete branch/exception inventories, canonical mutation verification, and clean-framework stop conditions.
  • Execution and testability: migrate-static-to-wrapper, platform-detection, run-tests, scaffold-dotnet-test-project, testability-obstacle, and writing-mstest-tests now preserve clock-read semantics, distinguish runner selection from command integration, use correct MTP/VSTest syntax, validate the exact requested tree, require executed seam tests, and use version-correct MSTest assertions/cancellation APIs.
  • Framework migrations: migrate-mstest-v3-to-v4, migrate-xunit-to-mstest, and migrate-xunit-to-xunit-v3 now resolve package versions, preserve VSTest/MTP intentionally, verify no-op migrations, retain parallelization and base-class behavior, and avoid unrelated file or version changes.
  • Eval strengthening: existing xUnit migration stimuli now verify effective runner configuration, inherited base calls, byte-for-byte no-op behavior, and actual test execution. No new stimuli or runs were added.

Internal rubber-duck and code-review passes identified and drove corrections for MTP-to-MSTest translation, transitive Test.Sdk handling, no-op package-only detection, alternate MSBuild property locations, parameter-name-independent graders, TestContext.CancellationToken availability, and mechanical-versus-behavioral clock guidance.

Compatibility and migration

  • Existing eval YAML needs no migration; expect_activation: false automatically opts into activation-contract-only evidence.
  • In schema version 4, legacy top-level aliases (wins, ties, losses, winRate, stimulusVoteCount, and trialCount) mean preference-eligible evidence. Consumers needing an all-stimulus view should combine scenarioEvidence with excludedScenarioEvidence, or read scenarios[] / comparisonTrialEvidence.
  • Historical schema-version-3 dashboard data remains readable with its original all-stimulus semantics.
  • Current non-agent dormancy evals retain at least five preference-eligible stimuli, so this creates no new underpowered allowlist debt.
  • Skill/eval follow-up changes use the existing Vally schema and existing stimulus set; they require no consumer migration.

Related issue

N/A

Validation

  • node --test eng\vally-adapter\adapt.test.mjs eng\vally-adapter\consolidate.test.mjs eng\vally-adapter\retry-executor-timeouts.test.mjs eng\dashboard\dashboard-freshness.test.js — 72 passed
  • python eng\eval-quality\selftest_eval_quality.py — 27 passed
  • python eng\eval-quality\check_eval_quality.py — 98 specs checked, no errors
  • dotnet run --project eng\skill-validator\src\SkillValidator.csproj -p:CopilotSkipCliDownload=true -- check --plugin .\plugins\dotnet-test — passed
  • dotnet run --project eng\skill-validator\src\SkillValidator.csproj -p:CopilotSkipCliDownload=true -- check --plugin .\plugins\dotnet-test-migration — passed
  • Focused effective-MSBuild-property and no-op file-integrity grader checks passed
  • git diff --check passed
  • Two rubber-duck/code-review rounds completed; all material findings were incorporated

Checklist

  • I searched existing issues and pull requests to avoid duplicates.
  • I kept this pull request focused and avoided unrelated refactors.
  • I added or updated tests, evals, or documentation when changing skill or agent behavior.
  • I updated CODEOWNERS when adding or moving owned content.
  • I updated all marketplace manifests when plugin metadata changed.
  • I updated eng/known-domains.txt for any new external domains referenced by skill content.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot AI lite review requested due to automatic review settings August 27, 2026 10:29

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates the Vally adapter and related tooling/docs to treat expect_activation: false scenarios as activation-contract evidence (dormancy must hold) while excluding them from preference-gate evidence (sign test / net win), introducing adapter schema version 4 and propagating the new semantics through reporting, dashboards, and eval-quality checks.

Changes:

  • Introduces schema v4 evidence split: retains dormancy scenarios as excludedScenarioEvidence and enforces an activationContract, while excluding them from signTest, netWin, and stimulus vote counts.
  • Updates reporting/rendering (PR comment consolidation + dashboard) to surface dormancy exclusions and activation-contract failures distinctly.
  • Updates eval-quality power checks, self-tests, and repository guidance to define “≥5 stimuli” as preference-eligible stimuli, with dormancy counted separately.
Show a summary per file
File Description
eng/vally-adapter/README.md Documents schema v4’s preference-vs-activation split and updated decision rule.
eng/vally-adapter/InvestigatingResults.md Updates triage guidance and schema field semantics for activation contracts and excluded evidence.
eng/vally-adapter/consolidate.test.mjs Adds coverage for separate reporting of dormancy exclusions vs activation-contract failures.
eng/vally-adapter/consolidate.mjs Renders activation-contract failure status, shows dormancy exclusion counts, and annotates scenario preference eligibility.
eng/vally-adapter/adapt.test.mjs Adds tests for dormancy YAML parsing and for schema v4 preference exclusion + activation-contract gating behavior.
eng/vally-adapter/adapt.mjs Implements schema v4 evidence model: preference-eligible vote set, excludedScenarioEvidence, activationContract, and updated gating.
eng/eval-quality/selftest_eval_quality.py Adds a self-test ensuring dormancy evidence does not satisfy the preference floor.
eng/eval-quality/README.md Updates dormancy guidance and the “≥5 stimuli” rationale to preference-eligible stimuli.
eng/eval-quality/check_eval_quality.py Adjusts power checks and reporting to count preference stimuli vs dormancy contracts separately.
eng/dashboard/generate-benchmark-data.ps1 Extends benchmark JSON to include dormancy exclusion count and activationContract; annotates scenario eligibility.
eng/dashboard/dashboard.js Updates UI wording/logic for preference-eligible votes, dormancy exclusions, and activation-contract failures.
CONTRIBUTING.md Updates contributor guidance to define dormancy as an activation contract and to clarify preference floor semantics.
.agents/skills/improve-skill-quality/SKILL.md Updates skill-triage guidance for schema v4 dormancy and preference handling.
.agents/skills/improve-skill-quality/references/eval-triage.md Updates reference triage table to reflect schema v4 evidence split and recommended interpretation.
.agents/skills/create-skill-test/SKILL.md Updates eval-authoring guidance for dormancy contracts and preference-eligible stimulus floor.

Review details

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

  • Files reviewed: 15/15 changed files
  • Comments generated: 1
  • Review effort level: Lite

Comment thread eng/dashboard/generate-benchmark-data.ps1
@Evangelink
Evangelink enabled auto-merge (squash) August 27, 2026 11:32
Default scenarios without schema v4 preference eligibility metadata to eligible so historical schema v3 records remain consistent with their original gate evidence.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 808c8105-e596-42c6-9dca-4c62cfcd490f
Copilot AI review requested due to automatic review settings August 27, 2026 11:35

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review details

Suppressed comments (2)

Previously missed (1) — in code that hasn't changed since the last review.

eng/vally-adapter/consolidate.mjs:293

  • resultLabel() checks isIndeterminate() (which treats underpowered: true as indeterminate) before hasActivationContractFailure(). If an activation contract fails while preference is underpowered (a state the adapter explicitly produces), this will display as “⚠️ Underpowered” instead of “⛔ Activation contract failed”.

This issue also appears on line 406 of the same file.

  }
  if (verdictState(verdict) === STATE.PASS) return "✅ Improved";
  if (isObjectiveRegression(verdict)) return "🔻 Objective regression";
  if (hasActivationContractFailure(verdict)) return "⛔ Activation contract failed";
  if (isPreferenceRegression(verdict)) return "📉 Preference loss (report only)";

eng/vally-adapter/consolidate.mjs:410

  • activationContractFailureCount excludes indeterminate verdicts, but verdictState() marks underpowered: true as indeterminate. That means activation-contract failures that are also preference-underpowered (which the adapter can emit) get counted as underpowered/invalid instead of as activation-contract failures.
const activationContractFailureCount = verdicts.filter(
  (verdict) => !isIndeterminate(verdict)
    && !isObjectiveRegression(verdict)
    && hasActivationContractFailure(verdict),
).length;
  • Files reviewed: 15/15 changed files
  • Comments generated: 0 new
  • Review effort level: Lite

Exercise the combined activation-contract failure and underpowered preference state so consolidation keeps the routing failure as the headline result.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 808c8105-e596-42c6-9dca-4c62cfcd490f
Copilot AI review requested due to automatic review settings August 27, 2026 11:42

@Evangelink Evangelink left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

/evaluate f8329e8

@github-actions github-actions Bot added the pr-state/ready-for-eval PR is mergeable and awaiting evaluation label Aug 27, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review details

Suppressed comments (1)

Previously missed (1) — in code that hasn't changed since the last review.

eng/vally-adapter/consolidate.mjs:462

  • The summary line always prints "activation contract failures" even when the count is 1 ("1 activation contract failures"), which is a user-facing grammatical error. Use the existing countNoun() helper here so the noun pluralizes correctly.
  + `⛔ **${activationContractFailureCount} activation contract failures**, `
  • Files reviewed: 15/15 changed files
  • Comments generated: 0 new
  • Review effort level: Lite

github-actions Bot added a commit that referenced this pull request Aug 27, 2026
@github-actions

Copy link
Copy Markdown
Contributor

❌ Evaluation did not complete successfully (the evaluate job reported failure). Check the workflow run logs, then comment /evaluate f8329e8293a8fc62c41582d23fd943ddc1c38555 to retry this exact commit.

12 partial result file(s) were preserved for diagnosis but were not consolidated because the full matrix did not complete.

Resolve the Vally adapter README conflict by preserving executor timeout retry and dormancy activation-contract guidance in the combined decision flow.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 808c8105-e596-42c6-9dca-4c62cfcd490f
Copilot AI review requested due to automatic review settings August 27, 2026 12:50

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review details

  • Files reviewed: 15/15 changed files
  • Comments generated: 1
  • Review effort level: Lite

Comment thread eng/vally-adapter/adapt.mjs Outdated
Require complete YAML false tokens so prefix values cannot alter preference eligibility, and keep activation-contract summary grammar correct.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 808c8105-e596-42c6-9dca-4c62cfcd490f
@Evangelink

Copy link
Copy Markdown
Member Author

/evaluate 86ab860

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review details

  • Files reviewed: 34/34 changed files
  • Comments generated: 0 new
  • Review effort level: Lite

@github-actions github-actions Bot added pr-state/ready-for-eval PR is mergeable and awaiting evaluation and removed pr-state/evals-in-progress PR evaluations are in progress labels Aug 27, 2026

@AbhitejJohn AbhitejJohn left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Blocking correctness fixes are required before merge. Schema v4 makes dormancy parsing and reporting gate-critical, but the parser still has silent fail-open forms and one report path quotes evidence that the gate excludes. The new xUnit migration grader also rejects valid MSBuild Boolean casing. Each inline comment gives a concrete failure case and fix.

Comment thread eng/vally-adapter/adapt.mjs Outdated
Comment thread eng/vally-adapter/adapt.mjs
Comment thread eng/vally-adapter/consolidate.mjs
Comment thread tests/dotnet-test-migration/migrate-xunit-to-xunit-v3/eval.yaml Outdated
@AbhitejJohn

Copy link
Copy Markdown
Collaborator

There is one additional reporting regression in the per-shard job summary at .github/workflows/evaluation-run.yml:926-985.

Schema v4 changes the result semantics, but this summary still uses the schema-v3 presentation:

  • The header says every distinct stimulus gives one gate vote. Dormancy stimuli are now retained but excluded from the preference gate.
  • The icon/label logic uses STATE and PREFERENCE_REGRESSED only. An activation-contract failure has STATE=VALID_NO_CHANGE and PREFERENCE_REGRESSED=false, so the summary renders it as ➖ Not proven improved instead of the distinct ⛔ Activation contract failed result shown by the adapter, consolidated PR report, and dashboard.
  • The scenario table does not show preference eligibility, so a dormancy row can display a win/tie/loss without telling the reader that it did not vote in the preference gate.

The verdict and merge-gate calculation remain correct; this regression affects the shard summary's observability and can send an investigator toward preference quality instead of the real routing violation.

Please update this summary to use the v4 terminology, render stateReason.code == "activation_contract_failed" as a blocking result, and add a preference-eligibility column consistent with consolidate.mjs.

Match PyYAML dormancy parsing, preserve unmatched annotations, prioritize gate-eligible report evidence, and make the MTP Boolean grader exact without case sensitivity.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 808c8105-e596-42c6-9dca-4c62cfcd490f
Copilot AI review requested due to automatic review settings August 27, 2026 21:01
@github-actions

Copy link
Copy Markdown
Contributor

Skill Coverage Report

Plugin Skill Covered Coverage
dotnet-test-migration migrate-mstest-v3-to-v4 39/40 97.5%
dotnet-test-migration migrate-xunit-to-mstest 0/1 0%
dotnet-test-migration migrate-xunit-to-xunit-v3 15/16 93.8%
dotnet-test assertion-quality 23/24 95.8%
dotnet-test detect-static-dependencies 25/25 100%
dotnet-test generate-testability-wrappers 27/28 96.4%
dotnet-test migrate-static-to-wrapper 31/34 91.2%
dotnet-test test-anti-patterns 28/28 100%
⚠️ dotnet-test test-gap-analysis 5/8 62.5%
⚠️ dotnet-test testability-obstacle 16/27 59.3%
dotnet-test writing-mstest-tests 38/47 80.9%
Uncovered: dotnet-test-migration/migrate-mstest-v3-to-v4
  • [CodePattern] [Timeout] (line 203)
Uncovered: dotnet-test-migration/migrate-xunit-to-mstest
  • [CodePattern] Parallelize (line 134)
Uncovered: dotnet-test-migration/migrate-xunit-to-xunit-v3
  • [CodePattern] sealed (line 134)
Uncovered: dotnet-test/assertion-quality
  • [Validation] Jest matcher semantics are precise (toBeDefined versus undefined; (line 179)
Uncovered: dotnet-test/generate-testability-wrappers
  • [Pitfall] Treating "no DI package" as "must be ambient" (line 335)
Uncovered: dotnet-test/migrate-static-to-wrapper
  • [Validation] A before/after exact-member search proves the in-scope occurrence count (line 254)
  • [Validation] Static reads were replaced one-for-one; none were hoisted, cached, or coalesced (line 267)
  • [CodePattern] sealed (line 127)
Uncovered: dotnet-test/test-gap-analysis
  • [Validation] Scope stayed proportional to the request (line 240)
  • [Validation] Recommendations target only demonstrated gaps (line 245)
  • [Validation] Every public entry-point branch and each accepted exception type in scope (line 246)
Uncovered: dotnet-test/testability-obstacle
  • [Validation] The original obstacle was concrete and in the requested path. (line 271)
  • [Validation] An existing seam was reused when available. (line 272)
  • [Validation] The new abstraction exposes only members required by the target behavior. (line 273)
  • [Validation] Production defaults still delegate to the original dependency. (line 274)
  • [Pitfall] Wrapping an entire static API (line 285)
  • [Pitfall] Adding DI to a library with no container (line 288)
  • [CodePattern] sealed (line 118)
  • [CodePattern] Assert.Throws (line 160)
  • [CodePattern] Assert.True (line 160)
  • [CodePattern] readonly (line 118)
  • [CodePattern] Assert.False (line 160)
Uncovered: dotnet-test/writing-mstest-tests
  • [CodePattern] Assert.IsInRange (line 298)
  • [CodePattern] Assert.IsNotEmpty (line 233)
  • [CodePattern] [DataRow] (line 308)
  • [CodePattern] [TestMethod] (line 155)
  • [CodePattern] Assert.AreEqual (line 155)
  • [CodePattern] Assert.Contains (line 233)
  • [CodePattern] readonly (line 368)
  • [CodePattern] [TestClass] (line 155)
  • [CodePattern] TestDataRow (line 352)

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

Review tier: Lite
Findings: None

github-actions Bot added a commit that referenced this pull request Aug 27, 2026
@github-actions

Copy link
Copy Markdown
Contributor

❌ Evaluation did not complete successfully (the evaluate job reported failure). Check the workflow run logs, then comment /evaluate 86ab860b1e8abf5585499a340ef53eddb9131749 to retry this exact commit.

31 partial result file(s) were preserved for diagnosis but were not consolidated because the full matrix did not complete.

@Evangelink

Copy link
Copy Markdown
Member Author

/evaluate 47bbc32

github-actions Bot added a commit that referenced this pull request Aug 27, 2026
@github-actions

Copy link
Copy Markdown
Contributor

📊 Skill Evaluation Results

32 model/skill results across 16 skills and 2 models — ✅ 17 improved, ➖ 15 not proven improved, ⚠️ 0 invalid or underpowered, 📉 0 preference losses (report only).

Measurement identity: evaluated commit 86ab860b1e8abf5585499a340ef53eddb9131749; 2 judge models.

Measurement health: 32 expected / 32 observed / 32 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 p ≤ 0.05. Repeated runs measure reliability only.

Skill Model Verdict Gate evidence Overfit Warnings Next action
assertion-quality claude-sonnet-4.6 ✅ Improved n=8; 7W/1T/0L; d=7; p=0.008; net +87.5% 🟡 0.25 Review overfit evidence.
assertion-quality gpt-5.6-luna ✅ Improved n=8; 6W/2T/0L; d=6; p=0.016; net +75.0% ✅ 0.09 None.
coverage-analysis claude-sonnet-4.6 ➖ Not proven improved n=13; 4W/7T/2L; d=6; p=0.344; net +15.4% 🟡 0.31 Inspect tied or lost stimuli and fix inconsistent skill behavior.
coverage-analysis gpt-5.6-luna ➖ Not proven improved n=13; 6W/5T/2L; d=8; p=0.145; net +30.8% ✅ 0.13 Inspect tied or lost stimuli and fix inconsistent skill behavior.
detect-static-dependencies claude-sonnet-4.6 ✅ Improved n=8; 7W/1T/0L; d=7; p=0.008; net +87.5% 🟡 0.34 Review overfit evidence.
detect-static-dependencies gpt-5.6-luna ✅ Improved n=8; 5W/3T/0L; d=5; p=0.031; net +62.5% ✅ 0.19 None.
generate-testability-wrappers claude-sonnet-4.6 ➖ Not proven improved n=8; 6W/1T/1L; d=7; p=0.063; net +62.5% 🟡 0.41 Inspect tied or lost stimuli and fix inconsistent skill behavior.
generate-testability-wrappers gpt-5.6-luna ✅ Improved n=8; 7W/1T/0L; d=7; p=0.008; net +87.5% ✅ 0.16 None.
migrate-mstest-v3-to-v4 claude-sonnet-4.6 ✅ Improved n=15; 13W/0T/2L; d=15; p=0.004; net +73.3% 🟡 0.39 Activation: isolated 15/15; plugin 14/15 Fix activation gaps; Review overfit evidence.
migrate-mstest-v3-to-v4 gpt-5.6-luna ✅ Improved n=15; 9W/4T/2L; d=11; p=0.033; net +46.7% 🟡 0.24 Review overfit evidence.
migrate-static-to-wrapper claude-sonnet-4.6 ➖ Not proven improved n=9; 5W/2T/2L; d=7; p=0.227; net +33.3% 🟡 0.27 Activation: isolated 9/9; plugin 7/9 Inspect tied or lost stimuli and fix inconsistent skill behavior.
migrate-static-to-wrapper gpt-5.6-luna ➖ Not proven improved n=9; 4W/5T/0L; d=4; p=0.063; net +44.4% ✅ 0.15 Inspect tied or lost stimuli; predeclare added breadth before a new experiment.
migrate-xunit-to-mstest claude-sonnet-4.6 ✅ Improved n=13; 11W/0T/2L; d=13; p=0.011; net +69.2% 🟡 0.37 Review overfit evidence.
migrate-xunit-to-mstest gpt-5.6-luna ➖ Not proven improved n=13; 5W/6T/2L; d=7; p=0.227; net +23.1% ✅ 0.14 Inspect tied or lost stimuli and fix inconsistent skill behavior.
migrate-xunit-to-xunit-v3 claude-sonnet-4.6 ✅ Improved n=12; 12W/0T/0L; d=12; p=0.000; net +100.0% 🟡 0.21 Review overfit evidence.
migrate-xunit-to-xunit-v3 gpt-5.6-luna ➖ Not proven improved n=12; 4W/5T/3L; d=7; p=0.500; net +8.3% ✅ 0.11 Inspect tied or lost stimuli and fix inconsistent skill behavior.
platform-detection claude-sonnet-4.6 ✅ Improved n=15; 10W/3T/2L; d=12; p=0.019; net +53.3% 🟡 0.32 Review overfit evidence.
platform-detection gpt-5.6-luna ➖ Not proven improved n=15; 4W/9T/2L; d=6; p=0.344; net +13.3% ✅ 0.19 Inspect tied or lost stimuli and fix inconsistent skill behavior.
run-tests claude-sonnet-4.6 ✅ Improved n=20; 12W/5T/3L; d=15; p=0.018; net +45.0% 🟡 0.37 Review overfit evidence.
run-tests gpt-5.6-luna ✅ Improved n=20; 10W/8T/2L; d=12; p=0.019; net +40.0% 🟡 0.27 Activation: isolated 18/20; plugin 19/20 Fix activation gaps; Review overfit evidence.
scaffold-dotnet-test-project claude-sonnet-4.6 ➖ Not proven improved n=9; 6W/2T/1L; d=7; p=0.063; net +55.6% ✅ 0.17 Activation: isolated 7/9; plugin 6/9 Inspect tied or lost stimuli and fix inconsistent skill behavior.
scaffold-dotnet-test-project gpt-5.6-luna ✅ Improved n=9; 7W/2T/0L; d=7; p=0.008; net +77.8% ✅ 0.05 None.
test-anti-patterns claude-sonnet-4.6 ➖ Not proven improved n=9; 5W/3T/1L; d=6; p=0.109; net +44.4% 🟡 0.26 Inspect tied or lost stimuli and fix inconsistent skill behavior.
test-anti-patterns gpt-5.6-luna ➖ Not proven improved n=9; 7W/0T/2L; d=9; p=0.090; net +55.6% ✅ 0.06 Inspect tied or lost stimuli and fix inconsistent skill behavior.
test-gap-analysis claude-sonnet-4.6 ➖ Not proven improved n=9; 4W/4T/1L; d=5; p=0.188; net +33.3% 🟡 0.35 Inspect tied or lost stimuli and fix inconsistent skill behavior.
test-gap-analysis gpt-5.6-luna ➖ Not proven improved n=9; 5W/3T/1L; d=6; p=0.109; net +44.4% ✅ 0.12 Inspect tied or lost stimuli and fix inconsistent skill behavior.
test-smell-detection claude-sonnet-4.6 ✅ Improved n=10; 8W/1T/1L; d=9; p=0.020; net +70.0% 🟡 0.26 Review overfit evidence.
test-smell-detection gpt-5.6-luna ➖ Not proven improved n=10; 7W/1T/2L; d=9; p=0.090; net +50.0% 🟡 0.29 Inspect tied or lost stimuli and fix inconsistent skill behavior.
testability-obstacle claude-sonnet-4.6 ➖ Not proven improved n=8; 6W/1T/1L; d=7; p=0.063; net +62.5% 🔴 0.62 Inspect tied or lost stimuli and fix inconsistent skill behavior.
testability-obstacle gpt-5.6-luna ✅ Improved n=8; 5W/3T/0L; d=5; p=0.031; net +62.5% 🟡 0.25 Review overfit evidence.
writing-mstest-tests claude-sonnet-4.6 ✅ Improved n=14; 11W/2T/1L; d=12; p=0.003; net +71.4% 🟡 0.45 Review overfit evidence.
writing-mstest-tests gpt-5.6-luna ✅ Improved n=14; 8W/5T/1L; d=9; p=0.020; net +50.0% ✅ 0.17 None.
ℹ️ How to read this report
  • ✅ Improved — the result passed both the statistical gate and the 20% practical net-win floor.
  • ➖ Not proven improved — the result is valid but did not pass both gates. This is not automatically a regression.
  • ⚠️ Invalid / underpowered — the gate withheld a quality verdict. Fix the measurement before judging the skill.
  • 📉 Preference loss — the LLM judge credibly preferred baseline. It is report-only, not objective completion proof.
  • Gate evidencen distinct-stimulus votes, W/T/L stimulus votes, d discordant votes, exact one-sided p, and net win. The p value applies to one model/skill result; no matrix-wide multiple-comparison correction is applied.
  • Overfit — overfitting-judge severity (✅ Low, 🟡 Moderate, 🔴 High, — none) and score.
  • Warnings — activation, timeout, retry recovery, or unresolved comparison conditions that need attention.
  • Do not add repeated runs to increase statistical power. Do not add stimuli after seeing a near-pass unless the new breadth is predeclared for a new experiment.
➖ Not proven improved — coverage-analysis (claude-sonnet-4.6)

Why: Net win +15.4% (4W/7T/2L over 13 stimulus vote(s), sign test p=0.344), mean preference +16.9% across 26 paired run(s) — not credible (sign test p=0.344 > 0.05)

Next action: Inspect tied or lost stimuli and fix inconsistent skill behavior.

State: VALID_NO_CHANGE (no_credible_preference_change)

Gate evidence: n=13; 4W/7T/2L; d=6; p=0.344; net +15.4%

Overfit: Moderate (score 0.31)

Repeated-run reliability (not used by the gate): 26 paired runs (12W/7T/7L).

Weak or warning scenarios:

Scenario Net win Δ Pref Runs (W/T/L)
= Analyse a CI Cobertura report without re-running tests or installing tools +0.0% +0.0% 1/0/1
= Coverage plateau diagnosis +0.0% +0.0% 1/0/1
▼ Keep MTP coverage arguments behind the separator in SDK 10 VSTest mode -50.0% -20.0% 0/1/1
= Project-wide coverage analysis with existing Cobertura data +0.0% +30.0% 1/0/1
= Reconcile a coverage target spread across several members +0.0% +0.0% 1/0/1
= Refactoring safety assessment from coverage data +0.0% +0.0% 0/2/0
= Run coverage from scratch without existing data +0.0% +30.0% 1/0/1
= Stay dormant for one-member CRAP analysis +0.0% +0.0% 0/2/0
▼ Stay dormant for test trait distribution -50.0% -20.0% 0/1/1

Illustrative judge evidence:

  • Analyse a CI Cobertura report without re-running tests or installing tools: Both satisfy the core operational constraints and identify the same appropriate priorities, but A is more concise and avoids B's clear impossible uncovered-line arithmetic claim. B's CRAP table is useful context but does not outweigh that factual error.

This is one example, not the aggregate verdict. Open Full Results for every judgment.

➖ Not proven improved — coverage-analysis (gpt-5.6-luna)

Why: Net win +30.8% (6W/5T/2L over 13 stimulus vote(s), sign test p=0.145), mean preference +9.2% across 26 paired run(s) — not credible (sign test p=0.145 > 0.05)

Next action: Inspect tied or lost stimuli and fix inconsistent skill behavior.

State: VALID_NO_CHANGE (no_credible_preference_change)

Gate evidence: n=13; 6W/5T/2L; d=8; p=0.145; net +30.8%

Overfit: Low (score 0.13)

Repeated-run reliability (not used by the gate): 26 paired runs (9W/14T/3L).

Weak or warning scenarios:

Scenario Net win Δ Pref Runs (W/T/L)
▼ Distinguish partially covered branches from covered lines -50.0% -20.0% 0/1/1
= Project-wide coverage analysis with existing Cobertura data +0.0% +0.0% 0/2/0
▼ Reconcile a coverage target spread across several members -50.0% -20.0% 0/1/1
= Stay dormant for behavioral gap analysis +0.0% +0.0% 0/2/0
= Stay dormant for one-member CRAP analysis +0.0% +0.0% 0/2/0
= Stay dormant for static source-to-test pairing +0.0% +0.0% 1/0/1
= Stay dormant for test trait distribution +0.0% +0.0% 0/2/0

Illustrative judge evidence:

  • Distinguish partially covered branches from covered lines: Both responses are accurate, avoid inventing predicates, and correctly cover all five criteria. A is slightly more thorough in explicitly addressing why line coverage overstates confidence and gives more concrete examples of branch outcomes for CalculateGpa (if/else, boundary,...

This is one example, not the aggregate verdict. Open Full Results for every judgment.

➖ Not proven improved — generate-testability-wrappers (claude-sonnet-4.6)

Why: Net win +62.5% (6W/1T/1L over 8 stimulus vote(s), sign test p=0.063), mean preference +40.0% across 24 paired run(s) — not credible (sign test p=0.063 > 0.05)

Next action: Inspect tied or lost stimuli and fix inconsistent skill behavior.

State: VALID_NO_CHANGE (no_credible_preference_change)

Gate evidence: n=8; 6W/1T/1L; d=7; p=0.063; net +62.5%

Overfit: Moderate (score 0.41)

Repeated-run reliability (not used by the gate): 24 paired runs (17W/5T/2L).

Weak or warning scenarios:

Scenario Net win Δ Pref Runs (W/T/L)
▼ Adopt IHttpClientFactory instead of wrapping HttpClient -33.3% -13.3% 0/2/1
= Generate custom Environment wrapper +0.0% -20.0% 1/1/1

Illustrative judge evidence:

  • Adopt IHttpClientFactory instead of wrapping HttpClient: The implementations are substantively the same and correct, including recovery from the missing Microsoft.Extensions.Http package. A is marginally stronger as a final response because it supplies concrete fake-handler and test-wiring code rather than only describing that setup.

This is one example, not the aggregate verdict. Open Full Results for every judgment.

➖ Not proven improved — migrate-static-to-wrapper (claude-sonnet-4.6)

Why: Net win +33.3% (5W/2T/2L over 9 stimulus vote(s), sign test p=0.227), mean preference +26.7% across 9 paired run(s) — not credible (sign test p=0.227 > 0.05)

Next action: Inspect tied or lost stimuli and fix inconsistent skill behavior.

State: VALID_NO_CHANGE (no_credible_preference_change)

Gate evidence: n=9; 5W/2T/2L; d=7; p=0.227; net +33.3%

Warnings: Activation: isolated 9/9; plugin 7/9

Overfit: Moderate (score 0.27)

Repeated-run reliability (not used by the gate): 9 paired runs (5W/2T/2L).

Weak or warning scenarios:

Scenario Net win Δ Pref Runs (W/T/L)
= Migrate DateTime.UtcNow to TimeProvider in a service class +0.0% +0.0% 0/1/0
▼ Migrate a static helper class without breaking its callers -100.0% -40.0% 0/0/1
▼ Migrate environment access to an existing reader and update tests -100.0% -40.0% 0/0/1
= Preserve DateTimeOffset values during TimeProvider migration +0.0% +0.0% 0/1/0

Illustrative judge evidence:

  • Migrate DateTime.UtcNow to TimeProvider in a service class: Position-swap inconsistent (forward: B, reverse: tie). Defaulting to tie.

This is one example, not the aggregate verdict. Open Full Results for every judgment.

➖ Not proven improved — migrate-static-to-wrapper (gpt-5.6-luna)

Why: Net win +44.4% (4W/5T/0L over 9 stimulus vote(s), sign test p=0.063), mean preference +24.4% across 9 paired run(s) — not credible — 5 of 9 stimulus vote(s) tied, leaving only 4 discordant stimulus vote(s). The sign test conditions on non-tie stimulus votes and cannot reach 0.05 below 5, so no record could have passed here — this is not a measured null. Either the skill is inert on these scenarios (make them discriminate) or the eval needs more distinct stimuli to clear the ties

Next action: Inspect tied or lost stimuli; predeclare added breadth before a new experiment.

State: VALID_NO_CHANGE (no_credible_preference_change)

Gate evidence: n=9; 4W/5T/0L; d=4; p=0.063; net +44.4%

Overfit: Low (score 0.15)

Repeated-run reliability (not used by the gate): 9 paired runs (4W/5T/0L).

Weak or warning scenarios:

Scenario Net win Δ Pref Runs (W/T/L)
= Add the required using directive and update tests with a test double +0.0% +0.0% 0/1/0
= Migrate a static helper class without breaking its callers +0.0% +0.0% 0/1/0
= Migrate file calls to an existing custom store and remove real I/O tests +0.0% +0.0% 0/1/0
= Preserve DateTimeKind when migrating to TimeProvider +0.0% +0.0% 0/1/0
= Preserve DateTimeOffset values during TimeProvider migration +0.0% +0.0% 0/1/0

Illustrative judge evidence:

  • Add the required using directive and update tests with a test double: Both runs produced functionally identical, correct outcomes: IClock injected via constructor with a properly-named readonly field, using directive added, all UtcNow call sites replaced, tests updated with a deterministic fake clock, build and tests run and reported accurately ...

This is one example, not the aggregate verdict. Open Full Results for every judgment.

➖ Not proven improved — migrate-xunit-to-mstest (gpt-5.6-luna)

Why: Net win +23.1% (5W/6T/2L over 13 stimulus vote(s), sign test p=0.227), mean preference +13.8% across 13 paired run(s) — not credible (sign test p=0.227 > 0.05)

Next action: Inspect tied or lost stimuli and fix inconsistent skill behavior.

State: VALID_NO_CHANGE (no_credible_preference_change)

Gate evidence: n=13; 5W/6T/2L; d=7; p=0.227; net +23.1%

Overfit: Low (score 0.14)

Repeated-run reliability (not used by the gate): 13 paired runs (5W/6T/2L).

Weak or warning scenarios:

Scenario Net win Δ Pref Runs (W/T/L)
= Convert ITestOutputHelper to TestContext +0.0% +0.0% 0/1/0
= Convert MemberData and TheoryData to DynamicData +0.0% +0.0% 0/1/0
▼ Convert xUnit v3 TestContext.Current.CancellationToken -100.0% -40.0% 0/0/1
= Handle ICollectionFixture explicitly (do not silently widen scope) +0.0% +0.0% 0/1/0
= Map exception assertions correctly (xUnit Throws -> MSTest ThrowsExactly) +0.0% +0.0% 0/1/0
▼ Migrate basic xUnit v3 project to MSTest v4 preserving VSTest -100.0% -40.0% 0/0/1
= Preserve xUnit parallelization default with [assembly: Parallelize] +0.0% +0.0% 0/1/0
= Recognize project already on MSTest +0.0% +0.0% 0/1/0

Illustrative judge evidence:

  • Convert ITestOutputHelper to TestContext: Position-swap inconsistent (forward: B, reverse: A). Defaulting to tie.

This is one example, not the aggregate verdict. Open Full Results for every judgment.

➖ Not proven improved — migrate-xunit-to-xunit-v3 (gpt-5.6-luna)

Why: Net win +8.3% (4W/5T/3L over 12 stimulus vote(s), sign test p=0.500), mean preference -1.7% across 12 paired run(s) — not credible (sign test p=0.500 > 0.05)

Next action: Inspect tied or lost stimuli and fix inconsistent skill behavior.

State: VALID_NO_CHANGE (no_credible_preference_change)

Gate evidence: n=12; 4W/5T/3L; d=7; p=0.500; net +8.3%

Overfit: Low (score 0.11)

Repeated-run reliability (not used by the gate): 12 paired runs (4W/5T/3L).

Weak or warning scenarios:

Scenario Net win Δ Pref Runs (W/T/L)
▼ Consolidate xunit.extensibility packages and remove xunit.abstractions -100.0% -40.0% 0/0/1
= Convert async void test methods to async Task +0.0% +0.0% 0/1/0
= Convert string-based attribute constructors to typeof syntax +0.0% +0.0% 0/1/0
= Migrate basic xUnit.net v2 project to v3 +0.0% +0.0% 0/1/0
▼ Migrate xUnit v2 packages managed via Central Package Management -100.0% -40.0% 0/0/1
= Recognize project already on xUnit.net v3 — no migration needed +0.0% +0.0% 0/1/0
▼ Update BeforeAfterTestAttribute overrides with IXunitTest parameter -100.0% -100.0% 0/0/1
= Update custom FactAttribute to include source information parameters +0.0% +0.0% 0/1/0

Illustrative judge evidence:

  • Consolidate xunit.extensibility packages and remove xunit.abstractions: Both runs end with a correct v3 configuration that builds and tests pass. However, Response A operated on a genuine v2 project and actually performed the migration—consolidating packages, removing xunit.abstractions and its using directive—and explained the extensibility-packa...

This is one example, not the aggregate verdict. Open Full Results for every judgment.

➖ Not proven improved — platform-detection (gpt-5.6-luna)

Why: Net win +13.3% (4W/9T/2L over 15 stimulus vote(s), sign test p=0.344), mean preference +5.3% across 30 paired run(s) — not credible (sign test p=0.344 > 0.05)

Next action: Inspect tied or lost stimuli and fix inconsistent skill behavior.

State: VALID_NO_CHANGE (no_credible_preference_change)

Gate evidence: n=15; 4W/9T/2L; d=6; p=0.344; net +13.3%

Overfit: Low (score 0.19)

Repeated-run reliability (not used by the gate): 30 paired runs (7W/20T/3L).

Weak or warning scenarios:

Scenario Net win Δ Pref Runs (W/T/L)
= Classic packages.config project requires the standalone VSTest toolchain +0.0% +0.0% 0/2/0
= Conditional properties produce mixed platforms by target framework +0.0% +0.0% 0/2/0
= Directory.Build.targets disables a runner selected in the project +0.0% +0.0% 0/2/0
▼ Explicit targets import re-enables a project-disabled bridge -50.0% -50.0% 0/1/1
= MSTest.Sdk explicitly opts back into VSTest +0.0% +0.0% 0/2/0
= MTP signal set in Directory.Build.props rather than the project file +0.0% +0.0% 0/2/0
= Native MTP mode conflicts with MSTest.Sdk UseVSTest opt-out +0.0% +0.0% 0/2/0
= Project-level bridge opt-out overrides Directory.Build.props +0.0% +0.0% 0/2/0
= SDK 10 explicit VSTest mode still bridges to MTP +0.0% +0.0% 0/2/0
▼ SDK 9 MTP signal and framework versions live in Directory.Packages.props -50.0% -20.0% 0/1/1
= xUnit runner property outranks Microsoft.NET.Test.Sdk on SDK 9 +0.0% +0.0% 1/0/1

Illustrative judge evidence:

  • Classic packages.config project requires the standalone VSTest toolchain: Both responses correctly classified the project as classic non-SDK, VSTest, MSTest with the vstest.console command family, and neither proposed a migration. Their conclusions and evidence are essentially equivalent; B added slightly more explanatory detail but this is negligible.

This is one example, not the aggregate verdict. Open Full Results for every judgment.

➖ Not proven improved — scaffold-dotnet-test-project (claude-sonnet-4.6)

Why: Net win +55.6% (6W/2T/1L over 9 stimulus vote(s), sign test p=0.063), mean preference +35.6% across 9 paired run(s) — not credible (sign test p=0.063 > 0.05)

Next action: Inspect tied or lost stimuli and fix inconsistent skill behavior.

State: VALID_NO_CHANGE (no_credible_preference_change)

Gate evidence: n=9; 6W/2T/1L; d=7; p=0.063; net +55.6%

Warnings: Activation: isolated 7/9; plugin 6/9

Overfit: Low (score 0.17)

Repeated-run reliability (not used by the gate): 9 paired runs (6W/2T/1L).

Weak or warning scenarios:

Scenario Net win Δ Pref Runs (W/T/L)
▲ Add an existing test project to the CI solution filter +100.0% +40.0% 1/0/0
= Register an existing test project in the CI SDK solution +0.0% +0.0% 0/1/0
▼ Register the first tests in an SDK solution file -100.0% -40.0% 0/0/1
= Repair a missing production project reference +0.0% +0.0% 0/1/0

Illustrative judge evidence:

  • Register an existing test project in the CI SDK solution: Position-swap inconsistent (forward: B, reverse: tie). Defaulting to tie.

This is one example, not the aggregate verdict. Open Full Results for every judgment.

➖ Not proven improved — test-anti-patterns (claude-sonnet-4.6)

Why: Net win +44.4% (5W/3T/1L over 9 stimulus vote(s), sign test p=0.109), mean preference +24.4% across 9 paired run(s) — not credible (sign test p=0.109 > 0.05)

Next action: Inspect tied or lost stimuli and fix inconsistent skill behavior.

State: VALID_NO_CHANGE (no_credible_preference_change)

Gate evidence: n=9; 5W/3T/1L; d=6; p=0.109; net +44.4%

Overfit: Moderate (score 0.26)

Repeated-run reliability (not used by the gate): 9 paired runs (5W/3T/1L).

Weak or warning scenarios:

Scenario Net win Δ Pref Runs (W/T/L)
= Audit a pytest suite using Python-specific anti-pattern markers +0.0% +0.0% 0/1/0
= Detect coverage-touching pattern across a service facade +0.0% +0.0% 0/1/0
▼ Detect mixed severity anti-patterns in repository service tests -100.0% -40.0% 0/0/1
= Stay dormant for test trait distribution +0.0% +0.0% 0/1/0

Illustrative judge evidence:

  • Audit a pytest suite using Python-specific anti-pattern markers: Position-swap inconsistent (forward: A, reverse: B). Defaulting to tie.

This is one example, not the aggregate verdict. Open Full Results for every judgment.

➖ Not proven improved — test-anti-patterns (gpt-5.6-luna)

Why: Net win +55.6% (7W/0T/2L over 9 stimulus vote(s), sign test p=0.090), mean preference +22.2% across 9 paired run(s) — not credible (sign test p=0.090 > 0.05)

Next action: Inspect tied or lost stimuli and fix inconsistent skill behavior.

State: VALID_NO_CHANGE (no_credible_preference_change)

Gate evidence: n=9; 7W/0T/2L; d=9; p=0.090; net +55.6%

Overfit: Low (score 0.06)

Repeated-run reliability (not used by the gate): 9 paired runs (7W/0T/2L).

Weak or warning scenarios:

Scenario Net win Δ Pref Runs (W/T/L)
▼ Detect coverage-touching pattern across a service facade -100.0% -40.0% 0/0/1
▼ Detect self-referential assertions in round-trip and identity tests -100.0% -40.0% 0/0/1

Illustrative judge evidence:

  • Detect coverage-touching pattern across a service facade: Both responses are strong, correctly diagnose the coverage-touching anti-pattern, name the same assertion-free tests, flag weak IsNotNull checks, and provide concrete code fixes. B is well-structured with complete rewritten tests and exact expected values, and adds positive ob...

This is one example, not the aggregate verdict. Open Full Results for every judgment.

➖ Not proven improved — test-gap-analysis (claude-sonnet-4.6)

Why: Net win +33.3% (4W/4T/1L over 9 stimulus vote(s), sign test p=0.188), mean preference +20.0% across 18 paired run(s) — not credible (sign test p=0.188 > 0.05)

Next action: Inspect tied or lost stimuli and fix inconsistent skill behavior.

State: VALID_NO_CHANGE (no_credible_preference_change)

Gate evidence: n=9; 4W/4T/1L; d=5; p=0.188; net +33.3%

Overfit: Moderate (score 0.35)

Repeated-run reliability (not used by the gate): 18 paired runs (9W/6T/3L).

Weak or warning scenarios:

Scenario Net win Δ Pref Runs (W/T/L)
= Acknowledge well-tested code with few surviving mutations +0.0% +0.0% 0/2/0
= Decline request to write new tests from scratch +0.0% +0.0% 1/0/1
▼ Find logic and null-check mutation gaps in access control code -50.0% -20.0% 0/1/1
= Stay dormant for test trait distribution +0.0% +0.0% 0/2/0
= Verify guard and exception-type gaps in retry policy tests +0.0% +30.0% 1/0/1

Illustrative judge evidence:

  • Acknowledge well-tested code with few surviving mutations: Position-swap inconsistent (forward: A, reverse: B). Defaulting to tie.

This is one example, not the aggregate verdict. Open Full Results for every judgment.

➖ Not proven improved — test-gap-analysis (gpt-5.6-luna)

Why: Net win +44.4% (5W/3T/1L over 9 stimulus vote(s), sign test p=0.109), mean preference +13.3% across 18 paired run(s) — not credible (sign test p=0.109 > 0.05)

Next action: Inspect tied or lost stimuli and fix inconsistent skill behavior.

State: VALID_NO_CHANGE (no_credible_preference_change)

Gate evidence: n=9; 5W/3T/1L; d=6; p=0.109; net +44.4%

Overfit: Low (score 0.12)

Repeated-run reliability (not used by the gate): 18 paired runs (9W/6T/3L).

Weak or warning scenarios:

Scenario Net win Δ Pref Runs (W/T/L)
▼ Decline request to write new tests from scratch -50.0% -20.0% 0/1/1
= Skip trivial and generated code while tracing private call chains +0.0% +0.0% 1/0/1
= Stay dormant for test trait distribution +0.0% +0.0% 0/2/0
= Verify guard and exception-type gaps in retry policy tests +0.0% +0.0% 1/0/1

Illustrative judge evidence:

  • Decline request to write new tests from scratch: Both responses produce a solid MSTest suite covering the same real behaviors (AddItem, GetTotal, RemoveItem) and both correctly identify that promo-code testing is impossible since no such API exists. B stayed on task and avoided the distractor SKILL. However, A went further b...

This is one example, not the aggregate verdict. Open Full Results for every judgment.

➖ Not proven improved — test-smell-detection (gpt-5.6-luna)

Why: Net win +50.0% (7W/1T/2L over 10 stimulus vote(s), sign test p=0.090), mean preference +32.0% across 10 paired run(s) — not credible (sign test p=0.090 > 0.05)

Next action: Inspect tied or lost stimuli and fix inconsistent skill behavior.

State: VALID_NO_CHANGE (no_credible_preference_change)

Gate evidence: n=10; 7W/1T/2L; d=9; p=0.090; net +50.0%

Overfit: Moderate (score 0.29)

Repeated-run reliability (not used by the gate): 10 paired runs (7W/1T/2L).

Weak or warning scenarios:

Scenario Net win Δ Pref Runs (W/T/L)
▼ Audit a JUnit suite using Java-specific smell markers -100.0% -40.0% 0/0/1
= Recognize Catch2 sections and generators as clean parameterization +0.0% +0.0% 0/1/0
▼ Recognize integration tests and avoid false positives for external resources -100.0% -40.0% 0/0/1

Illustrative judge evidence:

  • Audit a JUnit suite using Java-specific smell markers: Both responses are strong, well-structured, ranked reviews using correct formal smell names and JUnit remedies. They tie on most criteria. A wins on the unused rng General Fixture (which B misses/denies) and disabled-test calibration, and slightly on the file-dependency insigh...

This is one example, not the aggregate verdict. Open Full Results for every judgment.

➖ Not proven improved — testability-obstacle (claude-sonnet-4.6)

Why: Net win +62.5% (6W/1T/1L over 8 stimulus vote(s), sign test p=0.063), mean preference +23.7% across 16 paired run(s) — not credible (sign test p=0.063 > 0.05)

Next action: Inspect tied or lost stimuli and fix inconsistent skill behavior.

State: VALID_NO_CHANGE (no_credible_preference_change)

Gate evidence: n=8; 6W/1T/1L; d=7; p=0.063; net +62.5%

Overfit: High (score 0.62)

Repeated-run reliability (not used by the gate): 16 paired runs (10W/4T/2L).

Weak or warning scenarios:

Scenario Net win Δ Pref Runs (W/T/L)
= Make delayed renewal testable with built-in fake time +0.0% +0.0% 0/2/0
▼ Make random promo codes deterministic with a narrow seam -100.0% -40.0% 0/0/2

Illustrative judge evidence:

  • Make delayed renewal testable with built-in fake time: The implementations and test coverage described by both runs satisfy all requested behaviors, and both report successful test execution. B supplies slightly more concrete test values in its prose, while A reports a warning-free final run; neither establishes a meaningful resul...

This is one example, not the aggregate verdict. Open Full Results for every judgment.

✅ Improved — assertion-quality (claude-sonnet-4.6)

Why: Net win +87.5% (7W/1T/0L over 8 stimulus vote(s), sign test p=0.008), mean preference +51.3% across 16 paired run(s) — credibly better

Next action: Review overfit evidence.

State: VALID_PASS (credible_preference_improvement)

Gate evidence: n=8; 7W/1T/0L; d=7; p=0.008; net +87.5%

Overfit: Moderate (score 0.25)

Repeated-run reliability (not used by the gate): 16 paired runs (14W/1T/1L).

Weak or warning scenarios:

Scenario Net win Δ Pref Runs (W/T/L)
= Calibrate trivial checks without penalizing complete MSTest assertions +0.0% +30.0% 1/0/1

Illustrative judge evidence:

  • Calibrate trivial checks without penalizing complete MSTest assertions: Both are substantively correct and satisfy all requested classifications. A is slightly better because it is concise, focused, and includes the useful scope caveat for the parse test, whereas B is more verbose than requested and includes extraneous metrics.

This is one example, not the aggregate verdict. Open Full Results for every judgment.

✅ Improved — detect-static-dependencies (claude-sonnet-4.6)

Why: Net win +87.5% (7W/1T/0L over 8 stimulus vote(s), sign test p=0.008), mean preference +42.5% across 8 paired run(s) — credibly better

Next action: Review overfit evidence.

State: VALID_PASS (credible_preference_improvement)

Gate evidence: n=8; 7W/1T/0L; d=7; p=0.008; net +87.5%

Overfit: Moderate (score 0.34)

Repeated-run reliability (not used by the gate): 8 paired runs (7W/1T/0L).

Weak or warning scenarios:

Scenario Net win Δ Pref Runs (W/T/L)
= Keep one authoritative total with file line locations and no seam for pure helpers +0.0% +0.0% 0/1/0

Illustrative judge evidence:

  • Keep one authoritative total with file line locations and no seam for pure helpers: Position-swap inconsistent (forward: A, reverse: B). Defaulting to tie.

This is one example, not the aggregate verdict. Open Full Results for every judgment.

✅ Improved — migrate-mstest-v3-to-v4 (claude-sonnet-4.6)

Why: Net win +73.3% (13W/0T/2L over 15 stimulus vote(s), sign test p=0.004), mean preference +69.3% across 15 paired run(s) — credibly better

Next action: Fix activation gaps; Review overfit evidence.

State: VALID_PASS (credible_preference_improvement)

Gate evidence: n=15; 13W/0T/2L; d=15; p=0.004; net +73.3%

Warnings: Activation: isolated 15/15; plugin 14/15

Overfit: Moderate (score 0.39)

Repeated-run reliability (not used by the gate): 15 paired runs (13W/0T/2L).

Weak or warning scenarios:

Scenario Net win Δ Pref Runs (W/T/L)
▼ Correctly identify MSTest v3 project and recommend v4 migration -100.0% -40.0% 0/0/1
▲ Handle net6.0 target framework dropped in MSTest v4 +100.0% +40.0% 1/0/0
▼ Migrate MSTest.Sdk v3 project using ManagedType and TestTimeout -100.0% -40.0% 0/0/1

Illustrative judge evidence:

  • Correctly identify MSTest v3 project and recommend v4 migration: A is more complete and actionable for the requested upgrade, most importantly supplying concrete migration code and the exact current target version. B is concise and largely correct, but omits the requested concrete ExpectedException example and several useful breaking-change...

This is one example, not the aggregate verdict. Open Full Results for every judgment.

✅ Improved — migrate-mstest-v3-to-v4 (gpt-5.6-luna)

Why: Net win +46.7% (9W/4T/2L over 15 stimulus vote(s), sign test p=0.033), mean preference +34.7% across 15 paired run(s) — credibly better

Next action: Review overfit evidence.

State: VALID_PASS (credible_preference_improvement)

Gate evidence: n=15; 9W/4T/2L; d=11; p=0.033; net +46.7%

Overfit: Moderate (score 0.24)

Repeated-run reliability (not used by the gate): 15 paired runs (9W/4T/2L).

Weak or warning scenarios:

Scenario Net win Δ Pref Runs (W/T/L)
= Address TreatDiscoveryWarningsAsErrors and behavioral changes +0.0% +0.0% 0/1/0
▼ Fix Assert.IsInstanceOfType out parameter removal -100.0% -40.0% 0/0/1
= Fix TestMethodAttribute CallerInfo constructor breaking change +0.0% +0.0% 0/1/0
= Full MSTest v3 to v4 migration with multiple breaking changes +0.0% +0.0% 0/1/0
= Migrate MSTest.Sdk v3 project using ManagedType and TestTimeout +0.0% +0.0% 0/1/0
▼ Understand behavioral changes after MSTest v4 upgrade -100.0% -40.0% 0/0/1

Illustrative judge evidence:

  • Address TreatDiscoveryWarningsAsErrors and behavioral changes: Position-swap inconsistent (forward: B, reverse: A). Defaulting to tie.

This is one example, not the aggregate verdict. Open Full Results for every judgment.

✅ Improved — migrate-xunit-to-mstest (claude-sonnet-4.6)

Why: Net win +69.2% (11W/0T/2L over 13 stimulus vote(s), sign test p=0.011), mean preference +46.2% across 13 paired run(s) — credibly better

Next action: Review overfit evidence.

State: VALID_PASS (credible_preference_improvement)

Gate evidence: n=13; 11W/0T/2L; d=13; p=0.011; net +69.2%

Overfit: Moderate (score 0.37)

Repeated-run reliability (not used by the gate): 13 paired runs (11W/0T/2L).

Weak or warning scenarios:

Scenario Net win Δ Pref Runs (W/T/L)
▼ Handle ICollectionFixture explicitly (do not silently widen scope) -100.0% -40.0% 0/0/1
▼ Stop when target framework is unsupported by MSTest v4 -100.0% -40.0% 0/0/1

Illustrative judge evidence:

  • Handle ICollectionFixture explicitly (do not silently widen scope): Both produce passing MSTest conversions that retain serialization and sharing. A is preferable because its assembly-scoped replacement explicitly manages fixture teardown; B's static Lazy approach omits disposal of the IDisposable fixture.

This is one example, not the aggregate verdict. Open Full Results for every judgment.

✅ Improved — migrate-xunit-to-xunit-v3 (claude-sonnet-4.6)

Why: Net win +100.0% (12W/0T/0L over 12 stimulus vote(s), sign test p=0.000), mean preference +80.0% across 12 paired run(s) — credibly better

Next action: Review overfit evidence.

State: VALID_PASS (credible_preference_improvement)

Gate evidence: n=12; 12W/0T/0L; d=12; p=0.000; net +100.0%

Overfit: Moderate (score 0.21)

Repeated-run reliability (not used by the gate): 12 paired runs (12W/0T/0L).

✅ Improved — platform-detection (claude-sonnet-4.6)

Why: Net win +53.3% (10W/3T/2L over 15 stimulus vote(s), sign test p=0.019), mean preference +35.3% across 30 paired run(s) — credibly better

Next action: Review overfit evidence.

State: VALID_PASS (credible_preference_improvement)

Gate evidence: n=15; 10W/3T/2L; d=12; p=0.019; net +53.3%

Overfit: Moderate (score 0.32)

Repeated-run reliability (not used by the gate): 30 paired runs (20W/6T/4L).

Weak or warning scenarios:

Scenario Net win Δ Pref Runs (W/T/L)
= Conditional properties produce mixed platforms by target framework +0.0% +0.0% 0/2/0
= MSTest.Sdk explicitly opts back into VSTest +0.0% +0.0% 0/2/0
▼ Microsoft.NET.Test.Sdk alongside an MTP runner property -50.0% -20.0% 0/1/1
= SDK 10 VSTest mode bridges to an MSTest.Sdk MTP project +0.0% +30.0% 1/0/1
▼ SDK 10 explicit VSTest mode still bridges to MTP -100.0% -70.0% 0/0/2

Illustrative judge evidence:

  • Conditional properties produce mixed platforms by target framework: Position-swap inconsistent (forward: tie, reverse: B). Defaulting to tie.

This is one example, not the aggregate verdict. Open Full Results for every judgment.

✅ Improved — run-tests (claude-sonnet-4.6)

Why: Net win +45.0% (12W/5T/3L over 20 stimulus vote(s), sign test p=0.018), mean preference +45.0% across 20 paired run(s) — credibly better

Next action: Review overfit evidence.

State: VALID_PASS (credible_preference_improvement)

Gate evidence: n=20; 12W/5T/3L; d=15; p=0.018; net +45.0%

Overfit: Moderate (score 0.37)

Repeated-run reliability (not used by the gate): 20 paired runs (12W/5T/3L).

Weak or warning scenarios:

Scenario Net win Δ Pref Runs (W/T/L)
= Collect coverage with VSTest +0.0% +0.0% 0/1/0
▼ Combine multiple filter criteria on VSTest MSTest -100.0% -40.0% 0/0/1
= Enable a diagnostic log for a VSTest project +0.0% +0.0% 0/1/0
= Enable diagnostic logs for a native MTP project +0.0% +0.0% 0/1/0
▼ Filter one NUnit class on VSTest -100.0% -40.0% 0/0/1
▼ Run one VSTest invocation without rebuilding -100.0% -100.0% 0/0/1
= Run tests in a VSTest MSTest project +0.0% +0.0% 0/1/0
= Select one target framework in a multi-targeted project +0.0% +0.0% 0/1/0

Illustrative judge evidence:

  • Collect coverage with VSTest: Position-swap inconsistent (forward: B, reverse: A). Defaulting to tie.

This is one example, not the aggregate verdict. Open Full Results for every judgment.

✅ Improved — run-tests (gpt-5.6-luna)

Why: Net win +40.0% (10W/8T/2L over 20 stimulus vote(s), sign test p=0.019), mean preference +28.0% across 20 paired run(s) — credibly better

Next action: Fix activation gaps; Review overfit evidence.

State: VALID_PASS (credible_preference_improvement)

Gate evidence: n=20; 10W/8T/2L; d=12; p=0.019; net +40.0%

Warnings: Activation: isolated 18/20; plugin 19/20

Overfit: Moderate (score 0.27)

Repeated-run reliability (not used by the gate): 20 paired runs (10W/8T/2L).

Weak or warning scenarios:

Scenario Net win Δ Pref Runs (W/T/L)
= Collect coverage on an SDK 9 MTP bridge +0.0% +0.0% 0/1/0
= Combine multiple filter criteria on VSTest MSTest +0.0% +0.0% 0/1/0
▼ Detect test platform from Directory.Build.props -100.0% -40.0% 0/0/1
▼ Enable a diagnostic log for a VSTest project -100.0% -40.0% 0/0/1
= Enable diagnostic logs for a native MTP project +0.0% +0.0% 0/1/0
= Filter one NUnit class on VSTest +0.0% +0.0% 0/1/0
= Generate TRX from a VSTest project +0.0% +0.0% 0/1/0
= Preserve the runner for a classic packages.config project +0.0% +0.0% 0/1/0
= Run tests in a VSTest MSTest project +0.0% +0.0% 0/1/0
= Select one target framework in a multi-targeted project +0.0% +0.0% 0/1/0

Illustrative judge evidence:

  • Collect coverage on an SDK 9 MTP bridge: Position-swap inconsistent (forward: tie, reverse: A). Defaulting to tie.

This is one example, not the aggregate verdict. Open Full Results for every judgment.

✅ Improved — test-smell-detection (claude-sonnet-4.6)

Why: Net win +70.0% (8W/1T/1L over 10 stimulus vote(s), sign test p=0.020), mean preference +52.0% across 10 paired run(s) — credibly better

Next action: Review overfit evidence.

State: VALID_PASS (credible_preference_improvement)

Gate evidence: n=10; 8W/1T/1L; d=9; p=0.020; net +70.0%

Overfit: Moderate (score 0.26)

Repeated-run reliability (not used by the gate): 10 paired runs (8W/1T/1L).

Weak or warning scenarios:

Scenario Net win Δ Pref Runs (W/T/L)
▼ Distinguish a Go table-driven test from a fixed sleep -100.0% -40.0% 0/0/1
= Recognize well-written tests with no significant smells +0.0% +0.0% 0/1/0

Illustrative judge evidence:

  • Distinguish a Go table-driven test from a fixed sleep: Both correctly isolate the Sleepy Test and the Go idioms. A is stronger because it supplies the requested observable completion mechanism concretely and prioritizes it; B primarily replaces one timed wait with polling. A has some overstatement about races, so the overall advan...

This is one example, not the aggregate verdict. Open Full Results for every judgment.

✅ Improved — testability-obstacle (gpt-5.6-luna)

Why: Net win +62.5% (5W/3T/0L over 8 stimulus vote(s), sign test p=0.031), mean preference +20.0% across 16 paired run(s) — credibly better

Next action: Review overfit evidence.

State: VALID_PASS (credible_preference_improvement)

Gate evidence: n=8; 5W/3T/0L; d=5; p=0.031; net +62.5%

Overfit: Moderate (score 0.25)

Repeated-run reliability (not used by the gate): 16 paired runs (10W/4T/2L).

Weak or warning scenarios:

Scenario Net win Δ Pref Runs (W/T/L)
= Restore environment overrides after exceptions and nesting +0.0% +0.0% 1/0/1
= Scope deterministic identity generation without breaking callers +0.0% +0.0% 1/0/1
= Test report export without touching the real filesystem +0.0% +0.0% 0/2/0

Illustrative judge evidence:

  • Restore environment overrides after exceptions and nesting: Both responses achieved the core goal: a scoped seam preserving the static API, async isolation, nested exception cleanup, and passing tests without mutating environment variables. A reached a clean, verifiable implementation with AsyncLocal and LIFO restoration more directly,...

This is one example, not the aggregate verdict. Open Full Results for every judgment.

✅ Improved — writing-mstest-tests (claude-sonnet-4.6)

Why: Net win +71.4% (11W/2T/1L over 14 stimulus vote(s), sign test p=0.003), mean preference +50.0% across 14 paired run(s) — credibly better

Next action: Review overfit evidence.

State: VALID_PASS (credible_preference_improvement)

Gate evidence: n=14; 11W/2T/1L; d=12; p=0.003; net +71.4%

Overfit: Moderate (score 0.45)

Repeated-run reliability (not used by the gate): 14 paired runs (11W/2T/1L).

Weak or warning scenarios:

Scenario Net win Δ Pref Runs (W/T/L)
▼ Diagnose failed numeric boundaries -100.0% -100.0% 0/0/1
= Diagnose failed string conditions +0.0% +0.0% 0/1/0
= Respect a pinned framework version +0.0% +0.0% 0/1/0

Illustrative judge evidence:

  • Diagnose failed numeric boundaries: A provides the correct MSTest 3.10 rewrites and preserves all original conditions. B reverses the argument order for every assertion, changing the strict checks and making the range check incorrect.

This is one example, not the aggregate verdict. Open Full Results for every judgment.

Routine passing details for 5 results are in Full Results.

🔍 Full Results - all metrics and investigation details

To investigate non-passing or warning results, paste this to your AI coding agent:

For PR 1079 in dotnet/skills, download eval artifacts with gh run download 33110448723 --repo dotnet/skills --pattern "vally-results-*" --dir ./eval-results, then fetch https://raw.githubusercontent.com/dotnet/skills/86ab860b1e8abf5585499a340ef53eddb9131749/eng/vally-adapter/InvestigatingResults.md and follow it. Classify each result as measurement-invalid, underpowered, not-proven, preference-loss, or passing-with-warning. Use stateReason, result accounting, weak scenarios, and judge evidence to give the cause and exact next fix.

▶ Sessions Visualisation -- interactive replay of all evaluation sessions
📊 Session Analytics (preview) -- aggregated metrics across evaluation sessions

github-actions Bot added a commit that referenced this pull request Aug 27, 2026
@Evangelink

Copy link
Copy Markdown
Member Author

/evaluate 47bbc32

@github-actions github-actions Bot added waiting-on-author PR state label and removed pr-state/ready-for-eval PR is mergeable and awaiting evaluation labels Aug 27, 2026
@github-actions

Copy link
Copy Markdown
Contributor

👋 @Evangelink — this PR has changes requested. When you're ready, please address the feedback and push an update; the triage bot will pick up the next state automatically. (Add the no-stale label to silence further pings.)

@github-actions

Copy link
Copy Markdown
Contributor

❌ Evaluation did not complete successfully (the evaluate job reported failure). Check the workflow run logs, then comment /evaluate 47bbc32ec20073d0b006fb460d95ba0e3cba92f6 to retry this exact commit.

32 partial result file(s) were preserved for diagnosis but were not consolidated because the full matrix did not complete.

github-actions Bot added a commit that referenced this pull request Aug 28, 2026
@github-actions

Copy link
Copy Markdown
Contributor

📊 Skill Evaluation Results

32 model/skill results across 16 skills and 2 models — ✅ 21 improved, ➖ 11 not proven improved, ⚠️ 0 invalid or underpowered, 📉 0 preference losses (report only).

Measurement identity: evaluated commit 47bbc32ec20073d0b006fb460d95ba0e3cba92f6; 2 judge models.

Measurement health: 32 expected / 32 observed / 32 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 p ≤ 0.05. Repeated runs measure reliability only.

Skill Model Verdict Gate evidence Overfit Warnings Next action
assertion-quality claude-sonnet-4.6 ✅ Improved n=8; 8W/0T/0L; d=8; p=0.004; net +100.0% 🟡 0.23 Review overfit evidence.
assertion-quality gpt-5.6-luna ✅ Improved n=8; 7W/1T/0L; d=7; p=0.008; net +87.5% ✅ 0.11 None.
coverage-analysis claude-sonnet-4.6 ➖ Not proven improved n=13; 7W/2T/4L; d=11; p=0.274; net +23.1% 🟡 0.30 Inspect tied or lost stimuli and fix inconsistent skill behavior.
coverage-analysis gpt-5.6-luna ✅ Improved n=13; 11W/2T/0L; d=11; p=0.000; net +84.6% ✅ 0.14 None.
detect-static-dependencies claude-sonnet-4.6 ✅ Improved n=8; 7W/1T/0L; d=7; p=0.008; net +87.5% 🟡 0.24 Review overfit evidence.
detect-static-dependencies gpt-5.6-luna ➖ Not proven improved n=8; 5W/1T/2L; d=7; p=0.227; net +37.5% ✅ 0.18 Inspect tied or lost stimuli and fix inconsistent skill behavior.
generate-testability-wrappers claude-sonnet-4.6 ✅ Improved n=8; 7W/0T/1L; d=8; p=0.035; net +75.0% 🟡 0.44 Review overfit evidence.
generate-testability-wrappers gpt-5.6-luna ✅ Improved n=8; 6W/2T/0L; d=6; p=0.016; net +75.0% ✅ 0.16 None.
migrate-mstest-v3-to-v4 claude-sonnet-4.6 ➖ Not proven improved n=15; 11W/0T/4L; d=15; p=0.059; net +46.7% 🟡 0.42 Activation: isolated 15/15; plugin 14/15 Inspect tied or lost stimuli and fix inconsistent skill behavior.
migrate-mstest-v3-to-v4 gpt-5.6-luna ➖ Not proven improved n=15; 9W/3T/3L; d=12; p=0.073; net +40.0% ✅ 0.11 Inspect tied or lost stimuli and fix inconsistent skill behavior.
migrate-static-to-wrapper claude-sonnet-4.6 ➖ Not proven improved n=9; 6W/1T/2L; d=8; p=0.145; net +44.4% 🟡 0.20 Inspect tied or lost stimuli and fix inconsistent skill behavior.
migrate-static-to-wrapper gpt-5.6-luna ➖ Not proven improved n=9; 3W/6T/0L; d=3; p=0.125; net +33.3% ✅ 0.15 Inspect tied or lost stimuli; predeclare added breadth before a new experiment.
migrate-xunit-to-mstest claude-sonnet-4.6 ✅ Improved n=13; 11W/1T/1L; d=12; p=0.003; net +76.9% 🟡 0.44 Review overfit evidence.
migrate-xunit-to-mstest gpt-5.6-luna ✅ Improved n=13; 7W/6T/0L; d=7; p=0.008; net +53.8% ✅ 0.11 None.
migrate-xunit-to-xunit-v3 claude-sonnet-4.6 ✅ Improved n=12; 12W/0T/0L; d=12; p=0.000; net +100.0% 🟡 0.21 Review overfit evidence.
migrate-xunit-to-xunit-v3 gpt-5.6-luna ➖ Not proven improved n=12; 7W/1T/4L; d=11; p=0.274; net +25.0% ✅ 0.15 Inspect tied or lost stimuli and fix inconsistent skill behavior.
platform-detection claude-sonnet-4.6 ✅ Improved n=15; 12W/2T/1L; d=13; p=0.002; net +73.3% 🟡 0.22 Review overfit evidence.
platform-detection gpt-5.6-luna ✅ Improved n=15; 7W/7T/1L; d=8; p=0.035; net +40.0% 🟡 0.23 Review overfit evidence.
run-tests claude-sonnet-4.6 ✅ Improved n=20; 15W/4T/1L; d=16; p=0.000; net +70.0% 🟡 0.42 Review overfit evidence.
run-tests gpt-5.6-luna ✅ Improved n=20; 13W/6T/1L; d=14; p=0.001; net +60.0% 🟡 0.27 Activation: isolated 17/20; plugin 18/20 Fix activation gaps; Review overfit evidence.
scaffold-dotnet-test-project claude-sonnet-4.6 ✅ Improved n=9; 7W/1T/1L; d=8; p=0.035; net +66.7% ✅ 0.18 Activation: isolated 8/9; plugin 6/9 Fix activation gaps.
scaffold-dotnet-test-project gpt-5.6-luna ➖ Not proven improved n=9; 4W/3T/2L; d=6; p=0.344; net +22.2% ✅ 0.06 Inspect tied or lost stimuli and fix inconsistent skill behavior.
test-anti-patterns claude-sonnet-4.6 ✅ Improved n=9; 8W/1T/0L; d=8; p=0.004; net +88.9% 🟡 0.27 Review overfit evidence.
test-anti-patterns gpt-5.6-luna ✅ Improved n=9; 6W/3T/0L; d=6; p=0.016; net +66.7% ✅ 0.16 None.
test-gap-analysis claude-sonnet-4.6 ➖ Not proven improved n=9; 5W/1T/3L; d=8; p=0.363; net +22.2% 🟡 0.33 Inspect tied or lost stimuli and fix inconsistent skill behavior.
test-gap-analysis gpt-5.6-luna ➖ Not proven improved n=9; 6W/2T/1L; d=7; p=0.063; net +55.6% ✅ 0.13 Inspect tied or lost stimuli and fix inconsistent skill behavior.
test-smell-detection claude-sonnet-4.6 ✅ Improved n=10; 9W/1T/0L; d=9; p=0.002; net +90.0% ✅ 0.19 None.
test-smell-detection gpt-5.6-luna ✅ Improved n=10; 8W/1T/1L; d=9; p=0.020; net +70.0% ✅ 0.13 None.
testability-obstacle claude-sonnet-4.6 ✅ Improved n=8; 7W/1T/0L; d=7; p=0.008; net +87.5% 🟡 0.48 Review overfit evidence.
testability-obstacle gpt-5.6-luna ✅ Improved n=8; 5W/3T/0L; d=5; p=0.031; net +62.5% ✅ 0.17 Activation: isolated 8/8; plugin 7/8 Fix activation gaps.
writing-mstest-tests claude-sonnet-4.6 ✅ Improved n=14; 13W/0T/1L; d=14; p=0.001; net +85.7% 🟡 0.48 Review overfit evidence.
writing-mstest-tests gpt-5.6-luna ➖ Not proven improved n=14; 6W/7T/1L; d=7; p=0.063; net +35.7% ✅ 0.17 Activation: isolated 14/14; plugin 13/14 Inspect tied or lost stimuli and fix inconsistent skill behavior.
ℹ️ How to read this report
  • ✅ Improved — the result passed both the statistical gate and the 20% practical net-win floor.
  • ➖ Not proven improved — the result is valid but did not pass both gates. This is not automatically a regression.
  • ⚠️ Invalid / underpowered — the gate withheld a quality verdict. Fix the measurement before judging the skill.
  • 📉 Preference loss — the LLM judge credibly preferred baseline. It is report-only, not objective completion proof.
  • Gate evidencen distinct-stimulus votes, W/T/L stimulus votes, d discordant votes, exact one-sided p, and net win. The p value applies to one model/skill result; no matrix-wide multiple-comparison correction is applied.
  • Overfit — overfitting-judge severity (✅ Low, 🟡 Moderate, 🔴 High, — none) and score.
  • Warnings — activation, timeout, retry recovery, or unresolved comparison conditions that need attention.
  • Do not add repeated runs to increase statistical power. Do not add stimuli after seeing a near-pass unless the new breadth is predeclared for a new experiment.
➖ Not proven improved — coverage-analysis (claude-sonnet-4.6)

Why: Net win +23.1% (7W/2T/4L over 13 stimulus vote(s), sign test p=0.274), mean preference +18.5% across 26 paired run(s) — not credible (sign test p=0.274 > 0.05)

Next action: Inspect tied or lost stimuli and fix inconsistent skill behavior.

State: VALID_NO_CHANGE (no_credible_preference_change)

Gate evidence: n=13; 7W/2T/4L; d=11; p=0.274; net +23.1%

Overfit: Moderate (score 0.30)

Repeated-run reliability (not used by the gate): 26 paired runs (14W/7T/5L).

Weak or warning scenarios:

Scenario Net win Δ Pref Runs (W/T/L)
▼ Keep MTP coverage arguments behind the separator in SDK 10 VSTest mode -50.0% -20.0% 0/1/1
▼ Reconcile a coverage target spread across several members -50.0% -20.0% 0/1/1
= Refactoring safety assessment from coverage data +0.0% +0.0% 1/0/1
▼ Run coverage from scratch without existing data -50.0% -20.0% 0/1/1
▼ Stay dormant for behavioral gap analysis -50.0% -20.0% 0/1/1
= Stay dormant for test trait distribution +0.0% +0.0% 0/2/0

Illustrative judge evidence:

  • Keep MTP coverage arguments behind the separator in SDK 10 VSTest mode: Both miss the central required post-separator coverage arguments, so neither gives the requested exact command. A is marginally better because its extra bridge-related property is at least pertinent to the stated VSTest-to-MTP setup, whereas B adds an unrelated and likely inef...

This is one example, not the aggregate verdict. Open Full Results for every judgment.

➖ Not proven improved — detect-static-dependencies (gpt-5.6-luna)

Why: Net win +37.5% (5W/1T/2L over 8 stimulus vote(s), sign test p=0.227), mean preference +15.0% across 8 paired run(s) — not credible (sign test p=0.227 > 0.05)

Next action: Inspect tied or lost stimuli and fix inconsistent skill behavior.

State: VALID_NO_CHANGE (no_credible_preference_change)

Gate evidence: n=8; 5W/1T/2L; d=7; p=0.227; net +37.5%

Overfit: Low (score 0.18)

Repeated-run reliability (not used by the gate): 8 paired runs (5W/1T/2L).

Weak or warning scenarios:

Scenario Net win Δ Pref Runs (W/T/L)
= Avoid false positives when ambient resources are already abstracted +0.0% +0.0% 0/1/0
▼ Decline scan for non-C# project -100.0% -40.0% 0/0/1
▼ Detect time-related statics and recommend TimeProvider -100.0% -40.0% 0/0/1

Illustrative judge evidence:

  • Avoid false positives when ambient resources are already abstracted: Both responses reached the identical correct conclusion (count 0), correctly identified the injected dependencies and deterministic Path.Combine, avoided redundant wrappers, and stayed concise. Their content is functionally equivalent with no meaningful quality difference.

This is one example, not the aggregate verdict. Open Full Results for every judgment.

➖ Not proven improved — migrate-mstest-v3-to-v4 (claude-sonnet-4.6)

Why: Net win +46.7% (11W/0T/4L over 15 stimulus vote(s), sign test p=0.059), mean preference +42.7% across 15 paired run(s) — not credible (sign test p=0.059 > 0.05)

Next action: Inspect tied or lost stimuli and fix inconsistent skill behavior.

State: VALID_NO_CHANGE (no_credible_preference_change)

Gate evidence: n=15; 11W/0T/4L; d=15; p=0.059; net +46.7%

Warnings: Activation: isolated 15/15; plugin 14/15

Overfit: Moderate (score 0.42)

Repeated-run reliability (not used by the gate): 15 paired runs (11W/0T/4L).

Weak or warning scenarios:

Scenario Net win Δ Pref Runs (W/T/L)
▼ Correctly identify MSTest v3 project and recommend v4 migration -100.0% -40.0% 0/0/1
▼ Fix TestMethodAttribute and TestMethod display name constructor -100.0% -40.0% 0/0/1
▲ Handle net6.0 target framework dropped in MSTest v4 +100.0% +40.0% 1/0/0
▼ Migrate MSTest.Sdk v3 project using ManagedType and TestTimeout -100.0% -40.0% 0/0/1
▼ Understand behavioral changes after MSTest v4 upgrade -100.0% -40.0% 0/0/1

Illustrative judge evidence:

  • Correctly identify MSTest v3 project and recommend v4 migration: A is substantially more actionable and complete, particularly through concrete migration examples and an explicit latest-version/package update. B is concise and covers several important points, but it omits the requested ExpectedException code example and gives less complete ...

This is one example, not the aggregate verdict. Open Full Results for every judgment.

➖ Not proven improved — migrate-mstest-v3-to-v4 (gpt-5.6-luna)

Why: Net win +40.0% (9W/3T/3L over 15 stimulus vote(s), sign test p=0.073), mean preference +16.0% across 15 paired run(s) — not credible (sign test p=0.073 > 0.05)

Next action: Inspect tied or lost stimuli and fix inconsistent skill behavior.

State: VALID_NO_CHANGE (no_credible_preference_change)

Gate evidence: n=15; 9W/3T/3L; d=12; p=0.073; net +40.0%

Overfit: Low (score 0.11)

Repeated-run reliability (not used by the gate): 15 paired runs (9W/3T/3L).

Weak or warning scenarios:

Scenario Net win Δ Pref Runs (W/T/L)
= Fix TestMethodAttribute CallerInfo constructor breaking change +0.0% +0.0% 0/1/0
▼ Fix TestMethodAttribute and TestMethod display name constructor -100.0% -40.0% 0/0/1
= Full MSTest v3 to v4 migration with multiple breaking changes +0.0% +0.0% 0/1/0
▼ Handle net6.0 target framework dropped in MSTest v4 -100.0% -40.0% 0/0/1
= Migrate MSTest.Sdk v3 project using ManagedType and TestTimeout +0.0% +0.0% 0/1/0
▼ Understand behavioral changes after MSTest v4 upgrade -100.0% -40.0% 0/0/1

Illustrative judge evidence:

  • Fix TestMethodAttribute CallerInfo constructor breaking change: Position-swap inconsistent (forward: B, reverse: A). Defaulting to tie.

This is one example, not the aggregate verdict. Open Full Results for every judgment.

➖ Not proven improved — migrate-static-to-wrapper (claude-sonnet-4.6)

Why: Net win +44.4% (6W/1T/2L over 9 stimulus vote(s), sign test p=0.145), mean preference +31.1% across 9 paired run(s) — not credible (sign test p=0.145 > 0.05)

Next action: Inspect tied or lost stimuli and fix inconsistent skill behavior.

State: VALID_NO_CHANGE (no_credible_preference_change)

Gate evidence: n=9; 6W/1T/2L; d=8; p=0.145; net +44.4%

Overfit: Moderate (score 0.20)

Repeated-run reliability (not used by the gate): 9 paired runs (6W/1T/2L).

Weak or warning scenarios:

Scenario Net win Δ Pref Runs (W/T/L)
= Migrate DateTime.UtcNow to TimeProvider in a service class +0.0% +0.0% 0/1/0
▼ Migrate a static helper class without breaking its callers -100.0% -40.0% 0/0/1
▼ Migrate environment access to an existing reader and update tests -100.0% -40.0% 0/0/1

Illustrative judge evidence:

  • Migrate DateTime.UtcNow to TimeProvider in a service class: The resulting implementation described by both runs is materially identical and satisfies every requested change. B's final report is more detailed and includes an explicit verification, but this does not establish a meaningful difference in final code quality.

This is one example, not the aggregate verdict. Open Full Results for every judgment.

➖ Not proven improved — migrate-static-to-wrapper (gpt-5.6-luna)

Why: Net win +33.3% (3W/6T/0L over 9 stimulus vote(s), sign test p=0.125), mean preference +20.0% across 9 paired run(s) — not credible — 6 of 9 stimulus vote(s) tied, leaving only 3 discordant stimulus vote(s). The sign test conditions on non-tie stimulus votes and cannot reach 0.05 below 5, so no record could have passed here — this is not a measured null. Either the skill is inert on these scenarios (make them discriminate) or the eval needs more distinct stimuli to clear the ties

Next action: Inspect tied or lost stimuli; predeclare added breadth before a new experiment.

State: VALID_NO_CHANGE (no_credible_preference_change)

Gate evidence: n=9; 3W/6T/0L; d=3; p=0.125; net +33.3%

Overfit: Low (score 0.15)

Repeated-run reliability (not used by the gate): 9 paired runs (3W/6T/0L).

Weak or warning scenarios:

Scenario Net win Δ Pref Runs (W/T/L)
= Migrate DateTime.UtcNow to TimeProvider in a service class +0.0% +0.0% 0/1/0
= Migrate a static helper class without breaking its callers +0.0% +0.0% 0/1/0
= Migrate environment access to an existing reader and update tests +0.0% +0.0% 0/1/0
= Migrate file calls to an existing custom store and remove real I/O tests +0.0% +0.0% 0/1/0
= Preserve DateTimeKind when migrating to TimeProvider +0.0% +0.0% 0/1/0
= Preserve DateTimeOffset values during TimeProvider migration +0.0% +0.0% 0/1/0

Illustrative judge evidence:

  • Migrate DateTime.UtcNow to TimeProvider in a service class: Position-swap inconsistent (forward: B, reverse: tie). Defaulting to tie.

This is one example, not the aggregate verdict. Open Full Results for every judgment.

➖ Not proven improved — migrate-xunit-to-xunit-v3 (gpt-5.6-luna)

Why: Net win +25.0% (7W/1T/4L over 12 stimulus vote(s), sign test p=0.274), mean preference +20.0% across 12 paired run(s) — not credible (sign test p=0.274 > 0.05)

Next action: Inspect tied or lost stimuli and fix inconsistent skill behavior.

State: VALID_NO_CHANGE (no_credible_preference_change)

Gate evidence: n=12; 7W/1T/4L; d=11; p=0.274; net +25.0%

Overfit: Low (score 0.15)

Repeated-run reliability (not used by the gate): 12 paired runs (7W/1T/4L).

Weak or warning scenarios:

Scenario Net win Δ Pref Runs (W/T/L)
▼ Convert async void test methods to async Task -100.0% -40.0% 0/0/1
▼ Migrate Xunit.SkippableFact to xUnit.net v3 built-in skip APIs -100.0% -40.0% 0/0/1
= Migrate project with YTest.MTP.XUnit2 to xUnit.net v3 preserving MTP +0.0% +0.0% 0/1/0
▼ Migrate xUnit v2 packages managed via Central Package Management -100.0% -40.0% 0/0/1
▼ Update custom FactAttribute to include source information parameters -100.0% -40.0% 0/0/1

Illustrative judge evidence:

  • Convert async void test methods to async Task: Both migrations succeeded, converted async void to async Task on both methods, and all 3 tests pass. Neither explains why the change is needed. The tie-breaker is the quality of the broader migration. Response A used the correct stable xunit.v3 3.0.0 version and also proactive...

This is one example, not the aggregate verdict. Open Full Results for every judgment.

➖ Not proven improved — scaffold-dotnet-test-project (gpt-5.6-luna)

Why: Net win +22.2% (4W/3T/2L over 9 stimulus vote(s), sign test p=0.344), mean preference +8.9% across 9 paired run(s) — not credible (sign test p=0.344 > 0.05)

Next action: Inspect tied or lost stimuli and fix inconsistent skill behavior.

State: VALID_NO_CHANGE (no_credible_preference_change)

Gate evidence: n=9; 4W/3T/2L; d=6; p=0.344; net +22.2%

Overfit: Low (score 0.06)

Repeated-run reliability (not used by the gate): 9 paired runs (4W/3T/2L).

Weak or warning scenarios:

Scenario Net win Δ Pref Runs (W/T/L)
▼ Add an existing test project to the CI solution filter -100.0% -40.0% 0/0/1
= Create the first pricing test project with central packages +0.0% +0.0% 0/1/0
▼ Include new tests in the solution filter used by CI -100.0% -40.0% 0/0/1
= Repair a missing production project reference +0.0% +0.0% 0/1/0
= Reuse an existing suitable test project +0.0% +0.0% 0/1/0

Illustrative judge evidence:

  • Add an existing test project to the CI solution filter: Both achieve the correct final result: the .slnf now includes the test project and the CI filter builds successfully. A reached the correct path more directly, while B introduced a wrong path that caused a build error before self-correcting. B did helpfully clean up build arti...

This is one example, not the aggregate verdict. Open Full Results for every judgment.

➖ Not proven improved — test-gap-analysis (claude-sonnet-4.6)

Why: Net win +22.2% (5W/1T/3L over 9 stimulus vote(s), sign test p=0.363), mean preference +27.8% across 18 paired run(s) — not credible (sign test p=0.363 > 0.05)

Next action: Inspect tied or lost stimuli and fix inconsistent skill behavior.

State: VALID_NO_CHANGE (no_credible_preference_change)

Gate evidence: n=9; 5W/1T/3L; d=8; p=0.363; net +22.2%

Overfit: Moderate (score 0.33)

Repeated-run reliability (not used by the gate): 18 paired runs (10W/3T/5L).

Weak or warning scenarios:

Scenario Net win Δ Pref Runs (W/T/L)
▼ Acknowledge well-tested code with few surviving mutations -100.0% -40.0% 0/0/2
▼ Decline request to write new tests from scratch -50.0% -20.0% 0/1/1
= Find boundary mutation gaps in tiered discount and shipping logic +0.0% +30.0% 1/0/1
▼ Skip trivial and generated code while tracing private call chains -50.0% -20.0% 0/1/1

Illustrative judge evidence:

  • Acknowledge well-tested code with few surviving mutations: A provides concrete, empirically validated mutation outcomes for important accumulation and boundary behaviors and gives a proportionate assessment of its gap. Its proposed test discussion is initially confusing and neither response fully enumerates every existing test boundar...

This is one example, not the aggregate verdict. Open Full Results for every judgment.

➖ Not proven improved — test-gap-analysis (gpt-5.6-luna)

Why: Net win +55.6% (6W/2T/1L over 9 stimulus vote(s), sign test p=0.063), mean preference +23.3% across 18 paired run(s) — not credible (sign test p=0.063 > 0.05)

Next action: Inspect tied or lost stimuli and fix inconsistent skill behavior.

State: VALID_NO_CHANGE (no_credible_preference_change)

Gate evidence: n=9; 6W/2T/1L; d=7; p=0.063; net +55.6%

Overfit: Low (score 0.13)

Repeated-run reliability (not used by the gate): 18 paired runs (11W/5T/2L).

Weak or warning scenarios:

Scenario Net win Δ Pref Runs (W/T/L)
= Decline request to write new tests from scratch +0.0% +0.0% 0/2/0
▼ Skip trivial and generated code while tracing private call chains -50.0% -20.0% 0/1/1
= Verify guard and exception-type gaps in retry policy tests +0.0% +0.0% 1/0/1

Illustrative judge evidence:

  • Decline request to write new tests from scratch: Both responses located the class, built a runnable MSTest project, recovered from the same restore/using-directive errors, produced passing suites covering the real observable behaviors, and correctly identified that no promo-code API exists to test. Response B resisted the te...

This is one example, not the aggregate verdict. Open Full Results for every judgment.

➖ Not proven improved — writing-mstest-tests (gpt-5.6-luna)

Why: Net win +35.7% (6W/7T/1L over 14 stimulus vote(s), sign test p=0.063), mean preference +10.0% across 14 paired run(s) — not credible (sign test p=0.063 > 0.05)

Next action: Inspect tied or lost stimuli and fix inconsistent skill behavior.

State: VALID_NO_CHANGE (no_credible_preference_change)

Gate evidence: n=14; 6W/7T/1L; d=7; p=0.063; net +35.7%

Warnings: Activation: isolated 14/14; plugin 13/14

Overfit: Low (score 0.17)

Repeated-run reliability (not used by the gate): 14 paired runs (6W/7T/1L).

Weak or warning scenarios:

Scenario Net win Δ Pref Runs (W/T/L)
= Apply environment retry and cleanup policies +0.0% +0.0% 0/1/0
▲ Configure concurrent execution with a serial exception +100.0% +40.0% 1/0/0
= Diagnose failed numeric boundaries +0.0% +0.0% 0/1/0
= Diagnose failed string conditions +0.0% +0.0% 0/1/0
= Diagnose identity, null, absence, and emptiness +0.0% +0.0% 0/1/0
= Improve collection failure diagnostics +0.0% +0.0% 0/1/0
= Initialize test state in lifecycle order +0.0% +0.0% 0/1/0
▼ Modernize legacy MSTest code safely -100.0% -100.0% 0/0/1
= Respect a pinned framework version +0.0% +0.0% 0/1/0

Illustrative judge evidence:

  • Apply environment retry and cleanup policies: Position-swap inconsistent (forward: B, reverse: tie). Defaulting to tie.

This is one example, not the aggregate verdict. Open Full Results for every judgment.

✅ Improved — assertion-quality (claude-sonnet-4.6)

Why: Net win +100.0% (8W/0T/0L over 8 stimulus vote(s), sign test p=0.004), mean preference +41.3% across 16 paired run(s) — credibly better

Next action: Review overfit evidence.

State: VALID_PASS (credible_preference_improvement)

Gate evidence: n=8; 8W/0T/0L; d=8; p=0.004; net +100.0%

Overfit: Moderate (score 0.23)

Repeated-run reliability (not used by the gate): 16 paired runs (15W/1T/0L).

✅ Improved — detect-static-dependencies (claude-sonnet-4.6)

Why: Net win +87.5% (7W/1T/0L over 8 stimulus vote(s), sign test p=0.008), mean preference +65.0% across 8 paired run(s) — credibly better

Next action: Review overfit evidence.

State: VALID_PASS (credible_preference_improvement)

Gate evidence: n=8; 7W/1T/0L; d=7; p=0.008; net +87.5%

Overfit: Moderate (score 0.24)

Repeated-run reliability (not used by the gate): 8 paired runs (7W/1T/0L).

Weak or warning scenarios:

Scenario Net win Δ Pref Runs (W/T/L)
= Decline scan for non-C# project +0.0% +0.0% 0/1/0

Illustrative judge evidence:

  • Decline scan for non-C# project: Position-swap inconsistent (forward: A, reverse: B). Defaulting to tie.

This is one example, not the aggregate verdict. Open Full Results for every judgment.

✅ Improved — generate-testability-wrappers (claude-sonnet-4.6)

Why: Net win +75.0% (7W/0T/1L over 8 stimulus vote(s), sign test p=0.035), mean preference +41.7% across 24 paired run(s) — credibly better

Next action: Review overfit evidence.

State: VALID_PASS (credible_preference_improvement)

Gate evidence: n=8; 7W/0T/1L; d=8; p=0.035; net +75.0%

Overfit: Moderate (score 0.44)

Repeated-run reliability (not used by the gate): 24 paired runs (16W/5T/3L).

Weak or warning scenarios:

Scenario Net win Δ Pref Runs (W/T/L)
▼ Adopt IHttpClientFactory instead of wrapping HttpClient -33.3% -13.3% 0/2/1

Illustrative judge evidence:

  • Adopt IHttpClientFactory instead of wrapping HttpClient: Both are correct, tested solutions using the built-in HTTP-client abstraction. A is marginally stronger because its fake-handler test configuration validates the actual typed-client DI pipeline, while B's direct HttpClient construction is still a valid deterministic unit-test ...

This is one example, not the aggregate verdict. Open Full Results for every judgment.

✅ Improved — migrate-xunit-to-mstest (claude-sonnet-4.6)

Why: Net win +76.9% (11W/1T/1L over 13 stimulus vote(s), sign test p=0.003), mean preference +49.2% across 13 paired run(s) — credibly better

Next action: Review overfit evidence.

State: VALID_PASS (credible_preference_improvement)

Gate evidence: n=13; 11W/1T/1L; d=12; p=0.003; net +76.9%

Overfit: Moderate (score 0.44)

Repeated-run reliability (not used by the gate): 13 paired runs (11W/1T/1L).

Weak or warning scenarios:

Scenario Net win Δ Pref Runs (W/T/L)
= Convert MemberData and TheoryData to DynamicData +0.0% +0.0% 0/1/0
▼ Handle ICollectionFixture explicitly (do not silently widen scope) -100.0% -40.0% 0/0/1

Illustrative judge evidence:

  • Convert MemberData and TheoryData to DynamicData: Position-swap inconsistent (forward: tie, reverse: B). Defaulting to tie.

This is one example, not the aggregate verdict. Open Full Results for every judgment.

✅ Improved — migrate-xunit-to-xunit-v3 (claude-sonnet-4.6)

Why: Net win +100.0% (12W/0T/0L over 12 stimulus vote(s), sign test p=0.000), mean preference +80.0% across 12 paired run(s) — credibly better

Next action: Review overfit evidence.

State: VALID_PASS (credible_preference_improvement)

Gate evidence: n=12; 12W/0T/0L; d=12; p=0.000; net +100.0%

Overfit: Moderate (score 0.21)

Repeated-run reliability (not used by the gate): 12 paired runs (12W/0T/0L).

✅ Improved — platform-detection (claude-sonnet-4.6)

Why: Net win +73.3% (12W/2T/1L over 15 stimulus vote(s), sign test p=0.002), mean preference +42.7% across 30 paired run(s) — credibly better

Next action: Review overfit evidence.

State: VALID_PASS (credible_preference_improvement)

Gate evidence: n=15; 12W/2T/1L; d=13; p=0.002; net +73.3%

Overfit: Moderate (score 0.22)

Repeated-run reliability (not used by the gate): 30 paired runs (22W/6T/2L).

Weak or warning scenarios:

Scenario Net win Δ Pref Runs (W/T/L)
= Directory.Build.targets disables a runner selected in the project +0.0% +0.0% 0/2/0
▼ MSTest.Sdk explicitly opts back into VSTest -50.0% -20.0% 0/1/1
= Microsoft.NET.Test.Sdk alongside an MTP runner property +0.0% +0.0% 1/0/1

Illustrative judge evidence:

  • Directory.Build.targets disables a runner selected in the project: The responses reach the same correct result, satisfy the required initial platform/framework lines, and give materially equivalent, accurate explanations of the decisive late import.

This is one example, not the aggregate verdict. Open Full Results for every judgment.

✅ Improved — platform-detection (gpt-5.6-luna)

Why: Net win +40.0% (7W/7T/1L over 15 stimulus vote(s), sign test p=0.035), mean preference +14.0% across 30 paired run(s) — credibly better

Next action: Review overfit evidence.

State: VALID_PASS (credible_preference_improvement)

Gate evidence: n=15; 7W/7T/1L; d=8; p=0.035; net +40.0%

Overfit: Moderate (score 0.23)

Repeated-run reliability (not used by the gate): 30 paired runs (11W/17T/2L).

Weak or warning scenarios:

Scenario Net win Δ Pref Runs (W/T/L)
= Classic packages.config project requires the standalone VSTest toolchain +0.0% +0.0% 0/2/0
= Directory.Build.targets disables a runner selected in the project +0.0% +0.0% 0/2/0
= MSTest.Sdk explicitly opts back into VSTest +0.0% +0.0% 0/2/0
= MTP signal set in Directory.Build.props rather than the project file +0.0% +0.0% 0/2/0
▼ Project-level bridge opt-out overrides Directory.Build.props -50.0% -20.0% 0/1/1
= SDK 10 explicit VSTest mode still bridges to MTP +0.0% +0.0% 0/2/0
= SDK 9 MTP signal and framework versions live in Directory.Packages.props +0.0% +0.0% 1/0/1
= SDK 9 runner without bridge remains on VSTest +0.0% +0.0% 0/2/0

Illustrative judge evidence:

  • Classic packages.config project requires the standalone VSTest toolchain: Position-swap inconsistent (forward: B, reverse: tie). Defaulting to tie.

This is one example, not the aggregate verdict. Open Full Results for every judgment.

✅ Improved — run-tests (claude-sonnet-4.6)

Why: Net win +70.0% (15W/4T/1L over 20 stimulus vote(s), sign test p=0.000), mean preference +61.0% across 20 paired run(s) — credibly better

Next action: Review overfit evidence.

State: VALID_PASS (credible_preference_improvement)

Gate evidence: n=20; 15W/4T/1L; d=16; p=0.000; net +70.0%

Overfit: Moderate (score 0.42)

Repeated-run reliability (not used by the gate): 20 paired runs (15W/4T/1L).

Weak or warning scenarios:

Scenario Net win Δ Pref Runs (W/T/L)
= Combine multiple filter criteria on VSTest MSTest +0.0% +0.0% 0/1/0
= Enable a diagnostic log for a VSTest project +0.0% +0.0% 0/1/0
= Enable diagnostic logs for a native MTP project +0.0% +0.0% 0/1/0
▼ Run one VSTest invocation without rebuilding -100.0% -40.0% 0/0/1
= Select one target framework in a multi-targeted project +0.0% +0.0% 0/1/0

Illustrative judge evidence:

  • Combine multiple filter criteria on VSTest MSTest: The final answers are substantively identical and correct. B adds environment-specific context that is unnecessary for the request, while A is more concise, but this does not create a meaningful quality difference.

This is one example, not the aggregate verdict. Open Full Results for every judgment.

✅ Improved — run-tests (gpt-5.6-luna)

Why: Net win +60.0% (13W/6T/1L over 20 stimulus vote(s), sign test p=0.001), mean preference +36.0% across 20 paired run(s) — credibly better

Next action: Fix activation gaps; Review overfit evidence.

State: VALID_PASS (credible_preference_improvement)

Gate evidence: n=20; 13W/6T/1L; d=14; p=0.001; net +60.0%

Warnings: Activation: isolated 17/20; plugin 18/20

Overfit: Moderate (score 0.27)

Repeated-run reliability (not used by the gate): 20 paired runs (13W/6T/1L).

Weak or warning scenarios:

Scenario Net win Δ Pref Runs (W/T/L)
▼ Collect coverage on an SDK 9 MTP bridge -100.0% -40.0% 0/0/1
▲ Combine multiple filter criteria on VSTest MSTest +100.0% +40.0% 1/0/0
= Enable a diagnostic log for a VSTest project +0.0% +0.0% 0/1/0
▲ Filter one NUnit class on VSTest +100.0% +40.0% 1/0/0
= Generate TRX from a VSTest project +0.0% +0.0% 0/1/0
= MTP project on SDK 10 passes args directly +0.0% +0.0% 0/1/0
= Preserve the runner for a classic packages.config project +0.0% +0.0% 0/1/0
= Run one VSTest invocation without rebuilding +0.0% +0.0% 0/1/0
= Select one target framework in a multi-targeted project +0.0% +0.0% 0/1/0

Illustrative judge evidence:

  • Collect coverage on an SDK 9 MTP bridge: Both responses produce the identical, correct command and follow the constraints. A is slightly better because it mentions the required code coverage extension package, adding useful and correct context, whereas B omits it. The difference is minor since the core answer is the ...

This is one example, not the aggregate verdict. Open Full Results for every judgment.

✅ Improved — scaffold-dotnet-test-project (claude-sonnet-4.6)

Why: Net win +66.7% (7W/1T/1L over 9 stimulus vote(s), sign test p=0.035), mean preference +40.0% across 9 paired run(s) — credibly better

Next action: Fix activation gaps.

State: VALID_PASS (credible_preference_improvement)

Gate evidence: n=9; 7W/1T/1L; d=8; p=0.035; net +66.7%

Warnings: Activation: isolated 8/9; plugin 6/9

Overfit: Low (score 0.18)

Repeated-run reliability (not used by the gate): 9 paired runs (7W/1T/1L).

Weak or warning scenarios:

Scenario Net win Δ Pref Runs (W/T/L)
▲ Add an existing test project to the CI solution filter +100.0% +40.0% 1/0/0
▲ Register an existing test project in the CI SDK solution +100.0% +40.0% 1/0/0
▼ Repair a missing production project reference -100.0% -40.0% 0/0/1
= Reuse an existing suitable test project +0.0% +0.0% 0/1/0

Illustrative judge evidence:

  • Repair a missing production project reference: The underlying repairs and verification are equivalently correct, but A's final report is more precise about the file and reference added, whereas B inaccurately/ambiguously names TextTools.csproj as the test project file.

This is one example, not the aggregate verdict. Open Full Results for every judgment.

✅ Improved — test-anti-patterns (claude-sonnet-4.6)

Why: Net win +88.9% (8W/1T/0L over 9 stimulus vote(s), sign test p=0.004), mean preference +48.9% across 9 paired run(s) — credibly better

Next action: Review overfit evidence.

State: VALID_PASS (credible_preference_improvement)

Gate evidence: n=9; 8W/1T/0L; d=8; p=0.004; net +88.9%

Overfit: Moderate (score 0.27)

Repeated-run reliability (not used by the gate): 9 paired runs (8W/1T/0L).

Weak or warning scenarios:

Scenario Net win Δ Pref Runs (W/T/L)
= Stay dormant for test trait distribution +0.0% +0.0% 0/1/0

Illustrative judge evidence:

  • Stay dormant for test trait distribution: Position-swap inconsistent (forward: tie, reverse: A). Defaulting to tie.

This is one example, not the aggregate verdict. Open Full Results for every judgment.

✅ Improved — testability-obstacle (claude-sonnet-4.6)

Why: Net win +87.5% (7W/1T/0L over 8 stimulus vote(s), sign test p=0.008), mean preference +37.5% across 16 paired run(s) — credibly better

Next action: Review overfit evidence.

State: VALID_PASS (credible_preference_improvement)

Gate evidence: n=8; 7W/1T/0L; d=7; p=0.008; net +87.5%

Overfit: Moderate (score 0.48)

Repeated-run reliability (not used by the gate): 16 paired runs (13W/2T/1L).

Weak or warning scenarios:

Scenario Net win Δ Pref Runs (W/T/L)
= Make random promo codes deterministic with a narrow seam +0.0% +0.0% 1/0/1

Illustrative judge evidence:

  • Make random promo codes deterministic with a narrow seam: The implementations appear equivalently correct and appropriately minimal. A is marginally stronger because its passing deterministic suite exercises prefix normalization more thoroughly, with no evident downside.

This is one example, not the aggregate verdict. Open Full Results for every judgment.

✅ Improved — testability-obstacle (gpt-5.6-luna)

Why: Net win +62.5% (5W/3T/0L over 8 stimulus vote(s), sign test p=0.031), mean preference +30.0% across 16 paired run(s) — credibly better

Next action: Fix activation gaps.

State: VALID_PASS (credible_preference_improvement)

Gate evidence: n=8; 5W/3T/0L; d=5; p=0.031; net +62.5%

Warnings: Activation: isolated 8/8; plugin 7/8

Overfit: Low (score 0.17)

Repeated-run reliability (not used by the gate): 16 paired runs (9W/7T/0L).

Weak or warning scenarios:

Scenario Net win Δ Pref Runs (W/T/L)
= Make delayed renewal testable with built-in fake time +0.0% +0.0% 0/2/0
= Restore environment overrides after exceptions and nesting +0.0% +0.0% 0/2/0
▲ Scope deterministic identity generation without breaking callers +100.0% +40.0% 2/0/0
= Test report export without touching the real filesystem +0.0% +0.0% 0/2/0

Illustrative judge evidence:

  • Make delayed renewal testable with built-in fake time: Position-swap inconsistent (forward: B, reverse: tie). Defaulting to tie.

This is one example, not the aggregate verdict. Open Full Results for every judgment.

✅ Improved — writing-mstest-tests (claude-sonnet-4.6)

Why: Net win +85.7% (13W/0T/1L over 14 stimulus vote(s), sign test p=0.001), mean preference +51.4% across 14 paired run(s) — credibly better

Next action: Review overfit evidence.

State: VALID_PASS (credible_preference_improvement)

Gate evidence: n=14; 13W/0T/1L; d=14; p=0.001; net +85.7%

Overfit: Moderate (score 0.48)

Repeated-run reliability (not used by the gate): 14 paired runs (13W/0T/1L).

Weak or warning scenarios:

Scenario Net win Δ Pref Runs (W/T/L)
▼ Diagnose failed numeric boundaries -100.0% -100.0% 0/0/1

Illustrative judge evidence:

  • Diagnose failed numeric boundaries: A provides the correct value-first MSTest rewrites with the original strict and inclusive semantics. B reverses every API's argument order, making all three checks incorrect despite removing generic Boolean assertions.

This is one example, not the aggregate verdict. Open Full Results for every judgment.

Routine passing details for 7 results are in Full Results.

🔍 Full Results - all metrics and investigation details

To investigate non-passing or warning results, paste this to your AI coding agent:

For PR 1079 in dotnet/skills, download eval artifacts with gh run download 33126471116 --repo dotnet/skills --pattern "vally-results-*" --dir ./eval-results, then fetch https://raw.githubusercontent.com/dotnet/skills/47bbc32ec20073d0b006fb460d95ba0e3cba92f6/eng/vally-adapter/InvestigatingResults.md and follow it. Classify each result as measurement-invalid, underpowered, not-proven, preference-loss, or passing-with-warning. Use stateReason, result accounting, weak scenarios, and judge evidence to give the cause and exact next fix.

▶ Sessions Visualisation -- interactive replay of all evaluation sessions
📊 Session Analytics (preview) -- aggregated metrics across evaluation sessions

@Evangelink

Copy link
Copy Markdown
Member Author

@AbhitejJohn all comments have been addressed, there are still 11 evals that needs tweaking but I'd like to merge this one as-is and then look at how to improve the rest. Please approve or suggest other changes!

@Evangelink
Evangelink merged commit 2b9056b into main Aug 28, 2026
92 checks passed
@Evangelink
Evangelink deleted the dev/amauryleve/dormancy-preference-isolation branch August 28, 2026 12:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

waiting-on-author PR state label

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants