Skip to content

refactor(arch)!: Application ring — core API → Fallout.Application (onion step 2)#349

Closed
ChrisonSimtian wants to merge 4 commits into
spike/onion-structurefrom
spike/onion-application
Closed

refactor(arch)!: Application ring — core API → Fallout.Application (onion step 2)#349
ChrisonSimtian wants to merge 4 commits into
spike/onion-structurefrom
spike/onion-application

Conversation

@ChrisonSimtian

Copy link
Copy Markdown
Collaborator

⚠️ Breaking change. The core API namespaces move: Fallout.CommonFallout.Application (and the Fallout.Common.Execution/.CI/.ValueInjection sub-namespaces likewise). FalloutBuild, Target, [Parameter], Host, the execution engine, value injection, and the CI ports are now under Fallout.Application.*. Native consumers rewrite using Fallout.Common;using Fallout.Application;. On experimental, batched to the 2026 major.

Step 2 of the onion realignment (ADR-0006). Stacks on #343 (the Domain ring) — base is spike/onion-structure, so this diff is just the Application ring.

How

A purpose-built semantic rewriter (tools/OnionRewriter, MSBuildWorkspace + symbol resolution) moves every type Fallout.Build declared under Fallout.Common.* to Fallout.Application.* and fixes references repo-wide by the symbol each binds to — so simple-name collisions across the shared Fallout.Common root resolve correctly (no spurious usings, no CS0104). ~297 files; 4 usings hand-finished at the tail.

Validation

  • Full solution builds; ~450 tests green (Domain fitness, Build.Tests, Tooling, Utilities, Cli, SourceGen). Verify snapshots (solution generator, cake-migration) updated.

Deferred (ADR-0006)

  • Nuke.* shim parity lapses — the Application ring moved the API the shim mirrors. Nuke.Consumer + Nuke.Common.Shim.Tests are temporarily excluded from the solution (commented in fallout.slnx), to be re-addressed by the redesigned migration phase.
  • Project-FILE rename (Fallout.Build dir/csproj/assembly → Fallout.Application) is a later mechanical step — namespaces are already migrated.
  • CHANGELOG updated under [Unreleased] — 2026.0.

🤖 Generated with Claude Code

@ChrisonSimtian ChrisonSimtian added breaking-change Change is breaking — requires major version bump per CLAUDE.md semver policy. target/2026 Targets the 2026 calendar-version line (current). See ADR-0004. labels May 31, 2026
ChrisonSimtian and others added 4 commits June 3, 2026 14:51
Roslyn syntax tool for the ADR-0006 namespace moves: rewrites namespace decls in
the source project + qualified refs to moved types, and fixes usings by type
identity. Dry-run quantifies the Application ring: 91 moved types across ~392
files.

Finding: syntactic reference-resolution is not precise enough for a clean apply —
simple-name collisions across namespaces (e.g. lower layers like ProjectModel
matching a moved type's name) cause spurious usings and risk CS0104 ambiguities.
The namespace-decl + qualified-name passes are correct; the using fixup needs a
semantic upgrade (MSBuildWorkspace + symbol resolution) before applying. Dry-run
only; mutates nothing.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…ution)

Resolves each reference by the symbol it binds to, so namespace moves are precise:
no spurious usings, no CS0104. Opens csprojs individually (sidesteps .slnx). Drops
only usings orphaned by the move (leaves pre-existing unused usings alone). Dry-run
on the Application ring: 91 moved types, 238 files, 12 qualified refs.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…onion step 2)

ADR-0006 step 2, via the semantic OnionRewriter (MSBuildWorkspace + symbol
resolution). Every type Fallout.Build declared under Fallout.Common.* (FalloutBuild,
Target, [Parameter], Host, the ports, the execution engine, value injection) moves
to Fallout.Application.*; references fixed repo-wide by the symbol each binds to.
~297 files; full solution builds and tests green (~450 tests, incl. Domain fitness).

Tool refinements landed here: name-based moved-type classification (cross-project),
package-consumer skip, attribute/extension-method detection, nested-type qualified
refs, evacuated- vs surviving-namespace using reconciliation. Four dangling usings
hand-finished; Verify snapshots (solution generator, cake-migration) updated.

Deferred (ADR-0006): Nuke.* shim parity lapses — Nuke.Consumer + Nuke.Common.Shim.Tests
temporarily excluded from the solution, to be re-addressed by the redesigned migration
phase. Project-FILE rename (Fallout.Build dir/csproj -> Fallout.Application) still to do
— namespaces are migrated; the assembly is renamed in a mechanical follow-up.

BREAKING CHANGE: Fallout.Common.* core-API namespaces -> Fallout.Application.*. On
experimental; batched to the 2026 major.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@ChrisonSimtian

Copy link
Copy Markdown
Collaborator Author

Collapsed into #359. The onion realignment now reviews as one PR (commit history kept). Nothing lost — #359 contains all of this work.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

breaking-change Change is breaking — requires major version bump per CLAUDE.md semver policy. target/2026 Targets the 2026 calendar-version line (current). See ADR-0004.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant