Continuous Integration / config (pull_request) Successful in 12s
Continuous Integration / changes (pull_request) Successful in 22s
Continuous Integration / backend-build (pull_request) Successful in 5m53s
Continuous Integration / vulnerability-scan (pull_request) Successful in 5m46s
Continuous Integration / frontend-prepare (pull_request) Successful in 1m54s
Continuous Integration / backend-test (pull_request) Successful in 7m37s
Continuous Integration / frontend-build (pull_request) Successful in 2m14s
Continuous Integration / frontend-test (pull_request) Successful in 4m59s
Continuous Integration / frontend-lint (pull_request) Successful in 2m2s
Continuous Integration / publish-production (pull_request) Skipped
Continuous Integration / deploy-production (pull_request) Skipped
Continuous Integration / publish-test (pull_request) Successful in 7m34s
Continuous Integration / deploy-test (pull_request) Skipped
Implements Unit 2 "Offerings" (backend module, admin CRUD UI with drag-and-drop reordering, public GET /api/v1/offerings endpoint) and executes the feature's D-15 CI/CD cutover, switching the deploy pipeline's build/publish target from SlpModularCms.Api to SlpModularCms.Api.SlpSoftware. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FWyStNL2ZsjrS7FLd7xvvN
2.2 KiB
2.2 KiB
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 <ProjectReference> 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
%%{init: {'themeVariables': {'primaryTextColor':'#000000','textColor':'#000000','tertiaryTextColor':'#000000'}}}%%
graph LR
U1["Unit 1: SlpSoftware Client Setup<br/>(FR-1, FR-2, FR-3)"]
U2["Unit 2: Offerings<br/>(FR-4..FR-8, US-01..US-12)"]
U1 -->|"Api.SlpSoftware project must exist first"| U2
classDef foundation fill:#bee3f8,stroke:#2b6cb0,stroke-width:2px,color:#000000,font-weight:bold;
classDef feature fill:#fefcbf,stroke:#c05621,stroke-width:2px,color:#000000,font-weight:bold;
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 (theCmsHostaddition). Unit 2 does not modifyCore.- 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,
Offeringsis just another module discovered byModuleOrchestratorinside the process Unit 1 built.