PR #445 (the ShipIt build-system work) hit a failing build (ubuntu-latest).
That PR only touches CHANGELOG.md and a few markdown docs, so a real test failure made no sense. Dug into it, and it isn't one. Every PR is going to fail this check right now, regardless of what's in it, until someone deals with this.
What's actually failing
11 tests fail, spread across four libraries that have nothing to do with each other:
GenORDER.Tests, GenCORE.Tests, ZForm.Tests, GenFORM.Tests. Same root error in all of them:
op_HatEquals is the ^= operator from the Aether optics library, which GenCORE.Lib uses in its range/limit code. F# lets you define custom operators like this, but the .NET test runner (Expecto, via reflection) has to find and call it dynamically while discovering tests, rather than the compiler wiring up the call directly the way it does in normal code. That's the part that's seemingly now broken.
Ruled out the obvious explanations
First guess was flakiness. Reran the exact same failed job. Got the exact same 11 failures, same error, same stack trace, both times. A timing issue wouldn't reproduce that precisely twice in a row, so that's out.
Second guess was a dependency bump. Checked paket.lock: Aether is pinned at 8.3.1, FSharp.Core at 10.1.203. CI runs paket restore, which uses the lock file exactly as written rather than re-resolving anything, so the packages didn't move either.
Last known green run, 11 August: .NET Core SDK with version '10.0.302' is already installed.
The failing run, 12 August: Installed version is 10.0.400. (freshly downloaded, not cached, so this is new to the runner)
What actually changed
global.json has:
{ "sdk": { "version": "10.0.0", "rollForward": "latestFeature" } }
Possible fixes:
- Tighten global.json's rollForward (to patch or disable, say) so a future SDK release can't silently change what CI runs on without a deliberate, reviewed version bump.
- Fix the GenCORE.Lib optics usage so it works under the newer SDK's reflection behaviour. Doing only option 1 just postpones this until someone next bumps the pinned SDK on purpose.
PR #445 (the ShipIt build-system work) hit a failing
build (ubuntu-latest).That PR only touches
CHANGELOG.mdand a few markdown docs, so a real test failure made no sense. Dug into it, and it isn't one. Every PR is going to fail this check right now, regardless of what's in it, until someone deals with this.What's actually failing
11 tests fail, spread across four libraries that have nothing to do with each other:
GenORDER.Tests,GenCORE.Tests,ZForm.Tests,GenFORM.Tests. Same root error in all of them:op_HatEqualsis the^=operator from the Aether optics library, whichGenCORE.Libuses in its range/limit code. F# lets you define custom operators like this, but the .NET test runner (Expecto, via reflection) has to find and call it dynamically while discovering tests, rather than the compiler wiring up the call directly the way it does in normal code. That's the part that's seemingly now broken.Ruled out the obvious explanations
First guess was flakiness. Reran the exact same failed job. Got the exact same 11 failures, same error, same stack trace, both times. A timing issue wouldn't reproduce that precisely twice in a row, so that's out.
Second guess was a dependency bump. Checked
paket.lock: Aether is pinned at8.3.1,FSharp.Coreat10.1.203. CI runspaket restore, which uses the lock file exactly as written rather than re-resolving anything, so the packages didn't move either.Last known green run, 11 August: .NET Core SDK with version '10.0.302' is already installed.
The failing run, 12 August: Installed version is 10.0.400. (freshly downloaded, not cached, so this is new to the runner)
What actually changed
global.jsonhas:{ "sdk": { "version": "10.0.0", "rollForward": "latestFeature" } }Possible fixes: