Fix build and code structure improvements. New but essential UI functionality. CI improvements. Documentation improvements. AI module improvements.

This commit is contained in:
StellaOps Bot
2025-12-26 21:54:17 +02:00
parent 335ff7da16
commit c2b9cd8d1f
3717 changed files with 264714 additions and 48202 deletions

View File

@@ -26,7 +26,7 @@ public sealed class PackRunIncidentModeTests
DurationMinutes: 60,
RequestedBy: "admin@example.com");
var result = await service.ActivateAsync(request, TestContext.Current.CancellationToken);
var result = await service.ActivateAsync(request, CancellationToken.None);
Assert.True(result.Success);
Assert.True(result.Status.Active);
@@ -54,7 +54,7 @@ public sealed class PackRunIncidentModeTests
DurationMinutes: null,
RequestedBy: null);
var result = await service.ActivateAsync(request, TestContext.Current.CancellationToken);
var result = await service.ActivateAsync(request, CancellationToken.None);
Assert.True(result.Success);
Assert.Null(result.Status.ExpiresAt);
@@ -85,7 +85,7 @@ public sealed class PackRunIncidentModeTests
DurationMinutes: 30,
RequestedBy: null);
await service.ActivateAsync(request, TestContext.Current.CancellationToken);
await service.ActivateAsync(request, CancellationToken.None);
Assert.Equal(1, timelineSink.Count);
var evt = timelineSink.GetEvents()[0];
@@ -111,15 +111,15 @@ public sealed class PackRunIncidentModeTests
DurationMinutes: null,
RequestedBy: null);
await service.ActivateAsync(activateRequest, TestContext.Current.CancellationToken);
await service.ActivateAsync(activateRequest, CancellationToken.None);
// Then deactivate
var result = await service.DeactivateAsync("run-004", "Issue resolved", TestContext.Current.CancellationToken);
var result = await service.DeactivateAsync("run-004", "Issue resolved", CancellationToken.None);
Assert.True(result.Success);
Assert.False(result.Status.Active);
var status = await service.GetStatusAsync("run-004", TestContext.Current.CancellationToken);
var status = await service.GetStatusAsync("run-004", CancellationToken.None);
Assert.False(status.Active);
}
@@ -132,7 +132,7 @@ public sealed class PackRunIncidentModeTests
store,
NullLogger<PackRunIncidentModeService>.Instance);
var status = await service.GetStatusAsync("unknown-run", TestContext.Current.CancellationToken);
var status = await service.GetStatusAsync("unknown-run", CancellationToken.None);
Assert.False(status.Active);
Assert.Equal(IncidentEscalationLevel.None, status.Level);
@@ -158,12 +158,12 @@ public sealed class PackRunIncidentModeTests
DurationMinutes: 30,
RequestedBy: null);
await service.ActivateAsync(request, TestContext.Current.CancellationToken);
await service.ActivateAsync(request, CancellationToken.None);
// Advance time past expiration
fakeTime.Advance(TimeSpan.FromMinutes(31));
var status = await service.GetStatusAsync("run-005", TestContext.Current.CancellationToken);
var status = await service.GetStatusAsync("run-005", CancellationToken.None);
Assert.False(status.Active);
}
@@ -189,7 +189,7 @@ public sealed class PackRunIncidentModeTests
TenantId: "tenant-1",
Context: new Dictionary<string, string> { ["step"] = "scan" });
var result = await service.HandleSloBreachAsync(breach, TestContext.Current.CancellationToken);
var result = await service.HandleSloBreachAsync(breach, CancellationToken.None);
Assert.True(result.Success);
Assert.True(result.Status.Active);
@@ -230,7 +230,7 @@ public sealed class PackRunIncidentModeTests
TenantId: "tenant-1",
Context: null);
var result = await service.HandleSloBreachAsync(breach, TestContext.Current.CancellationToken);
var result = await service.HandleSloBreachAsync(breach, CancellationToken.None);
Assert.True(result.Success);
Assert.Equal(expectedLevel, result.Status.Level);
@@ -258,7 +258,7 @@ public sealed class PackRunIncidentModeTests
TenantId: "tenant-1",
Context: null);
var result = await service.HandleSloBreachAsync(breach, TestContext.Current.CancellationToken);
var result = await service.HandleSloBreachAsync(breach, CancellationToken.None);
Assert.False(result.Success);
Assert.Contains("No resource ID", result.Error);
@@ -283,14 +283,14 @@ public sealed class PackRunIncidentModeTests
DurationMinutes: null,
RequestedBy: null);
await service.ActivateAsync(activateRequest, TestContext.Current.CancellationToken);
await service.ActivateAsync(activateRequest, CancellationToken.None);
// Escalate to High
var result = await service.EscalateAsync(
"run-escalate",
IncidentEscalationLevel.High,
"Issue is more severe than expected",
TestContext.Current.CancellationToken);
CancellationToken.None);
Assert.True(result.Success);
Assert.Equal(IncidentEscalationLevel.High, result.Status.Level);
@@ -310,7 +310,7 @@ public sealed class PackRunIncidentModeTests
"unknown-run",
IncidentEscalationLevel.High,
null,
TestContext.Current.CancellationToken);
CancellationToken.None);
Assert.False(result.Success);
Assert.Contains("not active", result.Error);
@@ -334,13 +334,13 @@ public sealed class PackRunIncidentModeTests
DurationMinutes: null,
RequestedBy: null);
await service.ActivateAsync(activateRequest, TestContext.Current.CancellationToken);
await service.ActivateAsync(activateRequest, CancellationToken.None);
var result = await service.EscalateAsync(
"run-no-deescalate",
IncidentEscalationLevel.Medium, // Lower than High
null,
TestContext.Current.CancellationToken);
CancellationToken.None);
Assert.False(result.Success);
Assert.Contains("Cannot escalate", result.Error);