Skip to main content

Repository layout

Canonical top-level structure. See docs/architecture.md for the long version.

PathWhat lives here
src/All production library projects (src/Fallout.<X>/Fallout.<X>.csproj). The exception is src/Shims/ — three transition shims for NUKE-era consumers.
tests/All test projects (tests/Fallout.<X>.Tests/Fallout.<X>.Tests.csproj), plus tests/Nuke.Common.Shim.Tests/ and tests/Nuke.Components.Shim.Tests/ covering the shims.
vendor/Vendored third-party source we maintain a fork of (currently the vs-solutionpersistence fork — packaged as Fallout.VisualStudio.SolutionPersistence).
build/The build orchestrator (_build.csproj + Build.*.cs partial files).
docs/Documentation site content. Architecture notes and the agent brief sub-files live here too.
.assets/Images, icons, logos — anything binary and non-code.
RootSolution file (fallout.slnx), shared MSBuild plumbing (Directory.Build.props/targets, Directory.Packages.props), AssemblyInfo.cs, project conventions (README.md/CONTRIBUTING.md/CODE_OF_CONDUCT.md/LICENSE/CHANGELOG.md/AGENTS.md/CLAUDE.md).

Production projects under src/

AreaProjects
Core frameworkFallout.Common, Fallout.Build, Fallout.Build.Shared, Fallout.Components, Fallout.Tooling
Code generationFallout.SourceGenerators, Fallout.Tooling.Generator
ModelsFallout.ProjectModel, Fallout.SolutionModel
ToolingFallout.Cli, Fallout.MSBuildTasks
MigrationFallout.Migrate (CLI for NUKE → Fallout repo migration), Fallout.Migrate.Analyzers (Roslyn analyzers + codefixes for the same)
UtilitiesFallout.Utilities, Fallout.Utilities.IO.Compression, Fallout.Utilities.IO.Globbing, Fallout.Utilities.Net, Fallout.Utilities.Text.Json, Fallout.Utilities.Text.Yaml
VendoredFallout.VisualStudio.SolutionPersistence (fork of upstream Microsoft.VisualStudio.SolutionPersistence, sources in vendor/)
Transition shimssrc/Shims/Nuke.Common, src/Shims/Nuke.Build, src/Shims/Nuke.Components — typed wrappers in the Nuke.* namespace inheriting from the Fallout.* types. Lets pre-rename consumers compile against the new packages without source changes. Most types are source-generated by Fallout.SourceGenerators.TransitionShimGenerator.

Tool wrappers (the .json schemas most likely to be extended) live under src/Fallout.Common/Tools/<Tool>/<Tool>.json.