diff --git a/Directory.Build.props b/Directory.Build.props
index c310aa1..e5bd7d3 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -3,8 +3,8 @@
AgileWebs
AgileWebs
git
- http://192.168.10.100:3000/AgileWebs/furniture-domain
- http://192.168.10.100:3000/AgileWebs/furniture-domain
+ https://gitea.dream-views.com/AgileWebs/furniture-domain
+ https://gitea.dream-views.com/AgileWebs/furniture-domain
false
diff --git a/docs/contracts/nuget-publication-baseline.md b/docs/contracts/nuget-publication-baseline.md
index a21571f..1fe8cb3 100644
--- a/docs/contracts/nuget-publication-baseline.md
+++ b/docs/contracts/nuget-publication-baseline.md
@@ -2,7 +2,7 @@
## Feed
-- Source: `http://192.168.10.100:3000/api/packages/AgileWebs/nuget/index.json`
+- Source: `https://gitea.dream-views.com/api/packages/AgileWebs/nuget/index.json`
- Authentication: Gitea login + token
- HTTP requirement: `allowInsecureConnections="true"` in `nuget.config`
diff --git a/docs/roadmap/feature-epics.md b/docs/roadmap/feature-epics.md
new file mode 100644
index 0000000..76426bf
--- /dev/null
+++ b/docs/roadmap/feature-epics.md
@@ -0,0 +1,18 @@
+# Feature Epics
+
+## Repository
+furniture-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/Furniture.Domain/Contracts/TableReservationDecisionRequest.cs b/src/Furniture.Domain/Contracts/TableReservationDecisionRequest.cs
new file mode 100644
index 0000000..5c2f97b
--- /dev/null
+++ b/src/Furniture.Domain/Contracts/TableReservationDecisionRequest.cs
@@ -0,0 +1,7 @@
+namespace Furniture.Domain.Contracts;
+
+public sealed record TableReservationDecisionRequest(
+ string TableId,
+ DateTime RequestedAtUtc,
+ int PartySize,
+ bool IsWalkIn);
diff --git a/src/Furniture.Domain/Contracts/TableReservationDecisionResponse.cs b/src/Furniture.Domain/Contracts/TableReservationDecisionResponse.cs
new file mode 100644
index 0000000..5ace7c6
--- /dev/null
+++ b/src/Furniture.Domain/Contracts/TableReservationDecisionResponse.cs
@@ -0,0 +1,6 @@
+namespace Furniture.Domain.Contracts;
+
+public sealed record TableReservationDecisionResponse(
+ string TableId,
+ bool Allowed,
+ string Explanation);
diff --git a/src/Furniture.Domain/Decisions/ITableReservationDecisionService.cs b/src/Furniture.Domain/Decisions/ITableReservationDecisionService.cs
new file mode 100644
index 0000000..1a32a7f
--- /dev/null
+++ b/src/Furniture.Domain/Decisions/ITableReservationDecisionService.cs
@@ -0,0 +1,8 @@
+using Furniture.Domain.Contracts;
+
+namespace Furniture.Domain.Decisions;
+
+public interface ITableReservationDecisionService
+{
+ TableReservationDecisionResponse Evaluate(TableReservationDecisionRequest request);
+}
diff --git a/src/Furniture.Domain/Decisions/TableReservationDecisionService.cs b/src/Furniture.Domain/Decisions/TableReservationDecisionService.cs
new file mode 100644
index 0000000..e882452
--- /dev/null
+++ b/src/Furniture.Domain/Decisions/TableReservationDecisionService.cs
@@ -0,0 +1,16 @@
+using Furniture.Domain.Contracts;
+
+namespace Furniture.Domain.Decisions;
+
+public sealed class TableReservationDecisionService : ITableReservationDecisionService
+{
+ public TableReservationDecisionResponse Evaluate(TableReservationDecisionRequest request)
+ {
+ var allowed = request.PartySize > 0 && request.PartySize <= 12;
+ var reason = allowed
+ ? "Reservation request allowed by furniture-domain constraints."
+ : "Party size is outside supported furniture-domain bounds.";
+
+ return new TableReservationDecisionResponse(request.TableId, allowed, reason);
+ }
+}