diff --git a/Directory.Build.props b/Directory.Build.props
index 7f28b5a..7effe2c 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -3,8 +3,8 @@
AgileWebs
AgileWebs
git
- http://192.168.10.100:3000/AgileWebs/building-block-dispatch
- http://192.168.10.100:3000/AgileWebs/building-block-dispatch
+ https://gitea.dream-views.com/AgileWebs/building-block-dispatch
+ https://gitea.dream-views.com/AgileWebs/building-block-dispatch
false
diff --git a/docs/roadmap/feature-epics.md b/docs/roadmap/feature-epics.md
new file mode 100644
index 0000000..03ccafe
--- /dev/null
+++ b/docs/roadmap/feature-epics.md
@@ -0,0 +1,18 @@
+# Feature Epics
+
+## Repository
+building-block-dispatch
+
+## Core Epics
+- Epic 1: Expand domain-aligned capabilities for restaurant operations.
+- Epic 2: Stabilize service contracts for containerized runtime integration.
+- Epic 3: Improve observability and operational readiness for demo compose environments.
+
+## Domain-Specific Candidate Features
+- Order lifecycle consistency and state transitions.
+- Kitchen queue and dispatch optimization hooks.
+- Operations control-plane policies (flags, service windows, overrides).
+- POS closeout and settlement summary alignment.
+
+## Documentation Contract
+Any code change in this repository must include docs updates in the same branch.
diff --git a/src/BuildingBlock.Dispatch.Contracts/Contracts/DispatchConstraintContract.cs b/src/BuildingBlock.Dispatch.Contracts/Contracts/DispatchConstraintContract.cs
new file mode 100644
index 0000000..d1e8556
--- /dev/null
+++ b/src/BuildingBlock.Dispatch.Contracts/Contracts/DispatchConstraintContract.cs
@@ -0,0 +1,5 @@
+namespace BuildingBlock.Dispatch.Contracts.Contracts;
+
+public sealed record DispatchConstraintContract(
+ string Key,
+ string Value);
diff --git a/src/BuildingBlock.Dispatch.Contracts/Requests/EvaluateDispatchPlanRequest.cs b/src/BuildingBlock.Dispatch.Contracts/Requests/EvaluateDispatchPlanRequest.cs
new file mode 100644
index 0000000..89ee163
--- /dev/null
+++ b/src/BuildingBlock.Dispatch.Contracts/Requests/EvaluateDispatchPlanRequest.cs
@@ -0,0 +1,10 @@
+using BuildingBlock.Dispatch.Contracts.Contracts;
+
+namespace BuildingBlock.Dispatch.Contracts.Requests;
+
+public sealed record EvaluateDispatchPlanRequest(
+ string DispatchContext,
+ IReadOnlyCollection Candidates,
+ IReadOnlyCollection Constraints,
+ int AvailableCapacity,
+ DateTime EvaluationAtUtc);
diff --git a/src/BuildingBlock.Dispatch.Contracts/Responses/EvaluateDispatchPlanResponse.cs b/src/BuildingBlock.Dispatch.Contracts/Responses/EvaluateDispatchPlanResponse.cs
new file mode 100644
index 0000000..4cbd27e
--- /dev/null
+++ b/src/BuildingBlock.Dispatch.Contracts/Responses/EvaluateDispatchPlanResponse.cs
@@ -0,0 +1,7 @@
+namespace BuildingBlock.Dispatch.Contracts.Responses;
+
+public sealed record EvaluateDispatchPlanResponse(
+ IReadOnlyCollection SelectedWorkItemIds,
+ IReadOnlyCollection DeferredWorkItemIds,
+ IReadOnlyCollection BlockedWorkItemIds,
+ string SelectionReason);