The single highest-value node. All csproj files reference RhinoCommon/Grasshopper via absolute HintPath (C:\Program Files\Rhino 8...), so the solution cannot build on a GitHub runner and the test battery cannot run as an automatic PR judge.
Task: switch the 4+ csproj to the RhinoCommon / Grasshopper NuGet packages (pin to Rhino 8 versions), keeping net48 targeting. Known trap (documented in tests csproj comments): Rhino.Inside 7 NuGet transitively pins RhinoCommon 7 and conflicts (CS1705) - use the plain RhinoCommon 8.x package, not Rhino.Inside.
Done when: dotnet build Frahan.StonePack.sln -c Debug succeeds on a machine WITHOUT Rhino installed, and FRAHAN_SKIP_NATIVE=1 dotnet run -c Debug in tests/Frahan.StonePack.Tests reports the same PASS count as on a Rhino machine (~1056/0/154).
Unblocks: the CI-workflow node. Size: M.
The single highest-value node. All csproj files reference RhinoCommon/Grasshopper via absolute HintPath (C:\Program Files\Rhino 8...), so the solution cannot build on a GitHub runner and the test battery cannot run as an automatic PR judge.
Task: switch the 4+ csproj to the RhinoCommon / Grasshopper NuGet packages (pin to Rhino 8 versions), keeping net48 targeting. Known trap (documented in tests csproj comments): Rhino.Inside 7 NuGet transitively pins RhinoCommon 7 and conflicts (CS1705) - use the plain RhinoCommon 8.x package, not Rhino.Inside.
Done when:
dotnet build Frahan.StonePack.sln -c Debugsucceeds on a machine WITHOUT Rhino installed, andFRAHAN_SKIP_NATIVE=1 dotnet run -c Debugin tests/Frahan.StonePack.Tests reports the same PASS count as on a Rhino machine (~1056/0/154).Unblocks: the CI-workflow node. Size: M.