Fallout-build / Fallout-build/Fallout
[Foundation] FT-7: Formalize the build extension pipeline (deterministic ordering + typed phases)
- Dominant language
- C#
- Stars
- 154
- Forks
- 19
- Avg merge
- 1d 22h
- Merged PRs (30d)
- 15
Description
## Summary
Formalize the build extension/middleware pipeline: deterministic ordering and a typed phase model instead of comment-encoded magic priority numbers. Directly supports the plugin architecture foundation in this milestone.
## Findings (file:line)
- `FalloutBuild.Events.cs:21-25` — extensions discovered via `GetCustomAttributes()` and ordered `OrderByDescending(x => x.Priority)`. **Equal priorities fall back to CLR reflection order → non-deterministic across runtimes.**
- `FalloutBuild.cs:44-62` — ~15 built-in extensions share magic priorities (150/100/75/50/10/5/-100); the "before logo / after logo / after finish" phases exist only as comments.
- `Execution/Extensibility/BuildExtensionAttributeBase.cs` — `IBuildExtension` + `IOn*` lifecycle interfaces are public; concrete extensions are mostly internal (keep that).
## Scope
- Add a deterministic secondary ordering key for equal priorities.
- Introduce a typed phase model (enum or ordered phase tokens) replacing comment-encoded ranges.
- Document the `IOn*` lifecycle contract.
- Confirm middleware internals stay `internal` (milestone policy: no public plugin SDK yet).
## Acceptance criteria
- Equal-priority ordering is deterministic and covered by a test.
- Phases are typed, not magic numbers.
- No public plugin surface added.
## Notes
- **Non-breaking.**
- Depends on: FT-2 (can proceed largely in parallel with FT-3/4/5).
- Size: **M**.
Contributor guide
Assessment
This issue has not been assessed yet.