# Unit of Work Dependency — SlpSoftware Production API ## Dependency Matrix | Unit | Depends On | Nature of Dependency | Blocking? | |---|---|---|---| | 1. SlpSoftware Client Setup | Existing `SlpModularCms.Api` (must not regress), existing `Core.Hosting.*` extension methods | Behavior-preservation constraint: the extraction must reproduce `Api`'s current pipeline exactly | N/A (this unit is the starting point) | | 2. Offerings | Unit 1 (`SlpModularCms.Api.SlpSoftware` project must exist) | Structural: Unit 2 adds its own `` into `Api.SlpSoftware.csproj`, which requires that project to already exist | **Yes** — Unit 2 cannot start its Code Generation until Unit 1's `Api.SlpSoftware` project shell exists | ## Sequencing ```mermaid graph LR U1["Unit 1: SlpSoftware Client Setup
(FR-1, FR-2, FR-3)"] U2["Unit 2: Offerings
(FR-4..FR-8, US-01..US-12)"] U1 -->|"Api.SlpSoftware project must exist first"| U2 classDef foundation fill:#63b3ed,stroke:#2b6cb0,stroke-width:1px,color:#000; classDef feature fill:#f6e05e,stroke:#c05621,stroke-width:1px,color:#000; class U1 foundation; class U2 feature; ``` Text alternative: Unit 1 (SlpSoftware Client Setup, blue) must complete before Unit 2 (Offerings, yellow) can start, because Unit 2's project reference requires Unit 1's `Api.SlpSoftware` project to already exist. ## Shared / Cross-Cutting Concerns - **`SlpModularCms.Core`**: modified only by Unit 1 (the `CmsHost` addition). Unit 2 does not modify `Core`. - **Security Baseline compliance**: both units must satisfy their applicable rules from requirements.md's Security Compliance table independently — Unit 1 for the hosting/pipeline rules (SECURITY-03, 04, 09, 10, 14, 15 continuity), Unit 2 for the new-surface rules (SECURITY-05, 06, 08, 11, 13). - **No shared mutable state or runtime coupling** between the two units beyond the one-time structural dependency above — at runtime, `Offerings` is just another module discovered by `ModuleOrchestrator` inside the process Unit 1 built.