Repository layout
Canonical top-level structure. See docs/architecture.md for the long version.
| Path | What 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. |
| Root | Solution 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/
| Area | Projects |
|---|---|
| Core framework | Fallout.Common, Fallout.Build, Fallout.Build.Shared, Fallout.Components, Fallout.Tooling |
| Code generation | Fallout.SourceGenerators, Fallout.Tooling.Generator |
| Models | Fallout.ProjectModel, Fallout.SolutionModel |
| Tooling | Fallout.Cli, Fallout.MSBuildTasks |
| Migration | Fallout.Migrate (CLI for NUKE → Fallout repo migration), Fallout.Migrate.Analyzers (Roslyn analyzers + codefixes for the same) |
| Utilities | Fallout.Utilities, Fallout.Utilities.IO.Compression, Fallout.Utilities.IO.Globbing, Fallout.Utilities.Net, Fallout.Utilities.Text.Json, Fallout.Utilities.Text.Yaml |
| Vendored | Fallout.VisualStudio.SolutionPersistence (fork of upstream Microsoft.VisualStudio.SolutionPersistence, sources in vendor/) |
| Transition shims | src/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.