Parent
#324
What to build
Tighten DP086 so Step Builder assemble-contract diagnostics describe the Phase 2 rules: a valid [BuilderAssemble] returns product T or Task<T> / ValueTask<T>; illegal shapes (bare Task/ValueTask, duplicate assemble, more than one CancellationToken, etc.) stay DP086 with an actionable message. No new diagnostic IDs.
Acceptance criteria
Blocked by
None — can start immediately.
Parent
#324
What to build
Tighten DP086 so Step Builder assemble-contract diagnostics describe the Phase 2 rules: a valid
[BuilderAssemble]returns productTorTask<T>/ValueTask<T>; illegal shapes (bareTask/ValueTask, duplicate assemble, more than oneCancellationToken, etc.) stay DP086 with an actionable message. No new diagnostic IDs.Acceptance criteria
Tand asyncTask<T>/ValueTask<T>as valid assemble returnsDP###allocated; Runtime / SourceGenerators behavior unchanged in this PRClosesthis issue andRelates toSpec: Step Builder async assemble / BuildAsync (Phase 2) #324Blocked by
None — can start immediately.