Repository navigation
Two shipping packages are excluded from the solution build and only compile during Pack #3841
Description
wolverine.slnx marks seven projects <Build Project="false" />. Two of them are shipping NuGet packages:
| project | package | published |
|---|---|---|
src/Http/Wolverine.Http.Polecat |
WolverineFx.Http.Polecat |
yes — 6.24.6 |
src/Http/Wolverine.Http.AspVersioning |
WolverineFx.Http.AspVersioning |
yes — 6.24.6 |
Both appear in the explicit nugetProjects array in build/build.cs, so Pack compiles them at publish time. Nothing else does. dotnet build wolverine.slnx — the command CI's Compile target runs, and the one CLAUDE.md tells contributors to run before pushing — skips them entirely.
Both build clean today. This is a missing gate, not a current break. But it means a tightening change in a dependency can break a shipping package and every per-PR CI run stays green; the first thing that fails is a release, at the moment you least want to be debugging.
That is not hypothetical for this repo. CLAUDE.md already carries a warning that wolverine_slim.slnx omitting projects makes a clean slim build insufficient evidence for exactly this class of change (a new AOT/trim annotation in JasperFx, a type lift from Marten/Polecat into JasperFx.Events). Build=false inside the full solution reintroduces the same blind spot one level down, where nobody is looking for it.
The full list
src/Http/Wolverine.AdminApi/Wolverine.AdminApi.csproj
src/Http/Wolverine.Http.AspVersioning/Wolverine.Http.AspVersioning.csproj <-- shipped
src/Http/Wolverine.Http.AspVersioning.Tests/Wolverine.Http.AspVersioning.Tests.csproj
src/Http/Wolverine.Http.Polecat/Wolverine.Http.Polecat.csproj <-- shipped
src/Persistence/Polecat/PolecatIncidentService/PolecatIncidentService.csproj
src/Persistence/Polecat/PolecatIncidentService.Tests/PolecatIncidentService.Tests.csproj
build/build.csproj
I built all of them directly while verifying the JasperFx 2.39.5 upgrade (#3837). Six are clean; PolecatIncidentService.Tests does not compile at all and has not since April — filed separately as #3839. That one is the proof this blind spot is real rather than theoretical: a project sat broken for four months and no gate noticed.
None of the flags carry a comment explaining why. An unexplained Build=false is indistinguishable from an accident, and there is no inventory of what is hidden.
Suggested direction
- Re-enable the two shipping projects in
wolverine.slnxand confirm the full-solution build stays clean. - For anything that genuinely must stay excluded, require a comment naming the reason next to the flag.
- Add the check to the guard proposed in Guard that every CI* target runs somewhere must walk the Nuke dependency graph, not grep workflow files #3816 — that issue is about every
CI*target running somewhere, and this is the same failure mode one layer down: something in the build graph that no gate actually executes. A guard that walks the Nuke dependency graph should also assert that every project innugetProjectsis built by the solution.
Related: #3816 (CI-target coverage guard), #3839 (the Polecat sample this surfaced from).
Activity
jeremydmiller commentedon Aug 5, 2026
Correction to the issue body: it names two shipping packages, and only one of them is actually excluded.
I built that list with a
grep -B 2 'Build Project="false"', and the two-line context window pulled in neighbouring<Project>entries that carry no such flag. Parsing the elements properly gives the real list:Wolverine.Http.Polecatis not excluded — it sits in the solution as a plain<Project Path="..." />at line 119 and is built normally.Wolverine.AdminApilikewise. Sorry for the noise on those two.So the accurate finding is one shipping package outside the solution build, not two:
Wolverine.Http.AspVersioningWolverineFx.Http.AspVersioningWolverine.Http.PolecatWolverineFx.Http.PolecatThat does not change the substance of the issue. A published package that compiles only during
Packstill means a dependency change can break a release while every per-PR run stays green, andPolecatIncidentService.Tests(#3839) still proves the blind spot is real rather than theoretical — it sat broken for four months behind the same flag. It does shrink the blast radius by one package, and the issue title should really say "a shipping package", singular.build/build.csprojis excluded deliberately and correctly — the Nuke build project is not part of the product solution. It is the only one of the five that should keep the flag.Restore the Build=false exclusions -- they were load-bearing, not acc…
Merge pull request #3848 from JasperFx/gh-3839/build-everything-in-th…
Build every project in the solution, and run the Polecat sample (Jasp…