Summary
Add a DAG orchestration extension: ContextGraphBuilder + ExecuteGraphAsync to declare task dependencies and let the library derive which tasks can run in parallel and which must wait for predecessors.
Goal
Orchestrate many context-scoped tasks with declared dependencies, computing parallelism automatically — as an Extension, not part of Core.
Problem
For fan-out/fan-in flows (fetch → validate → save), manual Task.WhenAll ordering is brittle. There is no declarative dependency model.
Scope
vargraph=newContextGraphBuilder<ShopContext>().AddNode("fetch_order",()=>FetchOrder(id)).AddNode("fetch_customer",()=>FetchCustomer(id)).AddNode("validate",ValidateOrder,dependsOn:new[]{"fetch_order","fetch_customer"}).Build();awaitmanager.ExecuteGraphAsync(ctx,graph);Design Expectations
- Kept minimal; lives at the Extension level (per Core-minimal-primitive rule).
- No core runtime changes; orchestration runs topologically over base primitives.
Acceptance Criteria
Non-Goals
- No workflow-engine features (state, persistence, retry / Polly).
- No multi-process/queue orchestration (adapter-level).
Summary
Add a DAG orchestration extension:
ContextGraphBuilder+ExecuteGraphAsyncto declare task dependencies and let the library derive which tasks can run in parallel and which must wait for predecessors.Goal
Orchestrate many context-scoped tasks with declared dependencies, computing parallelism automatically — as an Extension, not part of Core.
Problem
For fan-out/fan-in flows (fetch → validate → save), manual
Task.WhenAllordering is brittle. There is no declarative dependency model.Scope
dependsOnedges.Design Expectations
Acceptance Criteria
Non-Goals