semi implemented and features implemented save checkpoint

This commit is contained in:
master
2026-02-08 18:00:49 +02:00
parent 04360dff63
commit 1bf6bbf395
20895 changed files with 716795 additions and 64 deletions

View File

@@ -0,0 +1,27 @@
# A/B Release Manager (Traffic Splitting Between Versions)
## Module
ReleaseOrchestrator
## Status
IMPLEMENTED
## Description
A/B release management for running parallel control/treatment versions with configurable traffic weight distribution, experiment metrics tracking, and promote/rollback based on results.
## Implementation Details
- **Modules**: `src/ReleaseOrchestrator/__Libraries/StellaOps.ReleaseOrchestrator.Progressive/AbRelease/`
- **Key Classes**:
- `AbReleaseManager` (`src/ReleaseOrchestrator/__Libraries/StellaOps.ReleaseOrchestrator.Progressive/AbRelease/AbReleaseManager.cs`) - manages A/B release lifecycle with traffic weight distribution
- `InMemoryAbReleaseStore` (`src/ReleaseOrchestrator/__Libraries/StellaOps.ReleaseOrchestrator.Progressive/AbRelease/InMemoryAbReleaseStore.cs`) - in-memory store for A/B release state
- `TrafficRouterRegistry` (`src/ReleaseOrchestrator/__Libraries/StellaOps.ReleaseOrchestrator.Progressive/Routing/TrafficRouterRegistry.cs`) - registry of traffic routers for A/B splits
- `InMemoryTrafficRouter` (`src/ReleaseOrchestrator/__Libraries/StellaOps.ReleaseOrchestrator.Progressive/Routing/InMemoryTrafficRouter.cs`) - in-memory traffic routing implementation
- **Interfaces**: `IAbReleaseManager`, `IAbReleaseStore`, `ITrafficRouter`
- **Source**: SPRINT_20260110_110_001_PROGDL_ab_release_manager.md
## E2E Test Plan
- [ ] Create an A/B release with 80/20 traffic split and verify both versions receive traffic at configured weights
- [ ] Verify promote: promote the treatment version and confirm all traffic shifts to it
- [ ] Verify rollback: rollback the A/B release and confirm all traffic returns to control version
- [ ] Verify `AbReleaseManager` tracks experiment metrics during the A/B test period
- [ ] Verify invalid state transitions are rejected (e.g., promoting an already-concluded experiment)