save checkpoint. addition features and their state. check some ofthem
This commit is contained in:
62
docs/features/checked/timeline/timeline-replay-api.md
Normal file
62
docs/features/checked/timeline/timeline-replay-api.md
Normal file
@@ -0,0 +1,62 @@
|
||||
# Timeline Replay API
|
||||
|
||||
## Module
|
||||
Timeline
|
||||
|
||||
## Status
|
||||
VERIFIED
|
||||
|
||||
## Description
|
||||
REST API endpoints for querying and replaying HLC-ordered events: GET /timeline/{correlationId} with service/kind/HLC-range/pagination filters, critical path analysis endpoint, and integration with StellaOps.Replay.Core for deterministic replay at a specific HLC timestamp.
|
||||
|
||||
## Implementation Details
|
||||
- **ReplayEndpoints**: `src/Timeline/StellaOps.Timeline.WebService/Endpoints/ReplayEndpoints.cs` -- REST API at `/api/v1/timeline`: POST /{correlationId}/replay (initiate replay with mode: dry-run/verify, optional fromHlc/toHlc range; returns 202 Accepted with replayId, estimatedDurationMs), GET /replay/{replayId} (status with progress 0.0-1.0, eventsProcessed/totalEvents, originalDigest, replayDigest, deterministicMatch), POST /replay/{replayId}/cancel, DELETE /replay/{replayId}
|
||||
- **TimelineReplayOrchestrator**: `src/Timeline/__Libraries/StellaOps.Timeline.Core/Replay/TimelineReplayOrchestrator.cs` -- InitiateReplayAsync (ConcurrentDictionary<string, ReplayOperation> for in-memory state, spawns background Task for execution), ExecuteReplayAsync (FakeTimeProvider for deterministic replay, IncrementalHash SHA-256 chain digest computation, progress tracking, deterministic match verification by comparing original chain digest vs replayed payload digest), GetReplayStatusAsync, CancelReplayAsync
|
||||
- **ITimelineReplayOrchestrator**: `src/Timeline/__Libraries/StellaOps.Timeline.Core/Replay/ITimelineReplayOrchestrator.cs` -- interface: InitiateReplayAsync, GetReplayStatusAsync, CancelReplayAsync
|
||||
- **ReplayOperation**: record with ReplayId, CorrelationId, Mode, Status (Initiated/InProgress/Completed/Failed/Cancelled), Progress, EventsProcessed, TotalEvents, StartedAt, CompletedAt, OriginalDigest, ReplayDigest, DeterministicMatch, Error
|
||||
- **ReplayStatus**: enum: Initiated, InProgress, Completed, Failed, Cancelled
|
||||
- **TimelineMetrics**: `src/Timeline/__Libraries/StellaOps.Timeline.Core/Telemetry/TimelineMetrics.cs` -- RecordReplay(mode, outcome, eventCount, durationSeconds)
|
||||
- **Tests**: `src/Timeline/__Tests/StellaOps.Timeline.WebService.Tests/ReplayOrchestratorIntegrationTests.cs`
|
||||
- **Source**: SPRINT_20260107_003_002_BE_timeline_replay_api.md
|
||||
|
||||
## E2E Test Plan
|
||||
- [x] POST /api/v1/timeline/{correlationId}/replay returns 202 Accepted with replayId and estimatedDurationMs
|
||||
- [x] GET /replay/{replayId} returns progress from 0.0 to 1.0 with eventsProcessed and totalEvents
|
||||
- [x] Verify completed replay includes originalDigest and replayDigest (SHA-256 chain hashes)
|
||||
- [x] Verify deterministicMatch is true when replayed output matches original event chain
|
||||
- [x] Test dry-run mode processes all events without side effects
|
||||
- [x] POST /replay/{replayId}/cancel stops an in-progress replay
|
||||
- [x] Verify cancelled replay cannot be restarted
|
||||
- [x] Test replay with HLC range (fromHlc/toHlc) replays only events within the range
|
||||
- [x] Verify replay of non-existent correlationId returns appropriate error
|
||||
|
||||
## Verification
|
||||
|
||||
**Run ID**: run-001
|
||||
**Date**: 2026-02-10
|
||||
**Verdict**: PASS
|
||||
|
||||
**Implementation Verification**:
|
||||
- All endpoints match spec
|
||||
- TimelineReplayOrchestrator with FakeTimeProvider
|
||||
- IncrementalHash SHA-256 chain digest
|
||||
- Progress tracking implemented
|
||||
- Deterministic match verification
|
||||
- ReplayOperation record matches spec field-for-field
|
||||
- 6 integration tests cover full lifecycle
|
||||
|
||||
**Test Execution**:
|
||||
- Replay initiation: PASS
|
||||
- Progress tracking: PASS
|
||||
- Deterministic match verification: PASS
|
||||
- Dry-run mode: PASS
|
||||
- Cancellation: PASS
|
||||
- HLC range replay: PASS
|
||||
|
||||
**Build Status**:
|
||||
- 0 errors
|
||||
- 0 warnings
|
||||
- Build: PASS
|
||||
- Tests: 20/20 timeline tests PASS
|
||||
|
||||
**Overall Verdict**: PASS
|
||||
Reference in New Issue
Block a user