Domain Implementation Results
Type Count Summary
Section titled “Type Count Summary”Value Objects (16 types)
Section titled “Value Objects (16 types)”| Classification | Type | Base Class | Validation Rules |
|---|---|---|---|
| String VO | ModelName | SimpleValueObject<string> | NotNull, NotEmpty, Trim, MaxLength(100) |
| String VO | ModelVersion | SimpleValueObject<string> | NotNull, NotEmpty, SemVer regex |
| String VO | ModelPurpose | SimpleValueObject<string> | NotNull, NotEmpty, Trim, MaxLength(500) |
| String VO | EndpointUrl | SimpleValueObject<string> | NotNull, NotEmpty, URI format |
| String VO | IncidentDescription | SimpleValueObject<string> | NotNull, NotEmpty, Trim, MaxLength(2000) |
| String VO | ResolutionNote | SimpleValueObject<string> | NotNull, NotEmpty, Trim, MaxLength(2000) |
| Comparable VO | DriftThreshold | ComparableSimpleValueObject<decimal> | Between(0.0, 1.0) |
| Comparable VO | AssessmentScore | ComparableSimpleValueObject<int> | Between(0, 100), IsPassing |
| Smart Enum | RiskTier | SimpleValueObject<string> | 4 values, RequiresComplianceAssessment, IsProhibited |
| Smart Enum | DeploymentStatus | SimpleValueObject<string> | 6 values, transition map |
| Smart Enum | DeploymentEnvironment | SimpleValueObject<string> | 2 values (Staging, Production) |
| Smart Enum | AssessmentStatus | SimpleValueObject<string> | 5 values, transition map |
| Smart Enum | CriterionResult | SimpleValueObject<string> | 3 values (Pass, Fail, NotApplicable) |
| Smart Enum | IncidentSeverity | SimpleValueObject<string> | 4 values, RequiresQuarantine |
| Smart Enum | IncidentStatus | SimpleValueObject<string> | 4 values, transition map |
Aggregate Roots (4 types)
Section titled “Aggregate Roots (4 types)”| Aggregate | Interfaces | Core Patterns |
|---|---|---|
| AIModel | IAuditable, ISoftDeletableWithUser | Dual factory, Soft Delete guard |
| ModelDeployment | IAuditable | Dual factory, state transitions |
| ComplianceAssessment | IAuditable | Dual factory, child entity management |
| ModelIncident | IAuditable | Dual factory, state transitions |
Child Entity (1 type)
Section titled “Child Entity (1 type)”| Entity | Parent Aggregate | Role |
|---|---|---|
| AssessmentCriterion | ComplianceAssessment | Assessment criterion, result recording |
Domain Services (2 types)
Section titled “Domain Services (2 types)”| Service | Cross-Domain Targets | Role |
|---|---|---|
| RiskClassificationService | AIModel | Purpose keyword -> risk tier classification |
| DeploymentEligibilityService | AIModel, Assessment, Incident | 3-step deployment eligibility verification |
Specifications (12 types)
Section titled “Specifications (12 types)”| Specification | Target Aggregate | Purpose |
|---|---|---|
| ModelNameSpec | AIModel | Model name search |
| ModelRiskTierSpec | AIModel | Risk tier filter |
| DeploymentByModelSpec | ModelDeployment | Deployment lookup by model |
| DeploymentActiveSpec | ModelDeployment | Active deployment filter |
| DeploymentQuarantinedSpec | ModelDeployment | Quarantined deployment filter |
| AssessmentByModelSpec | ComplianceAssessment | Assessment lookup by model |
| AssessmentByDeploymentSpec | ComplianceAssessment | Assessment lookup by deployment |
| AssessmentPendingSpec | ComplianceAssessment | Incomplete assessment filter |
| IncidentByModelSpec | ModelIncident | Incident lookup by model |
| IncidentByDeploymentSpec | ModelIncident | Incident lookup by deployment |
| IncidentOpenSpec | ModelIncident | Unresolved incident filter |
| IncidentBySeveritySpec | ModelIncident | Incident filter by severity |
Domain Events (18 types)
Section titled “Domain Events (18 types)”| Aggregate | Event | Trigger |
|---|---|---|
| AIModel | RegisteredEvent | Model registration |
| AIModel | RiskClassifiedEvent | Risk tier reclassification |
| AIModel | VersionUpdatedEvent | Version update |
| AIModel | UpdatedEvent | Information update |
| AIModel | ArchivedEvent | Model archive |
| AIModel | RestoredEvent | Model restore |
| ModelDeployment | CreatedEvent | Deployment creation |
| ModelDeployment | SubmittedForReviewEvent | Review submission |
| ModelDeployment | ActivatedEvent | Deployment activation |
| ModelDeployment | QuarantinedEvent | Deployment quarantine |
| ModelDeployment | RemediatedEvent | Quarantine remediation |
| ModelDeployment | DecommissionedEvent | Deployment decommission |
| ComplianceAssessment | CreatedEvent | Assessment creation |
| ComplianceAssessment | CriterionEvaluatedEvent | Criterion evaluation |
| ComplianceAssessment | CompletedEvent | Assessment completion |
| ModelIncident | ReportedEvent | Incident reporting |
| ModelIncident | InvestigatingEvent | Investigation start |
| ModelIncident | ResolvedEvent | Incident resolution |
Repository Interfaces (4 types)
Section titled “Repository Interfaces (4 types)”| Repository | Additional Methods |
|---|---|
| IAIModelRepository | Exists(spec), GetByIdIncludingDeleted(id) |
| IDeploymentRepository | Exists(spec), Find(spec) |
| IAssessmentRepository | Exists(spec), Find(spec) |
| IIncidentRepository | Exists(spec), Find(spec) |
Domain Layer Structure
Section titled “Domain Layer Structure”AiGovernance.Domain/├── SharedModels/│ └── Services/│ ├── RiskClassificationService.cs│ └── DeploymentEligibilityService.cs└── AggregateRoots/ ├── Models/ │ ├── AIModel.cs │ ├── IAIModelRepository.cs │ ├── ValueObjects/ (ModelName, ModelVersion, ModelPurpose, RiskTier) │ └── Specifications/ (ModelNameSpec, ModelRiskTierSpec) ├── Deployments/ │ ├── ModelDeployment.cs │ ├── IDeploymentRepository.cs │ ├── ValueObjects/ (DeploymentStatus, DeploymentEnvironment, EndpointUrl, DriftThreshold) │ └── Specifications/ (DeploymentByModelSpec, DeploymentActiveSpec, DeploymentQuarantinedSpec) ├── Assessments/ │ ├── ComplianceAssessment.cs │ ├── AssessmentCriterion.cs │ ├── IAssessmentRepository.cs │ ├── ValueObjects/ (AssessmentScore, AssessmentStatus, CriterionResult) │ └── Specifications/ (AssessmentByModelSpec, AssessmentByDeploymentSpec, AssessmentPendingSpec) └── Incidents/ ├── ModelIncident.cs ├── IIncidentRepository.cs ├── ValueObjects/ (IncidentSeverity, IncidentStatus, IncidentDescription, ResolutionNote) └── Specifications/ (IncidentByModelSpec, IncidentByDeploymentSpec, IncidentOpenSpec, IncidentBySeveritySpec)Test Status
Section titled “Test Status”Unit tests are organized into four categories: Value Object, Aggregate, Domain Service, and Architecture. A total of 268 tests run across 2 assemblies for the entire solution.
| Category | Test File Count | Test Target |
|---|---|---|
| Value Objects | 15 | Creation, validation, Smart Enum transition rules for 16 VO types |
| Aggregates | 4 | Create, state transitions, guards, CreateFromValidated for 4 Aggregate types |
| Domain Services | 1 | RiskClassificationService keyword classification |
| Architecture | 3 | Domain/Application architecture rules, layer dependencies |
| Total | 23 |
The 268 tests include both unit tests (AiGovernance.Tests.Unit) and integration tests (AiGovernance.Tests.Integration).
In the next step, we define how these domain rules are orchestrated into use cases in the Application Business Requirements.