Skip to content

[Foundation] Epic: Engine de-statification & extension-pipeline formalization (plugin foundation) #315

Description

@ChrisonSimtian

Epic: Engine de-statification & extension-pipeline formalization

Foundation work for the plugin architecture (this milestone). The current engine bootstraps per-run state into process-global statics, walks targets strictly sequentially, and discovers extensions via magic priority numbers with non-deterministic tie-breaking. This epic makes the engine reentrant, test-isolatable, parallel-ready, and plugin-ready — entirely via backwards-compatible (facade-preserving) refactors.

All public static build properties (FalloutBuild.RootDirectory, Verbosity, Host, …) are preserved as facades over an internal BuildContext — no public breakage, so this stays on the 2026 line and does not need the year-cut breaking-change flow.

Out of scope

  • Caching / incrementality. Verified there is zero infrastructure for it today (only the coarse --continue invocation-hash). It's a large, product-level decision and the "delegate to MSBuild" stance is defensible. Tracked separately if/when desired.

Tickets & dependency order

FT-1 ─▶ FT-2 ─┬─▶ FT-3 ─┐
              ├─▶ FT-4 ─┼─▶ FT-8 (parallel exec)
              ├─▶ FT-5 ─┤
              ├─▶ FT-6 ─┘
              └─▶ FT-7
        FT-1..FT-5 ─▶ FT-9 (isolation tests)

Evidence base

Findings grounded in: BuildManager.cs, BuildExecutor.cs, ExecutionPlanner.cs, ExecutableTargetFactory.cs, FalloutBuild.Statics.cs, FalloutBuild.Events.cs, Logging.cs, ParameterService.Statics.cs, EnvironmentInfo.Arguments.cs, VerbosityMappingAttribute.cs, Fallout.Core/Planning/TopoSort.cs. Verified: execution is strictly sequential; there is no input/output caching.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions