feat(stage3): scaffold task-001 baseline

- WHY: establish Stage 3 task-001 execution baseline per repo intent
- WHAT: add minimal solution/project skeleton and boundary docs
- RULE: apply stage3 execution runtime and repository workflow directives
This commit is contained in:
José René White Enciso 2026-02-22 01:30:02 -06:00
parent 063c1a2f2d
commit d637892055
12 changed files with 142 additions and 0 deletions

8
Furniture.DAL.slnx Normal file
View File

@ -0,0 +1,8 @@
<Solution>
<Folder Name="/src/">
<Project Path="src/Furniture.DAL/Furniture.DAL.csproj" />
</Folder>
<Folder Name="/tests/">
<Project Path="tests/Furniture.DAL.UnitTests/Furniture.DAL.UnitTests.csproj" />
</Folder>
</Solution>

View File

@ -0,0 +1,20 @@
@startuml
skinparam packageStyle rectangle
package "furniture-dal" {
interface IFurnitureDataProvider
interface ICatalogDataProvider
interface IFurnitureRepository
interface ICatalogRepository
interface ICacheInvalidationPolicy
IFurnitureRepository --> IFurnitureDataProvider
ICatalogRepository --> ICatalogDataProvider
IFurnitureRepository --> ICacheInvalidationPolicy
ICatalogRepository --> ICacheInvalidationPolicy
}
package "furniture-service" as FurnitureService
FurnitureService --> IFurnitureRepository
FurnitureService --> ICatalogRepository
@enduml

View File

@ -0,0 +1,12 @@
# DAL Persistence and Cache Policy
## Responsibilities
- Repositories coordinate provider calls for aggregate persistence.
- Cache invalidation policy is owned by DAL.
- Service layer does not implement persistence or cache invalidation details.
## Policy
- Persistence writes must define cache invalidation triggers.
- Cache keys and invalidation behavior are centralized in DAL policy definitions.

View File

@ -0,0 +1,12 @@
# DAL Provider Boundaries
## Ownership
- `IFurnitureDataProvider`: furniture persistence provider boundary.
- `ICatalogDataProvider`: catalog persistence provider boundary.
## Rules
- Providers encapsulate datastore-specific access.
- Providers do not contain orchestration concerns.
- Provider contracts are consumed by DAL repositories.

View File

@ -0,0 +1,8 @@
namespace Furniture.DAL.Caching;
/// <summary>
/// Defines cache invalidation policy boundary for DAL operations.
/// </summary>
public interface ICacheInvalidationPolicy
{
}

View File

@ -0,0 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>

View File

@ -0,0 +1,8 @@
namespace Furniture.DAL.Providers;
/// <summary>
/// Defines provider access for catalog persistence operations.
/// </summary>
public interface ICatalogDataProvider
{
}

View File

@ -0,0 +1,8 @@
namespace Furniture.DAL.Providers;
/// <summary>
/// Defines provider access for furniture persistence operations.
/// </summary>
public interface IFurnitureDataProvider
{
}

View File

@ -0,0 +1,8 @@
namespace Furniture.DAL.Repositories;
/// <summary>
/// Defines catalog aggregate repository boundary owned by DAL.
/// </summary>
public interface ICatalogRepository
{
}

View File

@ -0,0 +1,8 @@
namespace Furniture.DAL.Repositories;
/// <summary>
/// Defines furniture aggregate repository boundary owned by DAL.
/// </summary>
public interface IFurnitureRepository
{
}

View File

@ -0,0 +1,23 @@
using Furniture.DAL.Caching;
using Furniture.DAL.Providers;
using Furniture.DAL.Repositories;
namespace Furniture.DAL.UnitTests;
public class BoundaryShapeTests
{
[Fact]
public void ProviderBoundaries_WhenReflected_AreInterfaces()
{
Assert.True(typeof(IFurnitureDataProvider).IsInterface);
Assert.True(typeof(ICatalogDataProvider).IsInterface);
}
[Fact]
public void RepositoryAndCacheBoundaries_WhenReflected_AreInterfaces()
{
Assert.True(typeof(IFurnitureRepository).IsInterface);
Assert.True(typeof(ICatalogRepository).IsInterface);
Assert.True(typeof(ICacheInvalidationPolicy).IsInterface);
}
}

View File

@ -0,0 +1,20 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<IsPackable>false</IsPackable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="coverlet.collector" Version="6.0.4" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.14.1" />
<PackageReference Include="xunit" Version="2.9.3" />
<PackageReference Include="xunit.runner.visualstudio" Version="3.1.4" />
</ItemGroup>
<ItemGroup>
<Using Include="Xunit" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\src\Furniture.DAL\Furniture.DAL.csproj" />
</ItemGroup>
</Project>