Repository navigation
Improve consolidated MSBuild guidance and correctness checks - #1348
YuliiaKovalova wants to merge 9 commits into
Conversation
Clarify required imports and controlled performance advice. Add executable hook, incremental-generation, and package-consumer contracts plus installed-reference diagnostics. Preserve main tooling and migrated dormancy metadata. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Skill Coverage Report
Uncovered:
|
There was a problem hiding this comment.
🟡 Changes recommended
The graders can accept build-time changes to protected inputs and deletion or corruption of the supplied package.
2 open issues
What changed in this PR
This PR strengthens the consolidated MSBuild skill’s import and performance guidance, adds executable correctness contracts, and introduces a smoke test for installed-reference access through the logged SDK evaluation path.
Changes:
- Clarifies required-import behavior and controlled, workload-specific performance comparisons.
- Adds hook, incremental-generation, and package-consumer fixtures, graders, and regression tests.
- Adds exact-path reference-read checks with retained execution evidence and troubleshooting guidance.
| File | Description |
|---|---|
| tests/dotnet/msbuild/references/incremental-membership.patch | Adds a golden input-membership repair. |
| tests/dotnet/msbuild/references/hook-composition.patch | Adds a golden optional/required import repair. |
| tests/dotnet/msbuild/graders/check-contracts.test.mjs | Tests golden repairs and broken mutations. |
| tests/dotnet/msbuild/graders/check-contracts.mjs | Implements executable correctness and preservation checks. |
| tests/dotnet/msbuild/fixtures/packed-import/src/Producer/Producer.csproj | Defines the package producer. |
| tests/dotnet/msbuild/fixtures/packed-import/src/Producer/Packaging.props | Configures external nuspec packaging. |
| tests/dotnet/msbuild/fixtures/packed-import/src/Producer/buildTransitive/common/Example.props | Supplies the package contract property. |
| tests/dotnet/msbuild/fixtures/packed-import/src/Producer/build/net8.0/Example.props | Imports the required packed asset. |
| tests/dotnet/msbuild/fixtures/packed-import/eng/packaging/Example.nuspec | Maps source assets to package paths. |
| tests/dotnet/msbuild/fixtures/packed-import/consumer/Consumer.proj | Exercises restored package imports. |
| tests/dotnet/msbuild/fixtures/incremental/Specs/beta.json | Supplies a removable generator input. |
| tests/dotnet/msbuild/fixtures/incremental/Specs/alpha.json | Supplies an editable generator input. |
| tests/dotnet/msbuild/fixtures/incremental/Generator.targets | Generates catalog content and records executions. |
| tests/dotnet/msbuild/fixtures/incremental/Build.proj | Reproduces stale input-membership behavior. |
| tests/dotnet/msbuild/fixtures/hooks/required.targets | Records required-hook import order. |
| tests/dotnet/msbuild/fixtures/hooks/optional.targets.example | Supplies the optional-hook definition. |
| tests/dotnet/msbuild/fixtures/hooks/Build.proj | Reproduces mixed-list import guarding. |
| tests/dotnet/msbuild/eval.yaml | Adds executable contracts and a controlled timing scenario. |
| plugins/dotnet/skills/msbuild/SKILL.md | Strengthens import, timing, and reference-reading guidance. |
| plugins/dotnet/skills/msbuild/references/extension-points.md | Clarifies optional versus required imports. |
| plugins/dotnet/skills/msbuild/references/build-perf-baseline.md | Clarifies fair comparisons and scoped conclusions. |
| plugins/dotnet/README.md | Documents contracts and reference-access qualification. |
| eng/vally-adapter/InvestigatingResults.md | Documents the logged reference-access smoke. |
| eng/evaluation-tools/smoke-skill-references.test.mjs | Tests reference-read acceptance and rejection. |
| eng/evaluation-tools/smoke-skill-references.mjs | Implements exact-path reads and evidence retention. |
Review effort: Balanced
|
👋 @YuliiaKovalova — this PR has 2 unresolved review thread(s). When you're ready, please address the feedback and push an update; the triage bot will pick up the next state automatically. (Add the |
Protect source inputs before and after each build, consume the exact supplied package, and stage trusted grader state only after agent execution. Add nonce-based hook checks, junction-safe entrypoints, and CI coverage for contract regressions. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
Addressed all six additional findings in 7a20ca5:
Local validation: 44 tests passed, all four production-oracle goldens passed (including the three executable graders), 111/111 eval specs validated, and the evaluation quality gate reported no errors. Remote CI is separate from these local results. |
Compare the entire submitted Specs tree with its trusted file/hash map before replay, with regressions for top-level and nested additions. Update the CI smoke assertion for the renamed combined tooling/MSBuild test step and verify the contract test selector. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
📊 Skill and Agent Evaluation Results2 model/target results across 1 target and 2 models — ✅ 0 improved, ➖ 2 results without a clear winner, Measurement identity: evaluated commit Measurement health: 2 expected / 2 observed / 2 written; 0 missing, 0 unexpected, 0 invalid; 0 recovered comparison error slots and 0 unresolved comparison error slots. Objective completion gate: not enabled. Aggregate completion transitions are telemetry only, so this report does not claim that zero objective regressions were proven. A result passes only when preference-eligible distinct-stimulus votes have aggregate net win of at least 20% and an exact one-sided sign-test result of
ℹ️ How to read this report
➖ Improvement signal, tie-limited — msbuild (claude-sonnet-5)Why: Net win +44.4% (4W/5T/0L over 9 preference-eligible stimulus vote(s), sign test p=0.063), mean preference +3.8% across 48 paired run(s), 7 dormancy stimulus/stimuli excluded from preference — not credible — 5 of 9 preference-eligible stimulus vote(s) tied, leaving only 4 discordant preference 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: The signal favors the target, but ties leave too few discordant tasks; inspect ties and predeclare more discriminating breadth. State: Gate evidence: n=9; 4W/5T/0L; d=4; p=0.063; net +44.4%; 7 dormancy excluded Overfit: Moderate (score 0.41) Repeated-run reliability (not used by the gate): 48 paired runs (15W/24T/9L). Weak or warning scenarios:
Illustrative judge evidence:
This is one example, not the aggregate verdict. Open Full Results for every judgment. ➖ Improvement signal, tie-limited — msbuild (gpt-5.6-luna)Why: Net win +22.2% (3W/5T/1L over 9 preference-eligible stimulus vote(s), sign test p=0.312), mean preference +1.3% across 48 paired run(s), 7 dormancy stimulus/stimuli excluded from preference — not credible — 5 of 9 preference-eligible stimulus vote(s) tied, leaving only 4 discordant preference 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: The signal favors the target, but ties leave too few discordant tasks; inspect ties and predeclare more discriminating breadth. State: Gate evidence: n=9; 3W/5T/1L; d=4; p=0.312; net +22.2%; 7 dormancy excluded Overfit: Moderate (score 0.47) Repeated-run reliability (not used by the gate): 48 paired runs (4W/40T/4L). Weak or warning scenarios:
Illustrative judge evidence:
This is one example, not the aggregate verdict. Open Full Results for every judgment. 🔍 Full Results - all metrics and investigation details
|
|
✅ Evaluation passed for |
Decouple executable fixtures from the repository preview authoring SDK. The retained evaluation failed all 54 new contract invocations before replay on SDK 10 hosts. Keep grading-only policy integrity and actual-SDK checks, use the same stable policy in CI, and verify goldens and regressions without the preview SDK. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Answer settled advisory questions without reference or workspace work. Make critical-path attribution and same-workload old/new setting comparisons explicit, and enforce the advisory work budget in the existing evaluation cases. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
📊 Skill and Agent Evaluation Results2 model/target results across 1 target and 2 models — ✅ 0 improved, ➖ 1 result without a clear winner, Measurement identity: evaluated commit Measurement health: 2 expected / 2 observed / 2 written; 0 missing, 0 unexpected, 0 invalid; 0 recovered comparison error slots and 0 unresolved comparison error slots. Objective completion gate: not enabled. Aggregate completion transitions are telemetry only, so this report does not claim that zero objective regressions were proven. A result passes only when preference-eligible distinct-stimulus votes have aggregate net win of at least 20% and an exact one-sided sign-test result of
ℹ️ How to read this report
⛔ Activation contract failed — msbuild (gpt-5.6-luna)Why: Net win +33.3% (4W/4T/1L over 9 preference-eligible stimulus vote(s), sign test p=0.188), mean preference +6.7% across 48 paired run(s), 7 dormancy stimulus/stimuli excluded from preference — activation contract failed (1 explicit dormancy scenario(s) activated the isolated target skill) Next action: Narrow skill routing so the listed off-target scenarios stay dormant. State: Gate evidence: n=9; 4W/4T/1L; d=5; p=0.188; net +33.3%; 7 dormancy excluded Warnings: Dormancy contract: 1 unexpected activation(s) Repeated-run reliability (not used by the gate): 48 paired runs (9W/38T/1L). Weak or warning scenarios:
Illustrative judge evidence:
This is one example, not the aggregate verdict. Open Full Results for every judgment. ➖ Improvement signal, unproven — msbuild (claude-sonnet-5)Why: Net win +44.4% (6W/1T/2L over 9 preference-eligible stimulus vote(s), sign test p=0.145), mean preference +14.6% across 48 paired run(s), 7 dormancy stimulus/stimuli excluded from preference — not credible (sign test p=0.145 > 0.05) Next action: The signal favors the target but is inconsistent; inspect tied or lost scenarios and fix weak behavior. State: Gate evidence: n=9; 6W/1T/2L; d=8; p=0.145; net +44.4%; 7 dormancy excluded Warnings: Activation: isolated 9/9; plugin 8/9 Repeated-run reliability (not used by the gate): 48 paired runs (21W/19T/8L). Weak or warning scenarios:
Illustrative judge evidence:
This is one example, not the aggregate verdict. Open Full Results for every judgment. 🔍 Full Results - all metrics and investigation details
|
The next hosted image had SDK 10.0.401 rather than 10.0.402. Use the stable 10.0.100 baseline with latestMajor roll-forward instead of a latest-patch floor. Reproduced the previous failure with an isolated 10.0.204 inventory, then verified all 47 contract tests and four production goldens on that older feature band. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Exclude failed assertions after successful builds before listing positive build cues. Keep genuine dotnet-test build failures in scope, and attribute wall time only after confirming task intervals and dependency resumption. Non-voting before/after checks preserve both routing boundaries on Sonnet and Luna. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
📊 Skill and Agent Evaluation Results2 model/target results across 1 target and 2 models — ✅ 0 improved, ➖ 2 results without a clear winner, Measurement identity: evaluated commit Measurement health: 2 expected / 2 observed / 2 written; 0 missing, 0 unexpected, 0 invalid; 0 recovered comparison error slots and 0 unresolved comparison error slots. Objective completion gate: not enabled. Aggregate completion transitions are telemetry only, so this report does not claim that zero objective regressions were proven. A result passes only when preference-eligible distinct-stimulus votes have aggregate net win of at least 20% and an exact one-sided sign-test result of
ℹ️ How to read this report
➖ Improvement signal, unproven — msbuild (claude-sonnet-5)Why: Net win +33.3% (5W/2T/2L over 9 preference-eligible stimulus vote(s), sign test p=0.227), mean preference +3.3% across 48 paired run(s), 7 dormancy stimulus/stimuli excluded from preference — not credible (sign test p=0.227 > 0.05) Next action: The signal favors the target but is inconsistent; inspect tied or lost scenarios and fix weak behavior. State: Gate evidence: n=9; 5W/2T/2L; d=7; p=0.227; net +33.3%; 7 dormancy excluded Repeated-run reliability (not used by the gate): 48 paired runs (13W/26T/9L). Weak or warning scenarios:
Illustrative judge evidence:
This is one example, not the aggregate verdict. Open Full Results for every judgment. ➖ Baseline signal, tie-limited — msbuild (gpt-5.6-luna)Why: Net win -11.1% (1W/6T/2L over 9 preference-eligible stimulus vote(s), sign test p=0.500), mean preference -1.7% across 48 paired run(s), 7 dormancy stimulus/stimuli excluded from preference — no improvement Next action: Inspect activation-only failed runs before rewriting skill content; the model stopped after loading a skill. State: Gate evidence: n=9; 1W/6T/2L; d=3; p=0.500; net -11.1%; 7 dormancy excluded Warnings: Activation-only stop: isolated 1 failed run; Activation-only stop: plugin 1 failed run Repeated-run reliability (not used by the gate): 48 paired runs (4W/38T/6L). Weak or warning scenarios:
Illustrative judge evidence:
This is one example, not the aggregate verdict. Open Full Results for every judgment. 🔍 Full Results - all metrics and investigation details
|
The corrected SDK exposed inherited PackageSourceMapping that rejected Example in every role. Give the disposable consumer an explicit local-feed config. The hostile-parent regression fails before the fix, all 48 tests and four goldens now pass, and all 18 unchanged recorded package submissions replay successfully without new model calls. Skill content and voting inputs remain unchanged. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
Further iteration is published through Baseline improvement is still unproven. The latest full skill-content run at All 54 hosted command graders selected SDK10.0.401; all 36 hook/incremental replays passed. The 18 package failures were instead inherited host NuGet source mapping. The final grader-only repair uses an explicit local-feed restore config. All 18 actual unchanged submissions now pass local Windows/SDK10.0.402 replay through production grading staging under reproduced hostile mapping, without new model calls or preference votes. The hosted Linux regression also passes. The two Luna activation-only warnings are not continuation stops here: both answers are substantive correct no-change explanations with passing prompt grades. The failed package code grader caused the misleading classification; no runtime workaround was added. Final-head |
Put evaluation phases, built-in membership tracking, source-safe verification, and settled-review fast paths at their decision points. Preserve the original workload in setting-only performance comparisons. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
📊 Skill and Agent Evaluation Results2 model/target results across 1 target and 2 models — ✅ 0 improved, ➖ 1 result without a clear winner, Measurement identity: evaluated commit Measurement health: 2 expected / 2 observed / 2 written; 0 missing, 0 unexpected, 0 invalid; 0 recovered comparison error slots and 0 unresolved comparison error slots. Objective completion gate: not enabled. Aggregate completion transitions are telemetry only, so this report does not claim that zero objective regressions were proven. A result passes only when preference-eligible distinct-stimulus votes have aggregate net win of at least 20% and an exact one-sided sign-test result of
ℹ️ How to read this report
⛔ Activation contract failed — msbuild (gpt-5.6-luna)Why: Net win -33.3% (0W/6T/3L over 9 preference-eligible stimulus vote(s), sign test p=0.125), mean preference +0.0% across 48 paired run(s), 7 dormancy stimulus/stimuli excluded from preference — activation contract failed (1 explicit dormancy scenario(s) activated the isolated target skill) Next action: Narrow skill routing so the listed off-target scenarios stay dormant. State: Gate evidence: n=9; 0W/6T/3L; d=3; p=0.125; net -33.3%; 7 dormancy excluded Warnings: Dormancy contract: 1 unexpected activation(s) Repeated-run reliability (not used by the gate): 48 paired runs (4W/40T/4L). Weak or warning scenarios:
Illustrative judge evidence:
This is one example, not the aggregate verdict. Open Full Results for every judgment. ➖ Improvement signal, unproven — msbuild (claude-sonnet-5)Why: Net win +44.4% (6W/1T/2L over 9 preference-eligible stimulus vote(s), sign test p=0.145), mean preference +11.3% across 48 paired run(s), 7 dormancy stimulus/stimuli excluded from preference — not credible (sign test p=0.145 > 0.05) Next action: The signal favors the target but is inconsistent; inspect tied or lost scenarios and fix weak behavior. State: Gate evidence: n=9; 6W/1T/2L; d=8; p=0.145; net +44.4%; 7 dormancy excluded Warnings: Activation: isolated 9/9; plugin 8/9 Repeated-run reliability (not used by the gate): 48 paired runs (20W/17T/11L). Weak or warning scenarios:
Illustrative judge evidence:
This is one example, not the aggregate verdict. Open Full Results for every judgment. 🔍 Full Results - all metrics and investigation details
|
|
Published the next content refinement in c173383: property/item evaluation phases and framework ownership, built-in membership tracking, byte-preserving verification in disposable copies, optional reference reads, and matched original-workload comparisons. Production stimuli, graders, repeats, budgets, and thresholds are unchanged. The single full comparison is complete, with all 288 trials accounted for:
This head is not yet a demonstrated baseline improvement or promotion-ready. Actual intended activation was Sonnet 25/27 isolated and 20/27 plugin, versus Luna 27/27 in both arms. One unactivated Sonnet plugin repair modified protected source bytes and was correctly rejected; the other 53/54 new-contract grades passed. Luna's approximately 13% lower target-task token use does not cancel its preference/routing results. Complete costs, losing-case explanations, native results, and prior unfavorable diagnostics are retained in the PR description. |

Summary
Improve the consolidated
dotnet/msbuildskill from observed losing answers, missed activation, and unnecessary work, while preserving the original evaluation's nine preference-eligible tasks, seven dormancy cases, three repeats, time budget, concurrency, and scoring thresholds.No baseline win is claimed, and this head is not promotion-ready. The latest published content is
c173383d5d4d28b217e56988c9d34c5fdef74e18. Its one new default-profile comparison is complete: Sonnet has valid but unproven 6W / 1T / 2L, p=0.14453125; Luna has 0W / 6T / 3L, p=0.125 and fails the framework-migration dormancy contract. Complete raw artifacts, not green workflow jobs, determine these conclusions.SKILL.mdand three existing references; production stimuli, graders, fixtures, dependencies, and gate settings are unchanged from6d24709.The specialist plugin and unrelated work in #1311 are excluded. Current main's upstream reader/session-history repair through Vally 0.18 (#1309) is retained.
Evidence-led content iteration
The earlier losing-trial explanations included:
The current entry puts those decisions before reference browsing: preserve framework ownership; move only the early property assignment; keep actual input files in
Inputs; useWriteLinesToFile/WriteOnlyWhenDifferentfor membership state; and preserve exact source bytes during verification.Native SDK 10.0.403 evaluation-only probes confirmed that an early property condition misses a framework assigned in the project body while the conditional package item in the same import is already correct. Moving only the property restores
FEATURE, with package version and F# source order unchanged. A globally supplied framework already satisfies the early condition. The standard F# SDK already setsEnableDefaultCompileItems=false; the skill does not adopt a judge's incorrect claim that adding that switch is a required repair. These probes did not restore or compile the project.A separate native custom-target probe started with no inputs: the built-in task created an empty membership file and output, generation ran once, and the second unchanged
Buildpreserved both timestamps and skipped generation.Non-voting development diagnostics
All snapshots and results are retained separately. Before/after below means previous skill versus candidate skill, not no skill versus skill. These local trials do not add independent preference votes.
finally/hash guidance from the shared footer to the repair decision point changed the actual behavior. A five-task follow-up passed 5/5 per family, with 4/4 intended activations and 1/1 assertion dormancy each. Both families tested deletions and empty-input behavior in disposable project copies and passed the real incremental and fixed-package consumer graders. Packed-import, F# and timing advice each used only the skill call, without reference or shell reads.Buildas its example, so consistent adherence to the original-workload default is not established. This is retained as a limitation, not hidden by the passing rubric or followed by unchanged-content reruns.The final entry is 2,912 BPE tokens / 14,791 working-tree bytes, larger than the previous entry. The plugin validator's size warning is report-only. The goal is fewer unnecessary round trips and more correct decisions, not an asserted entry-size reduction or whole-task cost win.
Full paired evidence
Each distinct stimulus contributes one vote; repeated trials and model families are not pooled into extra votes.
4001fb32a436046042e75c173383The
c173383run is a single new-content comparison at the unchanged default profile:claude-sonnet-5andgpt-5.6-luna, with their standard judges, baseline/isolated/plugin arms, and production repeats and budgets. It is bound to that exact PR commit, not the workflow's main-branchhead_sha. It is not an unchanged-content rerun to seek significance.Accounting is complete for both families: 288/288 trials, 48/48 in each family/arm, no errors, no unmatched comparisons, and no missing or duplicate repeat identities. Both canonical records are
VALID_NO_CHANGE; Luna'sstateReasonisactivation_contract_failed, not an environment or measurement failure.Sonnet passed all seven isolated dormancy contracts. Intended-task activation was 25/27 isolated and 20/27 plugin, not the 9/9 and 8/9 case-level presence shown in the automated warning. The isolated arm passed all nine new-contract executions. The plugin arm passed eight of nine: one incremental repair never activated the skill, rewrote a protected spec during verification, and also stopped shared build servers. The native grader correctly rejected it. Source-preserving repair is therefore not established across the normal plugin menu, despite the successful activated development follow-up.
Luna activated on 27/27 intended trials in both isolated and plugin arms and passed all 27/27 new-contract executions across its three arms. However, the isolated skill also activated on the framework-migration request in two of three repeats, leaving 6/7 dormancy contracts satisfied. The full plugin stayed dormant on all 21 off-target trials. The migration answers remained migration plans, but that does not excuse violation of the explicit routing contract.
The two Sonnet preference losses remain advisory depth/restraint issues: the unsupported-speedup answer was less concisely scoped than baseline, and the dependency-wait answer omitted some compiler/analyzer/generator detail and controlled equivalent-build/output validation. Passing prompt grades are not presented as eliminating those shortcomings.
Luna's three preference losses concern capture overhead, clearer hook-repair reasoning and observed
HookOrderevidence, and a more concrete A/B plan with explicit no-cache-purge/server-shutdown constraints. These are reported judge preferences, not failed native hook wiring. A separate incremental repeat passed native replay but failed the explanation rubric: the handoff listed correct outcomes without explaining why current-list timestamps forget removed/older inputs or how the membership file fixes that blind spot.Actual target-task cost
Within each run, the table covers the same nine preference tasks times three repeats per arm. Dormancy and judge usage are excluded; cached input is not counted twice.
Latest
c173383:Sonnet made 160 / 141 / 147 executor requests in baseline / isolated / plugin target arms. This is less overhead than in the previous run, but still not a token-efficiency win over its own current baseline. Missed intended activations also confound attributing lower overhead to better activated workflows. Different runs' absolute token totals are not treated as a matched experiment.
Luna made 132 / 111 / 108 requests. Its target-task token savings are observed with full intended activation, but do not establish a quality win: the preference direction is negative and the isolated dormancy gate fails.
Previous full run,
6042e75:Sonnet remains above its current no-skill token baseline. Luna's measured target-task savings do not override its quality/routing results or establish an across-model promotion. Development reference-read savings are narrower evidence and are not substituted for the full comparison.
Executable grading and review hardening
Earlier commits in this PR:
NuGet.Config.At
c173383, all 54 new-contract grades are accounted for: 18/18 hooks, 18/18 fixed-package consumers, and 17/18 incremental repairs passed. The 53 passing executions resolved SDK 10.0.401. The remaining Sonnet plugin repair was rejected for source mutation before SDK execution, not for SDK resolution or inherited NuGet mapping.Raw artifacts exposed two host defects separately from content quality. Earlier runs had all 54 contract executions fail before replay because the selected SDK patch/preview was unavailable. The 10.0.100 minimum / latestMajor policy was verified in an owned host view exposing only 10.0.204, where all 47 then-existing tests and four production goldens passed. The later hosted run resolved SDK 10.0.401 in all 54 executions: all 36 hook/incremental replays passed, while inherited package-source mapping rejected all 18 package consumers.
Grader-only commit
6d24709fixed that mapping dependency. Its hostile-mapping regression failed before the fix and passed afterward; all 18 unchanged recorded package submissions replayed successfully under the reproduced mapping without new model calls or votes. The two Luna "activation-only stop" warnings were package code-grader failures, not missing answers. No runtime continuation workaround was added.Validation and provenance
6d24709: all three jobs and 48/48 Node cases, no skips. Its four production goldens and hostile-mapping replay also passed. These are prior deterministic results, not newly claimed model outcomes atc173383.Dependencies remain Vally 0.18 / Copilot SDK 1.0.14. The bundled runtime reports
0.0.0; that value is retained rather than interpreted as a released CLI version. Existing environment-alias deprecation and default-scoring warnings remain.Related issue and checklist
Follow-up to #1241; no issue is closed.