b2d19a1730
Two independent housekeeping defects. DriverTypeNamesGuardTests (3 failures, pre-existing). The guard discovers each driver's *DriverFactoryExtensions.Register by reflection and invokes it, then asserts the registered type-name set matches the DriverTypeNames constants. It built the argument array positionally — registry first, null for everything after — on the assumption that the remaining parameters were optional. Galaxy's are not: its Register takes a REQUIRED ISecretResolver and guards it with ArgumentNullException.ThrowIfNull, so the reflective call threw and all three parity facts failed. OpcUaClient's equivalent parameter is optional, which is why only Galaxy tripped it. Worth stating plainly: the guard was not partially broken, it was completely inert. The throw happened while building the registered set, so NO driver's parity was ever checked — a genuine drift in any of the nine would have been invisible behind the same three red tests. Arguments are now supplied by parameter type, and a parameter the helper cannot satisfy fails with a message naming the factory and the parameter instead of an opaque ArgumentNullException. The stand-in resolver reports every secret absent, so if the "factory func is never invoked" assumption is ever broken, the driver fails closed. Core.Abstractions.Tests: 138 passed, 0 failed. MSBuild node reuse. MSBuild leaves worker nodes resident between builds so the next one starts warm; across this session's repeated solution builds and test runs that reached 55 idle processes holding ~6 GB. That is not just untidy — the integration suites assert on timeouts, so memory pressure produces failures indistinguishable from real regressions, the same failure mode the Workstation-GC fix addressed from a different direction. Directory.Build.rsp now passes -nodeReuse:false. Measured on the same incremental solution build: 15 residual nodes without it, 2 with, and elapsed time 6.12s vs 6.11s — no cost worth the memory on this machine. Claude-Session: https://claude.ai/code/session_01GASWkNEi68FSCtvr6rLoEW
13 lines
695 B
Plaintext
13 lines
695 B
Plaintext
# MSBuild auto-response file, applied to every build run from this repo root.
|
|
#
|
|
# Disable the MSBuild node pool. By default MSBuild leaves worker nodes resident
|
|
# after a build so the next one starts warm. Across a session of repeated
|
|
# solution-wide builds and test runs this repo accumulated 55 idle nodes holding
|
|
# ~6 GB, which is not merely untidy: the integration suites assert on timeouts,
|
|
# and memory pressure turns those into failures indistinguishable from real
|
|
# regressions (see the Workstation-GC note in Host.IntegrationTests.csproj for
|
|
# the same failure mode from a different cause).
|
|
#
|
|
# The cost is a small startup penalty per build. That is a good trade here.
|
|
-nodeReuse:false
|