Fallout-build / Fallout-build/Fallout

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

Open
#315 5 comments 0 reactions 0 assignees View on GitHub
target/vCurrent
Dominant language
C#
Stars
154
Forks
19
Avg merge
1d 22h
Merged PRs (30d)
15

Description

## 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

- [ ] #306 — FT-1: Fix cross-invocation static-state leaks *(bug, S, no deps — ship first)*
- [ ] #307 — FT-2: Introduce internal `BuildContext` + ambient activation *(L, deps FT-1)*
- [ ] #308 — FT-3: Convert public statics to `BuildContext`-backed facades *(M, deps FT-2)*
- [ ] #309 — FT-4: Instance-based, re-parseable `ParameterService` *(M, deps FT-2)*
- [ ] #310 — FT-5: Context-scope tool-path resolvers + process defaults *(M, deps FT-2)*
- [ ] #311 — FT-6: Thread-safe, per-run-scoped logging *(M, deps FT-2; prereq FT-8)*
- [ ] #312 — FT-7: Formalize the extension pipeline *(M, deps FT-2)*
- [ ] #313 — FT-8: Opt-in DAG-parallel target execution *(L, deps FT-3/4/5/6)*
- [ ] #314 — FT-9: Reentrancy/isolation test harness *(S, deps FT-1..FT-5)*

```
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.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.