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 eb664ef06e
commit 6012921583
14 changed files with 166 additions and 0 deletions

8
Thalos.DAL.slnx Normal file
View File

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

View File

@ -0,0 +1,23 @@
@startuml
skinparam packageStyle rectangle
package "thalos-dal" {
interface IUserDataProvider
interface IRoleDataProvider
interface IPermissionDataProvider
interface IModuleDataProvider
interface ITenantDataProvider
interface IIdentityRepository
interface IDalDependencyHealthCheck
IIdentityRepository --> IUserDataProvider
IIdentityRepository --> IRoleDataProvider
IIdentityRepository --> IPermissionDataProvider
IIdentityRepository --> IModuleDataProvider
IIdentityRepository --> ITenantDataProvider
IIdentityRepository --> IDalDependencyHealthCheck
}
package "thalos-service" as ThalosService
ThalosService --> IIdentityRepository
@enduml

View File

@ -0,0 +1,12 @@
# Identity Persistence Strategy
## Strategy
- DAL repository boundaries coordinate identity aggregate persistence operations.
- Dependency health checks are defined inside DAL boundaries.
- Storage and cache dependencies are modeled in DAL-owned contracts.
## Constraints
- Identity persistence concerns do not leak to non-Thalos repositories.
- Service layer consumes DAL boundaries without owning persistence details.

View File

@ -0,0 +1,15 @@
# Identity Provider Boundaries
## Ownership
- `IUserDataProvider`: user aggregate persistence provider boundary.
- `IRoleDataProvider`: role aggregate persistence provider boundary.
- `IPermissionDataProvider`: permission aggregate provider boundary.
- `IModuleDataProvider`: module aggregate provider boundary.
- `ITenantDataProvider`: tenant aggregate provider boundary.
## Rules
- Providers isolate datastore-specific behavior.
- Provider boundaries remain internal to Thalos DAL.
- Identity abstractions remain Thalos-owned.

View File

@ -0,0 +1,8 @@
namespace Thalos.DAL.Health;
/// <summary>
/// Defines boundary for DAL dependency health probing.
/// </summary>
public interface IDalDependencyHealthCheck
{
}

View File

@ -0,0 +1,8 @@
namespace Thalos.DAL.Providers;
/// <summary>
/// Defines persistence provider boundary for identity modules.
/// </summary>
public interface IModuleDataProvider
{
}

View File

@ -0,0 +1,8 @@
namespace Thalos.DAL.Providers;
/// <summary>
/// Defines persistence provider boundary for identity permissions.
/// </summary>
public interface IPermissionDataProvider
{
}

View File

@ -0,0 +1,8 @@
namespace Thalos.DAL.Providers;
/// <summary>
/// Defines persistence provider boundary for identity roles.
/// </summary>
public interface IRoleDataProvider
{
}

View File

@ -0,0 +1,8 @@
namespace Thalos.DAL.Providers;
/// <summary>
/// Defines persistence provider boundary for identity tenants.
/// </summary>
public interface ITenantDataProvider
{
}

View File

@ -0,0 +1,8 @@
namespace Thalos.DAL.Providers;
/// <summary>
/// Defines persistence provider boundary for identity users.
/// </summary>
public interface IUserDataProvider
{
}

View File

@ -0,0 +1,8 @@
namespace Thalos.DAL.Repositories;
/// <summary>
/// Defines aggregate repository boundary for identity persistence operations.
/// </summary>
public interface IIdentityRepository
{
}

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,25 @@
using Thalos.DAL.Health;
using Thalos.DAL.Providers;
using Thalos.DAL.Repositories;
namespace Thalos.DAL.UnitTests;
public class BoundaryShapeTests
{
[Fact]
public void ProviderBoundaries_WhenReflected_AreInterfaces()
{
Assert.True(typeof(IUserDataProvider).IsInterface);
Assert.True(typeof(IRoleDataProvider).IsInterface);
Assert.True(typeof(IPermissionDataProvider).IsInterface);
Assert.True(typeof(IModuleDataProvider).IsInterface);
Assert.True(typeof(ITenantDataProvider).IsInterface);
}
[Fact]
public void RepositoryAndHealthBoundaries_WhenReflected_AreInterfaces()
{
Assert.True(typeof(IIdentityRepository).IsInterface);
Assert.True(typeof(IDalDependencyHealthCheck).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\Thalos.DAL\Thalos.DAL.csproj" />
</ItemGroup>
</Project>