Skip to content

Move ExecutionStatus and ITargetModel into the Fallout.Core.Execution namespace #595

Description

@ChrisonSimtian

Problem

ExecutionStatus and ITargetModel ship in Fallout.Core.dll but declare
namespace Fallout.Common.Execution (src/Fallout.Core/Execution/ExecutionStatus.cs:1,
src/Fallout.Core/Execution/ITargetModel.cs:3). Core is the innermost layer. A Core type
sitting under an outer layer's namespace inverts the layering in naming. Both types are
public, so correcting this breaks consumers and must ride a yearly major.

Outcome

Both types live under Fallout.Core.Execution. The architecture fitness test that guards
this rule has no exceptions left. Consumers upgrade by running fallout-migrate, without
hand-editing their own source.

Acceptance criteria

  • ExecutionStatus and ITargetModel declare namespace Fallout.Core.Execution.
  • GrandfatheredNamespaces in tests/Fallout.Core.Specs/ArchitectureFitnessSpecs.cs
    is empty, and the filter that reads it is removed.
  • fallout-migrate rewrites the old namespace in consumer *.cs files. The rule goes
    into RewriteCsFilesStep, the step that already covers *.cs — not a new step. See
    the migration step recipe.
  • tests/Fallout.Migrate.Specs covers that rewrite: the using form, the fully
    qualified form, and a file that must not be touched.
  • CHANGELOG.md records the break under the next yearly major. It gives the old and
    new full type names and points at fallout-migrate.

Notes

The rule and the frozen exception list come from #586, which moved Fallout's constants into
Core. Breaking changes follow AGENTS.md rule 1. A shim cannot cover this rename: type
forwarders keep the full type name, and ExecutionStatus is an enum, so it cannot be
aliased. That makes the fallout-migrate rule the migration path, not an optional extra.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    breaking-changeChange is breaking — requires major version bump per CLAUDE.md semver policy.enhancementNew feature or requestneeds-triage

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions