Fallout-build / Fallout-build/Fallout
[Foundation] Epic: Engine de-statification & extension-pipeline formalization (plugin foundation)
- 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
Assessment
This issue has not been assessed yet.