Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
- **Namespaces**: `Fallout.Core.Planning` → `Fallout.Domain.Planning`; `ITargetModel` and `ExecutionStatus` move out of `Fallout.Common.Execution` → `Fallout.Domain.Execution`. **Package/assembly**: `Fallout.Core` → `Fallout.Domain`. Replace the corresponding `using` directives and any `PackageReference`/`ProjectReference`.
- **Migration / shim**: the `Nuke.*` transition shims silently stop re-exporting the two moved types (the generator only mirrors the `Fallout.Common.*` prefix). A fresh migration/shim strategy is designed once the realignment completes (ADR-0006 defers it deliberately); native `Fallout.*` consumers rewrite the two `using`s above.
- **Step 2 (the Application ring)**: the core API `Fallout.Build` declared under `Fallout.Common.*` — `FalloutBuild`, `Target`, `[Parameter]` & attributes, `Host`, the execution engine, value injection, and the CI ports — moves to **`Fallout.Application.*`**. Native consumers rewrite `using Fallout.Common;` → `using Fallout.Application;` (and the `Fallout.Common.Execution`/`.CI`/`.ValueInjection` sub-namespaces likewise). Performed by a semantic rewriter (`tools/OnionRewriter`). The `Nuke.*` shim surface that mirrored these (`Nuke.Common.Target`, `…Parameter`, …) lapses for now — `Nuke.Consumer` and `Nuke.Common.Shim.Tests` are temporarily out of the solution until the migration phase. The `Fallout.Build` **assembly/project** is renamed to `Fallout.Application` in a later mechanical step (namespaces are already migrated).
- **Step 4a (Application ring — composition components)**: the build-composition interface family (`ICompile`, `IRestore`, `IPack`, `IPublish`, `ITest`, `IHas*`, `Configuration`, …), previously `Fallout.Components`, moves to **`Fallout.Application.Components`** — it composes the tool/CI vocabulary and so belongs in the Application ring. Native consumers rewrite `using Fallout.Components;` → `using Fallout.Application.Components;`. The `Nuke.Components` transition shim is unaffected for consumers: its public `Nuke.Components.*` face is unchanged (the shim generator's source prefix was repointed to the new namespace). The `Fallout.Components` **assembly/project** keeps its filename until the later mechanical rename step.
- **Step 4b (tool vocabulary → Application; executor → Infrastructure)**: the tool wrappers `Fallout.Common.Tools.*` (60+ wrappers) and the tool vocabulary they build on (`ToolTasks`, `ToolOptions`, `Output`, `Configure<T>`, the `IProcess`/`IProcessRunner` ports, requirement/attribute types) move to **`Fallout.Application.Tools.*`** / **`Fallout.Application.Tooling`**. The impure executor that shared the `Fallout.Common.Tooling` namespace — `ProcessTasks`, `SystemProcessRunner`, `Process2`, `ProcessExtensions`, `ToolExecutor`, and the tool/package/version resolvers — moves to **`Fallout.Infrastructure.Tooling`**. Native consumers rewrite `using Fallout.Common.Tools.*;` → `using Fallout.Application.Tools.*;` and `using Fallout.Common.Tooling;` → `using Fallout.Application.Tooling;` (plus `using Fallout.Infrastructure.Tooling;` where they touch the executor directly). The `Nuke.Common.Tools`/`…Tooling` shim aliases lapse (the generator only mirrors the `Fallout.Common.*` prefix), pending the deferred migration/shim redesign. Assembly/project files (`Fallout.Common`, `Fallout.Tooling`) are unchanged; only namespaces moved.
- **Step 4b-follow-up (port inversion + Application-ring fitness gate)**: the impure tool-execution services now sit behind ports in `Fallout.Application.Tooling` — **`IProcessExecutor`**, **`IToolPathResolver`**, **`IToolVersionResolver`**, resolved via the new **`ToolingServices`** locator; Infrastructure registers thin adapters into it through a module initializer. The Application ring (tool wrappers, `ToolTasks`, `ToolResolver`, requirement/version attributes, build orchestration) no longer references `Fallout.Infrastructure.*`. `ProcessExtensions` (pure `IProcess`/`Output` helpers — `AssertWaitForExit`, `StdToJson`, …) was reclassified from Infrastructure back to `Fallout.Application.Tooling`. A NetArchTest fitness test (new `Fallout.Architecture.Tests`) asserts `Fallout.Application.*` ⊥ `Fallout.Infrastructure.*` and guards it. (Catch-all `Fallout.Common.*` code outside the Application ring — e.g. CI host adapters, single-file/path-check attributes — still reaches Infrastructure and is addressed when those namespaces get a ring in step 5.)
- **Adopted calendar versioning (`YYYY.MINOR.PATCH`) + dual-pace channel model; retired the v11 numbering** ([ADR-0004](docs/adr/0004-calendar-versioning-and-dual-pace-channels.md)). Fallout now ships on calendar versions (`2026.0.0`, `2026.1.0`, …) — mechanically valid SemVer with the major equal to the calendar year. **Breaking changes are batched to the yearly major cut**; mid-year stable releases (`release/YYYY`) are strictly non-breaking. `main` becomes the published **edge** channel (date-stamped prereleases to GitHub Packages); the slow/stable track lives on `release/YYYY`. Opt-in unstable APIs are marked `[Experimental("FALLOUT0xx")]`.
- **Migration / impact**: the `11.0.x` packages never shipped a clean stable release (all unlisted), so this strands no stable consumers. The headline content previously slated for "v11" now ships as **`2026.0.0`**. Any tooling pinned to a `[11.0,12.0)`-style range should retarget the `2026.x` line.
- **Legacy unaffected**: the `release/v10` line stays on semver `10.x` and continues to receive security/critical fixes — v10 consumers do nothing.
Expand Down
2 changes: 1 addition & 1 deletion build/Build.CI.GitHubActions.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
using Fallout.Common.CI.GitHubActions;
using Fallout.Components;
using Fallout.Application.Components;

// Cross-platform (macOS/Windows) full Test+Pack is gated to RELEASE INTENT
// (#318/#326): it runs only on a PR into a production branch (release/YYYY,
Expand Down
5 changes: 3 additions & 2 deletions build/Build.CodeGeneration.cs
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
using System;
using Fallout.Common.IO;
using Fallout.Common.Tools.GitHub;
using Fallout.Common.Utilities.Collections;
using static Fallout.CodeGeneration.CodeGenerator;
using static Fallout.CodeGeneration.ReferenceUpdater;
using static Fallout.Common.Tools.Git.GitTasks;
using static Fallout.Application.Tools.Git.GitTasks;
using Fallout.Application;
using Fallout.Application.Tools.Git;
using Fallout.Application.Tools.GitHub;

partial class Build
{
Expand Down
3 changes: 2 additions & 1 deletion build/Build.Contributors.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,9 @@
using Fallout.Common.IO;
using Fallout.Common.Utilities;
using Fallout.Common.Utilities.Collections;
using static Fallout.Common.Tools.Git.GitTasks;
using static Fallout.Application.Tools.Git.GitTasks;
using Fallout.Application;
using Fallout.Application.Tools.Git;

partial class Build
{
Expand Down
5 changes: 3 additions & 2 deletions build/Build.GlobalSolution.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,14 @@
using System.Linq;
using Fallout.Common.IO;
using Fallout.Solutions;
using Fallout.Common.Tools.GitHub;
using Fallout.Common.Utilities;
using Fallout.Utilities.Text.Yaml;
using static Fallout.Application.ControlFlow;
using static Fallout.Common.Tools.Git.GitTasks;
using static Fallout.Application.Tools.Git.GitTasks;
using Fallout.Application;
using Fallout.Application.Git;
using Fallout.Application.Tools.Git;
using Fallout.Application.Tools.GitHub;

partial class Build
{
Expand Down
2 changes: 1 addition & 1 deletion build/Build.Licenses.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@
using System.Linq;
using System.Threading.Tasks;
using Fallout.Common.IO;
using Fallout.Components;
using Serilog;
using static Fallout.Common.IO.HttpTasks;
using Fallout.Application;
using Fallout.Application.Components;

partial class Build
{
Expand Down
2 changes: 1 addition & 1 deletion build/Build.RunTargetInDockerTest.cs
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
using System;
using Fallout.Common;
using Fallout.Common.Tools.Docker;
using Fallout.Common.Utilities;
using Serilog;
using Fallout.Application;
using Fallout.Application.Tools.Docker;

partial class Build
{
Expand Down
2 changes: 1 addition & 1 deletion build/Build.Stargazers.cs
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
using System.Linq;
using System.Threading.Tasks;
using Fallout.Common.IO;
using Fallout.Common.Tools.GitHub;
using Fallout.Common.Utilities;
using Fallout.Application;
using Fallout.Application.Tools.GitHub;

partial class Build
{
Expand Down
11 changes: 6 additions & 5 deletions build/Build.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,17 +6,18 @@
using Fallout.Common.CI.GitHubActions;
using Fallout.Common.IO;
using Fallout.Solutions;
using Fallout.Common.Tooling;
using Fallout.Common.Tools.DotNet;
using Fallout.Common.Tools.GitHub;
using Fallout.Common.Utilities;
using Fallout.Components;
using static Fallout.Application.ControlFlow;
using static Fallout.Common.Tools.DotNet.DotNetTasks;
using static Fallout.Application.Tools.DotNet.DotNetTasks;
using Fallout.Application;
using Fallout.Application.CI;
using Fallout.Application.Git;
using Fallout.Application.Execution;
using Fallout.Application.Components;
using Fallout.Application.Tools.DotNet;
using Fallout.Application.Tooling;
using Fallout.Infrastructure.Tooling;
using Fallout.Application.Tools.GitHub;

[DotNetVerbosityMapping]
[ShutdownDotNetAfterServerBuild]
Expand Down
Loading