diff --git a/Directory.Build.props b/Directory.Build.props
index a6a39d3..3ad9b51 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -3,8 +3,8 @@
AgileWebs
AgileWebs
git
- http://192.168.10.100:3000/AgileWebs/kitchen-domain
- http://192.168.10.100:3000/AgileWebs/kitchen-domain
+ https://gitea.dream-views.com/AgileWebs/kitchen-domain
+ https://gitea.dream-views.com/AgileWebs/kitchen-domain
false
diff --git a/docs/roadmap/feature-epics.md b/docs/roadmap/feature-epics.md
new file mode 100644
index 0000000..0e4e037
--- /dev/null
+++ b/docs/roadmap/feature-epics.md
@@ -0,0 +1,18 @@
+# Feature Epics
+
+## Repository
+kitchen-domain
+
+## 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/Kitchen.Domain/Decisions/IKitchenOrderLifecycleDecisionService.cs b/src/Kitchen.Domain/Decisions/IKitchenOrderLifecycleDecisionService.cs
new file mode 100644
index 0000000..69a87ad
--- /dev/null
+++ b/src/Kitchen.Domain/Decisions/IKitchenOrderLifecycleDecisionService.cs
@@ -0,0 +1,10 @@
+using Kitchen.Domain.Models;
+
+namespace Kitchen.Domain.Decisions;
+
+public interface IKitchenOrderLifecycleDecisionService
+{
+ bool CanStartPreparation(KitchenOrderTicket ticket, DateTime nowUtc);
+ bool CanMarkReadyForPickup(KitchenOrderTicket ticket);
+ bool CanCancel(KitchenOrderTicket ticket);
+}
diff --git a/src/Kitchen.Domain/Decisions/KitchenOrderLifecycleDecisionService.cs b/src/Kitchen.Domain/Decisions/KitchenOrderLifecycleDecisionService.cs
new file mode 100644
index 0000000..72db2ad
--- /dev/null
+++ b/src/Kitchen.Domain/Decisions/KitchenOrderLifecycleDecisionService.cs
@@ -0,0 +1,22 @@
+using Kitchen.Domain.Models;
+
+namespace Kitchen.Domain.Decisions;
+
+public sealed class KitchenOrderLifecycleDecisionService : IKitchenOrderLifecycleDecisionService
+{
+ public bool CanStartPreparation(KitchenOrderTicket ticket, DateTime nowUtc)
+ {
+ return ticket.State == KitchenWorkflowState.Queued
+ && ticket.CreatedAtUtc <= nowUtc;
+ }
+
+ public bool CanMarkReadyForPickup(KitchenOrderTicket ticket)
+ {
+ return ticket.State == KitchenWorkflowState.Preparing;
+ }
+
+ public bool CanCancel(KitchenOrderTicket ticket)
+ {
+ return ticket.State is KitchenWorkflowState.Queued or KitchenWorkflowState.Preparing;
+ }
+}
diff --git a/src/Kitchen.Domain/Models/KitchenOrderTicket.cs b/src/Kitchen.Domain/Models/KitchenOrderTicket.cs
new file mode 100644
index 0000000..017a844
--- /dev/null
+++ b/src/Kitchen.Domain/Models/KitchenOrderTicket.cs
@@ -0,0 +1,9 @@
+namespace Kitchen.Domain.Models;
+
+public sealed record KitchenOrderTicket(
+ string OrderId,
+ string TicketId,
+ KitchenWorkflowState State,
+ int Priority,
+ DateTime CreatedAtUtc,
+ string Station);