Merge remote changes (theirs)

This commit is contained in:
Codex Assistant
2026-01-08 09:01:53 +02:00
4195 changed files with 249446 additions and 83444 deletions

View File

@@ -5,6 +5,6 @@ Source of truth: `docs/implplan/SPRINT_20251229_049_BE_csproj_audit_maint_tests.
| Task ID | Status | Notes |
| --- | --- | --- |
| AUDIT-0416-M | DONE | Maintainability audit for StellaOps.Notify.WebService. |
| AUDIT-0416-T | DONE | Test coverage audit for StellaOps.Notify.WebService. |
| AUDIT-0416-A | TODO | Pending approval for apply tasks. |
| AUDIT-0416-M | DONE | Revalidated 2026-01-07; maintainability audit for StellaOps.Notify.WebService. |
| AUDIT-0416-T | DONE | Revalidated 2026-01-07; test coverage audit for StellaOps.Notify.WebService. |
| AUDIT-0416-A | TODO | Revalidated 2026-01-07 (open findings). |

View File

@@ -5,6 +5,6 @@ Source of truth: `docs/implplan/SPRINT_20251229_049_BE_csproj_audit_maint_tests.
| Task ID | Status | Notes |
| --- | --- | --- |
| AUDIT-0418-M | DONE | Maintainability audit for StellaOps.Notify.Worker. |
| AUDIT-0418-T | DONE | Test coverage audit for StellaOps.Notify.Worker. |
| AUDIT-0418-A | TODO | Pending approval for apply tasks. |
| AUDIT-0418-M | DONE | Revalidated 2026-01-07; maintainability audit for StellaOps.Notify.Worker. |
| AUDIT-0418-T | DONE | Revalidated 2026-01-07; test coverage audit for StellaOps.Notify.Worker. |
| AUDIT-0418-A | TODO | Revalidated 2026-01-07 (open findings). |

View File

@@ -5,6 +5,6 @@ Source of truth: `docs/implplan/SPRINT_20251229_049_BE_csproj_audit_maint_tests.
| Task ID | Status | Notes |
| --- | --- | --- |
| AUDIT-0397-M | DONE | Maintainability audit for StellaOps.Notify.Connectors.Email. |
| AUDIT-0397-T | DONE | Test coverage audit for StellaOps.Notify.Connectors.Email. |
| AUDIT-0397-A | TODO | Pending approval for apply tasks. |
| AUDIT-0397-M | DONE | Revalidated 2026-01-07; maintainability audit for StellaOps.Notify.Connectors.Email. |
| AUDIT-0397-T | DONE | Revalidated 2026-01-07; test coverage audit for StellaOps.Notify.Connectors.Email. |
| AUDIT-0397-A | TODO | Revalidated 2026-01-07 (open findings). |

View File

@@ -5,6 +5,6 @@ Source of truth: `docs/implplan/SPRINT_20251229_049_BE_csproj_audit_maint_tests.
| Task ID | Status | Notes |
| --- | --- | --- |
| AUDIT-0399-M | DONE | Maintainability audit for StellaOps.Notify.Connectors.Shared. |
| AUDIT-0399-T | DONE | Test coverage audit for StellaOps.Notify.Connectors.Shared. |
| AUDIT-0399-A | TODO | Pending approval for apply tasks. |
| AUDIT-0399-M | DONE | Revalidated 2026-01-07; maintainability audit for StellaOps.Notify.Connectors.Shared. |
| AUDIT-0399-T | DONE | Revalidated 2026-01-07; test coverage audit for StellaOps.Notify.Connectors.Shared. |
| AUDIT-0399-A | TODO | Revalidated 2026-01-07 (open findings). |

View File

@@ -5,6 +5,6 @@ Source of truth: `docs/implplan/SPRINT_20251229_049_BE_csproj_audit_maint_tests.
| Task ID | Status | Notes |
| --- | --- | --- |
| AUDIT-0400-M | DONE | Maintainability audit for StellaOps.Notify.Connectors.Slack. |
| AUDIT-0400-T | DONE | Test coverage audit for StellaOps.Notify.Connectors.Slack. |
| AUDIT-0400-A | TODO | Pending approval for apply tasks. |
| AUDIT-0400-M | DONE | Revalidated 2026-01-07; maintainability audit for StellaOps.Notify.Connectors.Slack. |
| AUDIT-0400-T | DONE | Revalidated 2026-01-07; test coverage audit for StellaOps.Notify.Connectors.Slack. |
| AUDIT-0400-A | TODO | Revalidated 2026-01-07 (open findings). |

View File

@@ -5,6 +5,6 @@ Source of truth: `docs/implplan/SPRINT_20251229_049_BE_csproj_audit_maint_tests.
| Task ID | Status | Notes |
| --- | --- | --- |
| AUDIT-0402-M | DONE | Maintainability audit for StellaOps.Notify.Connectors.Teams. |
| AUDIT-0402-T | DONE | Test coverage audit for StellaOps.Notify.Connectors.Teams. |
| AUDIT-0402-A | TODO | Pending approval for apply tasks. |
| AUDIT-0402-M | DONE | Revalidated 2026-01-07; maintainability audit for StellaOps.Notify.Connectors.Teams. |
| AUDIT-0402-T | DONE | Revalidated 2026-01-07; test coverage audit for StellaOps.Notify.Connectors.Teams. |
| AUDIT-0402-A | TODO | Revalidated 2026-01-07 (open findings). |

View File

@@ -5,6 +5,6 @@ Source of truth: `docs/implplan/SPRINT_20251229_049_BE_csproj_audit_maint_tests.
| Task ID | Status | Notes |
| --- | --- | --- |
| AUDIT-0404-M | DONE | Maintainability audit for StellaOps.Notify.Connectors.Webhook. |
| AUDIT-0404-T | DONE | Test coverage audit for StellaOps.Notify.Connectors.Webhook. |
| AUDIT-0404-A | TODO | Pending approval for apply tasks. |
| AUDIT-0404-M | DONE | Revalidated 2026-01-07; maintainability audit for StellaOps.Notify.Connectors.Webhook. |
| AUDIT-0404-T | DONE | Revalidated 2026-01-07; test coverage audit for StellaOps.Notify.Connectors.Webhook. |
| AUDIT-0404-A | TODO | Revalidated 2026-01-07 (open findings). |

View File

@@ -5,6 +5,6 @@ Source of truth: `docs/implplan/SPRINT_20251229_049_BE_csproj_audit_maint_tests.
| Task ID | Status | Notes |
| --- | --- | --- |
| AUDIT-0407-M | DONE | Maintainability audit for StellaOps.Notify.Engine. |
| AUDIT-0407-T | DONE | Test coverage audit for StellaOps.Notify.Engine. |
| AUDIT-0407-A | TODO | Pending approval for apply tasks. |
| AUDIT-0407-M | DONE | Revalidated 2026-01-07; maintainability audit for StellaOps.Notify.Engine. |
| AUDIT-0407-T | DONE | Revalidated 2026-01-07; test coverage audit for StellaOps.Notify.Engine. |
| AUDIT-0407-A | TODO | Revalidated 2026-01-07 (open findings). |

View File

@@ -5,6 +5,6 @@ Source of truth: `docs/implplan/SPRINT_20251229_049_BE_csproj_audit_maint_tests.
| Task ID | Status | Notes |
| --- | --- | --- |
| AUDIT-0409-M | DONE | Maintainability audit for StellaOps.Notify.Models. |
| AUDIT-0409-T | DONE | Test coverage audit for StellaOps.Notify.Models. |
| AUDIT-0409-A | TODO | Pending approval for apply tasks. |
| AUDIT-0409-M | DONE | Revalidated 2026-01-07; maintainability audit for StellaOps.Notify.Models. |
| AUDIT-0409-T | DONE | Revalidated 2026-01-07; test coverage audit for StellaOps.Notify.Models. |
| AUDIT-0409-A | TODO | Revalidated 2026-01-07 (open findings). |

View File

@@ -5,6 +5,6 @@ Source of truth: `docs/implplan/SPRINT_20251229_049_BE_csproj_audit_maint_tests.
| Task ID | Status | Notes |
| --- | --- | --- |
| AUDIT-0411-M | DONE | Maintainability audit for StellaOps.Notify.Persistence. |
| AUDIT-0411-T | DONE | Test coverage audit for StellaOps.Notify.Persistence. |
| AUDIT-0411-A | TODO | Pending approval for apply tasks. |
| AUDIT-0411-M | DONE | Revalidated 2026-01-07; maintainability audit for StellaOps.Notify.Persistence. |
| AUDIT-0411-T | DONE | Revalidated 2026-01-07; test coverage audit for StellaOps.Notify.Persistence. |
| AUDIT-0411-A | TODO | Revalidated 2026-01-07 (open findings). |

View File

@@ -5,6 +5,6 @@ Source of truth: `docs/implplan/SPRINT_20251229_049_BE_csproj_audit_maint_tests.
| Task ID | Status | Notes |
| --- | --- | --- |
| AUDIT-0413-M | DONE | Maintainability audit for StellaOps.Notify.Queue. |
| AUDIT-0413-T | DONE | Test coverage audit for StellaOps.Notify.Queue. |
| AUDIT-0413-A | TODO | Pending approval for apply tasks. |
| AUDIT-0413-M | DONE | Revalidated 2026-01-07; maintainability audit for StellaOps.Notify.Queue. |
| AUDIT-0413-T | DONE | Revalidated 2026-01-07; test coverage audit for StellaOps.Notify.Queue. |
| AUDIT-0413-A | TODO | Revalidated 2026-01-07 (open findings). |

View File

@@ -9,6 +9,12 @@ namespace StellaOps.Notify.Storage.InMemory.Repositories;
public sealed class NotifyChannelRepositoryAdapter : INotifyChannelRepository
{
private readonly ConcurrentDictionary<string, NotifyChannelDocument> _channels = new(StringComparer.OrdinalIgnoreCase);
private readonly TimeProvider _timeProvider;
public NotifyChannelRepositoryAdapter(TimeProvider? timeProvider = null)
{
_timeProvider = timeProvider ?? TimeProvider.System;
}
public Task<NotifyChannelDocument?> GetByIdAsync(string tenantId, string id, CancellationToken cancellationToken = default)
{
@@ -34,7 +40,7 @@ public sealed class NotifyChannelRepositoryAdapter : INotifyChannelRepository
public Task<NotifyChannelDocument> UpsertAsync(NotifyChannelDocument channel, CancellationToken cancellationToken = default)
{
channel.UpdatedAt = DateTimeOffset.UtcNow;
channel.UpdatedAt = _timeProvider.GetUtcNow();
var key = $"{channel.TenantId}:{channel.Id}";
_channels[key] = channel;
return Task.FromResult(channel);
@@ -59,6 +65,12 @@ public sealed class NotifyChannelRepositoryAdapter : INotifyChannelRepository
public sealed class NotifyRuleRepositoryAdapter : INotifyRuleRepository
{
private readonly ConcurrentDictionary<string, NotifyRuleDocument> _rules = new(StringComparer.OrdinalIgnoreCase);
private readonly TimeProvider _timeProvider;
public NotifyRuleRepositoryAdapter(TimeProvider? timeProvider = null)
{
_timeProvider = timeProvider ?? TimeProvider.System;
}
public Task<NotifyRuleDocument?> GetByIdAsync(string tenantId, string id, CancellationToken cancellationToken = default)
{
@@ -83,7 +95,7 @@ public sealed class NotifyRuleRepositoryAdapter : INotifyRuleRepository
public Task<NotifyRuleDocument> UpsertAsync(NotifyRuleDocument rule, CancellationToken cancellationToken = default)
{
rule.UpdatedAt = DateTimeOffset.UtcNow;
rule.UpdatedAt = _timeProvider.GetUtcNow();
var key = $"{rule.TenantId}:{rule.Id}";
_rules[key] = rule;
return Task.FromResult(rule);
@@ -108,6 +120,12 @@ public sealed class NotifyRuleRepositoryAdapter : INotifyRuleRepository
public sealed class NotifyTemplateRepositoryAdapter : INotifyTemplateRepository
{
private readonly ConcurrentDictionary<string, NotifyTemplateDocument> _templates = new(StringComparer.OrdinalIgnoreCase);
private readonly TimeProvider _timeProvider;
public NotifyTemplateRepositoryAdapter(TimeProvider? timeProvider = null)
{
_timeProvider = timeProvider ?? TimeProvider.System;
}
public Task<NotifyTemplateDocument?> GetByIdAsync(string tenantId, string id, CancellationToken cancellationToken = default)
{
@@ -130,7 +148,7 @@ public sealed class NotifyTemplateRepositoryAdapter : INotifyTemplateRepository
public Task<NotifyTemplateDocument> UpsertAsync(NotifyTemplateDocument template, CancellationToken cancellationToken = default)
{
template.UpdatedAt = DateTimeOffset.UtcNow;
template.UpdatedAt = _timeProvider.GetUtcNow();
var key = $"{template.TenantId}:{template.Id}";
_templates[key] = template;
return Task.FromResult(template);
@@ -149,6 +167,12 @@ public sealed class NotifyTemplateRepositoryAdapter : INotifyTemplateRepository
public sealed class NotifyDeliveryRepositoryAdapter : INotifyDeliveryRepository
{
private readonly ConcurrentDictionary<string, NotifyDeliveryDocument> _deliveries = new(StringComparer.OrdinalIgnoreCase);
private readonly TimeProvider _timeProvider;
public NotifyDeliveryRepositoryAdapter(TimeProvider? timeProvider = null)
{
_timeProvider = timeProvider ?? TimeProvider.System;
}
public Task<NotifyDeliveryDocument?> GetByIdAsync(string tenantId, string id, CancellationToken cancellationToken = default)
{
@@ -166,7 +190,7 @@ public sealed class NotifyDeliveryRepositoryAdapter : INotifyDeliveryRepository
public Task<NotifyDeliveryDocument> UpsertAsync(NotifyDeliveryDocument delivery, CancellationToken cancellationToken = default)
{
delivery.UpdatedAt = DateTimeOffset.UtcNow;
delivery.UpdatedAt = _timeProvider.GetUtcNow();
var key = $"{delivery.TenantId}:{delivery.Id}";
_deliveries[key] = delivery;
return Task.FromResult(delivery);
@@ -179,7 +203,7 @@ public sealed class NotifyDeliveryRepositoryAdapter : INotifyDeliveryRepository
{
doc.Status = status;
doc.Error = error;
doc.UpdatedAt = DateTimeOffset.UtcNow;
doc.UpdatedAt = _timeProvider.GetUtcNow();
return Task.FromResult(true);
}
return Task.FromResult(false);
@@ -199,6 +223,12 @@ public sealed class NotifyDeliveryRepositoryAdapter : INotifyDeliveryRepository
public sealed class NotifyDigestRepositoryAdapter : INotifyDigestRepository
{
private readonly ConcurrentDictionary<string, NotifyDigestDocument> _digests = new(StringComparer.OrdinalIgnoreCase);
private readonly TimeProvider _timeProvider;
public NotifyDigestRepositoryAdapter(TimeProvider? timeProvider = null)
{
_timeProvider = timeProvider ?? TimeProvider.System;
}
public Task<NotifyDigestDocument?> GetByIdAsync(string tenantId, string id, CancellationToken cancellationToken = default)
{
@@ -209,7 +239,7 @@ public sealed class NotifyDigestRepositoryAdapter : INotifyDigestRepository
public Task<NotifyDigestDocument> UpsertAsync(NotifyDigestDocument digest, CancellationToken cancellationToken = default)
{
digest.UpdatedAt = DateTimeOffset.UtcNow;
digest.UpdatedAt = _timeProvider.GetUtcNow();
var key = $"{digest.TenantId}:{digest.Id}";
_digests[key] = digest;
return Task.FromResult(digest);
@@ -257,10 +287,16 @@ public sealed class NotifyAuditRepositoryAdapter : INotifyAuditRepository
public sealed class NotifyLockRepositoryAdapter : INotifyLockRepository
{
private readonly ConcurrentDictionary<string, (string Owner, DateTimeOffset ExpiresAt)> _locks = new(StringComparer.OrdinalIgnoreCase);
private readonly TimeProvider _timeProvider;
public NotifyLockRepositoryAdapter(TimeProvider? timeProvider = null)
{
_timeProvider = timeProvider ?? TimeProvider.System;
}
public Task<bool> TryAcquireAsync(string lockKey, string owner, TimeSpan ttl, CancellationToken cancellationToken = default)
{
var now = DateTimeOffset.UtcNow;
var now = _timeProvider.GetUtcNow();
// Clean up expired locks
foreach (var key in _locks.Keys.ToList())
@@ -288,7 +324,7 @@ public sealed class NotifyLockRepositoryAdapter : INotifyLockRepository
{
if (_locks.TryGetValue(lockKey, out var value) && value.Owner == owner)
{
var newExpiry = DateTimeOffset.UtcNow + ttl;
var newExpiry = _timeProvider.GetUtcNow() + ttl;
_locks[lockKey] = (owner, newExpiry);
return Task.FromResult(true);
}
@@ -302,6 +338,12 @@ public sealed class NotifyLockRepositoryAdapter : INotifyLockRepository
public sealed class NotifyEscalationPolicyRepositoryAdapter : INotifyEscalationPolicyRepository
{
private readonly ConcurrentDictionary<string, NotifyEscalationPolicyDocument> _policies = new(StringComparer.OrdinalIgnoreCase);
private readonly TimeProvider _timeProvider;
public NotifyEscalationPolicyRepositoryAdapter(TimeProvider? timeProvider = null)
{
_timeProvider = timeProvider ?? TimeProvider.System;
}
public Task<NotifyEscalationPolicyDocument?> GetByIdAsync(string tenantId, string id, CancellationToken cancellationToken = default)
{
@@ -318,7 +360,7 @@ public sealed class NotifyEscalationPolicyRepositoryAdapter : INotifyEscalationP
public Task<NotifyEscalationPolicyDocument> UpsertAsync(NotifyEscalationPolicyDocument policy, CancellationToken cancellationToken = default)
{
policy.UpdatedAt = DateTimeOffset.UtcNow;
policy.UpdatedAt = _timeProvider.GetUtcNow();
var key = $"{policy.TenantId}:{policy.Id}";
_policies[key] = policy;
return Task.FromResult(policy);
@@ -331,6 +373,12 @@ public sealed class NotifyEscalationPolicyRepositoryAdapter : INotifyEscalationP
public sealed class NotifyEscalationStateRepositoryAdapter : INotifyEscalationStateRepository
{
private readonly ConcurrentDictionary<string, NotifyEscalationStateDocument> _states = new(StringComparer.OrdinalIgnoreCase);
private readonly TimeProvider _timeProvider;
public NotifyEscalationStateRepositoryAdapter(TimeProvider? timeProvider = null)
{
_timeProvider = timeProvider ?? TimeProvider.System;
}
public Task<NotifyEscalationStateDocument?> GetByIdAsync(string tenantId, string id, CancellationToken cancellationToken = default)
{
@@ -341,7 +389,7 @@ public sealed class NotifyEscalationStateRepositoryAdapter : INotifyEscalationSt
public Task<NotifyEscalationStateDocument> UpsertAsync(NotifyEscalationStateDocument state, CancellationToken cancellationToken = default)
{
state.UpdatedAt = DateTimeOffset.UtcNow;
state.UpdatedAt = _timeProvider.GetUtcNow();
var key = $"{state.TenantId}:{state.Id}";
_states[key] = state;
return Task.FromResult(state);
@@ -360,6 +408,12 @@ public sealed class NotifyEscalationStateRepositoryAdapter : INotifyEscalationSt
public sealed class NotifyOnCallScheduleRepositoryAdapter : INotifyOnCallScheduleRepository
{
private readonly ConcurrentDictionary<string, NotifyOnCallScheduleDocument> _schedules = new(StringComparer.OrdinalIgnoreCase);
private readonly TimeProvider _timeProvider;
public NotifyOnCallScheduleRepositoryAdapter(TimeProvider? timeProvider = null)
{
_timeProvider = timeProvider ?? TimeProvider.System;
}
public Task<NotifyOnCallScheduleDocument?> GetByIdAsync(string tenantId, string id, CancellationToken cancellationToken = default)
{
@@ -376,7 +430,7 @@ public sealed class NotifyOnCallScheduleRepositoryAdapter : INotifyOnCallSchedul
public Task<NotifyOnCallScheduleDocument> UpsertAsync(NotifyOnCallScheduleDocument schedule, CancellationToken cancellationToken = default)
{
schedule.UpdatedAt = DateTimeOffset.UtcNow;
schedule.UpdatedAt = _timeProvider.GetUtcNow();
var key = $"{schedule.TenantId}:{schedule.Id}";
_schedules[key] = schedule;
return Task.FromResult(schedule);
@@ -397,6 +451,12 @@ public sealed class NotifyOnCallScheduleRepositoryAdapter : INotifyOnCallSchedul
public sealed class NotifyQuietHoursRepositoryAdapter : INotifyQuietHoursRepository
{
private readonly ConcurrentDictionary<string, NotifyQuietHoursDocument> _quietHours = new(StringComparer.OrdinalIgnoreCase);
private readonly TimeProvider _timeProvider;
public NotifyQuietHoursRepositoryAdapter(TimeProvider? timeProvider = null)
{
_timeProvider = timeProvider ?? TimeProvider.System;
}
public Task<NotifyQuietHoursDocument?> GetByIdAsync(string tenantId, string id, CancellationToken cancellationToken = default)
{
@@ -413,7 +473,7 @@ public sealed class NotifyQuietHoursRepositoryAdapter : INotifyQuietHoursReposit
public Task<NotifyQuietHoursDocument> UpsertAsync(NotifyQuietHoursDocument quietHours, CancellationToken cancellationToken = default)
{
quietHours.UpdatedAt = DateTimeOffset.UtcNow;
quietHours.UpdatedAt = _timeProvider.GetUtcNow();
var key = $"{quietHours.TenantId}:{quietHours.Id}";
_quietHours[key] = quietHours;
return Task.FromResult(quietHours);
@@ -432,6 +492,12 @@ public sealed class NotifyQuietHoursRepositoryAdapter : INotifyQuietHoursReposit
public sealed class NotifyMaintenanceWindowRepositoryAdapter : INotifyMaintenanceWindowRepository
{
private readonly ConcurrentDictionary<string, NotifyMaintenanceWindowDocument> _windows = new(StringComparer.OrdinalIgnoreCase);
private readonly TimeProvider _timeProvider;
public NotifyMaintenanceWindowRepositoryAdapter(TimeProvider? timeProvider = null)
{
_timeProvider = timeProvider ?? TimeProvider.System;
}
public Task<NotifyMaintenanceWindowDocument?> GetByIdAsync(string tenantId, string id, CancellationToken cancellationToken = default)
{
@@ -454,7 +520,7 @@ public sealed class NotifyMaintenanceWindowRepositoryAdapter : INotifyMaintenanc
public Task<NotifyMaintenanceWindowDocument> UpsertAsync(NotifyMaintenanceWindowDocument window, CancellationToken cancellationToken = default)
{
window.UpdatedAt = DateTimeOffset.UtcNow;
window.UpdatedAt = _timeProvider.GetUtcNow();
var key = $"{window.TenantId}:{window.Id}";
_windows[key] = window;
return Task.FromResult(window);
@@ -473,6 +539,12 @@ public sealed class NotifyMaintenanceWindowRepositoryAdapter : INotifyMaintenanc
public sealed class NotifyInboxRepositoryAdapter : INotifyInboxRepository
{
private readonly ConcurrentDictionary<string, NotifyInboxDocument> _inbox = new(StringComparer.OrdinalIgnoreCase);
private readonly TimeProvider _timeProvider;
public NotifyInboxRepositoryAdapter(TimeProvider? timeProvider = null)
{
_timeProvider = timeProvider ?? TimeProvider.System;
}
public Task<NotifyInboxDocument?> GetByIdAsync(string tenantId, string id, CancellationToken cancellationToken = default)
{
@@ -502,7 +574,7 @@ public sealed class NotifyInboxRepositoryAdapter : INotifyInboxRepository
if (_inbox.TryGetValue(key, out var doc))
{
doc.Read = true;
doc.ReadAt = DateTimeOffset.UtcNow;
doc.ReadAt = _timeProvider.GetUtcNow();
return Task.FromResult(true);
}
return Task.FromResult(false);

View File

@@ -5,6 +5,6 @@ Source of truth: `docs/implplan/SPRINT_20251229_049_BE_csproj_audit_maint_tests.
| Task ID | Status | Notes |
| --- | --- | --- |
| AUDIT-0415-M | DONE | Maintainability audit for StellaOps.Notify.Storage.InMemory. |
| AUDIT-0415-T | DONE | Test coverage audit for StellaOps.Notify.Storage.InMemory. |
| AUDIT-0415-A | TODO | Pending approval for apply tasks. |
| AUDIT-0415-M | DONE | Revalidated 2026-01-07; maintainability audit for StellaOps.Notify.Storage.InMemory. |
| AUDIT-0415-T | DONE | Revalidated 2026-01-07; test coverage audit for StellaOps.Notify.Storage.InMemory. |
| AUDIT-0415-A | TODO | Revalidated 2026-01-07 (open findings). |

View File

@@ -20,7 +20,6 @@
<ItemGroup>
<PackageReference Include="FluentAssertions" />
<PackageReference Include="NSubstitute" />
<PackageReference Include="xunit.v3" />
</ItemGroup>
<ItemGroup>
<Content Include="Fixtures/email/*.json">

View File

@@ -5,6 +5,6 @@ Source of truth: `docs/implplan/SPRINT_20251229_049_BE_csproj_audit_maint_tests.
| Task ID | Status | Notes |
| --- | --- | --- |
| AUDIT-0398-M | DONE | Maintainability audit for StellaOps.Notify.Connectors.Email.Tests. |
| AUDIT-0398-T | DONE | Test coverage audit for StellaOps.Notify.Connectors.Email.Tests. |
| AUDIT-0398-A | DONE | Waived (test project). |
| AUDIT-0398-M | DONE | Revalidated 2026-01-07; maintainability audit for StellaOps.Notify.Connectors.Email.Tests. |
| AUDIT-0398-T | DONE | Revalidated 2026-01-07; test coverage audit for StellaOps.Notify.Connectors.Email.Tests. |
| AUDIT-0398-A | DONE | Waived (test project; revalidated 2026-01-07). |

View File

@@ -20,7 +20,6 @@
<ItemGroup>
<PackageReference Include="FluentAssertions" />
<PackageReference Include="NSubstitute" />
<PackageReference Include="xunit.v3" />
</ItemGroup>
</Project>

View File

@@ -5,6 +5,6 @@ Source of truth: `docs/implplan/SPRINT_20251229_049_BE_csproj_audit_maint_tests.
| Task ID | Status | Notes |
| --- | --- | --- |
| AUDIT-0401-M | DONE | Maintainability audit for StellaOps.Notify.Connectors.Slack.Tests. |
| AUDIT-0401-T | DONE | Test coverage audit for StellaOps.Notify.Connectors.Slack.Tests. |
| AUDIT-0401-A | DONE | Waived (test project). |
| AUDIT-0401-M | DONE | Revalidated 2026-01-07; maintainability audit for StellaOps.Notify.Connectors.Slack.Tests. |
| AUDIT-0401-T | DONE | Revalidated 2026-01-07; test coverage audit for StellaOps.Notify.Connectors.Slack.Tests. |
| AUDIT-0401-A | DONE | Waived (test project; revalidated 2026-01-07). |

View File

@@ -20,7 +20,6 @@
<ItemGroup>
<PackageReference Include="FluentAssertions" />
<PackageReference Include="NSubstitute" />
<PackageReference Include="xunit.v3" />
</ItemGroup>
</Project>

View File

@@ -5,6 +5,6 @@ Source of truth: `docs/implplan/SPRINT_20251229_049_BE_csproj_audit_maint_tests.
| Task ID | Status | Notes |
| --- | --- | --- |
| AUDIT-0403-M | DONE | Maintainability audit for StellaOps.Notify.Connectors.Teams.Tests. |
| AUDIT-0403-T | DONE | Test coverage audit for StellaOps.Notify.Connectors.Teams.Tests. |
| AUDIT-0403-A | DONE | Waived (test project). |
| AUDIT-0403-M | DONE | Revalidated 2026-01-07; maintainability audit for StellaOps.Notify.Connectors.Teams.Tests. |
| AUDIT-0403-T | DONE | Revalidated 2026-01-07; test coverage audit for StellaOps.Notify.Connectors.Teams.Tests. |
| AUDIT-0403-A | DONE | Waived (test project; revalidated 2026-01-07). |

View File

@@ -20,7 +20,6 @@
<ItemGroup>
<PackageReference Include="FluentAssertions" />
<PackageReference Include="NSubstitute" />
<PackageReference Include="xunit.v3" />
</ItemGroup>
<ItemGroup>

View File

@@ -5,6 +5,6 @@ Source of truth: `docs/implplan/SPRINT_20251229_049_BE_csproj_audit_maint_tests.
| Task ID | Status | Notes |
| --- | --- | --- |
| AUDIT-0405-M | DONE | Maintainability audit for StellaOps.Notify.Connectors.Webhook.Tests. |
| AUDIT-0405-T | DONE | Test coverage audit for StellaOps.Notify.Connectors.Webhook.Tests. |
| AUDIT-0405-A | DONE | Waived (test project). |
| AUDIT-0405-M | DONE | Revalidated 2026-01-07; maintainability audit for StellaOps.Notify.Connectors.Webhook.Tests. |
| AUDIT-0405-T | DONE | Revalidated 2026-01-07; test coverage audit for StellaOps.Notify.Connectors.Webhook.Tests. |
| AUDIT-0405-A | DONE | Waived (test project; revalidated 2026-01-07). |

View File

@@ -17,6 +17,5 @@
<ItemGroup>
<PackageReference Include="FluentAssertions" />
<PackageReference Include="NSubstitute" />
<PackageReference Include="xunit.v3" />
</ItemGroup>
</Project>

View File

@@ -5,6 +5,6 @@ Source of truth: `docs/implplan/SPRINT_20251229_049_BE_csproj_audit_maint_tests.
| Task ID | Status | Notes |
| --- | --- | --- |
| AUDIT-0406-M | DONE | Maintainability audit for StellaOps.Notify.Core.Tests. |
| AUDIT-0406-T | DONE | Test coverage audit for StellaOps.Notify.Core.Tests. |
| AUDIT-0406-A | DONE | Waived (test project). |
| AUDIT-0406-M | DONE | Revalidated 2026-01-07; maintainability audit for StellaOps.Notify.Core.Tests. |
| AUDIT-0406-T | DONE | Revalidated 2026-01-07; test coverage audit for StellaOps.Notify.Core.Tests. |
| AUDIT-0406-A | DONE | Waived (test project; revalidated 2026-01-07). |

View File

@@ -18,7 +18,6 @@
<ItemGroup>
<PackageReference Include="FluentAssertions" />
<PackageReference Include="NSubstitute" />
<PackageReference Include="xunit.v3" />
</ItemGroup>
</Project>

View File

@@ -5,6 +5,6 @@ Source of truth: `docs/implplan/SPRINT_20251229_049_BE_csproj_audit_maint_tests.
| Task ID | Status | Notes |
| --- | --- | --- |
| AUDIT-0408-M | DONE | Maintainability audit for StellaOps.Notify.Engine.Tests. |
| AUDIT-0408-T | DONE | Test coverage audit for StellaOps.Notify.Engine.Tests. |
| AUDIT-0408-A | DONE | Waived (test project). |
| AUDIT-0408-M | DONE | Revalidated 2026-01-07; maintainability audit for StellaOps.Notify.Engine.Tests. |
| AUDIT-0408-T | DONE | Revalidated 2026-01-07; test coverage audit for StellaOps.Notify.Engine.Tests. |
| AUDIT-0408-A | DONE | Waived (test project; revalidated 2026-01-07). |

View File

@@ -19,7 +19,6 @@
<PackageReference Include="FluentAssertions" />
<PackageReference Include="NJsonSchema" />
<PackageReference Include="NSubstitute" />
<PackageReference Include="xunit.v3" />
<None Include="../../../../docs/events/samples/*.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>

View File

@@ -5,6 +5,6 @@ Source of truth: `docs/implplan/SPRINT_20251229_049_BE_csproj_audit_maint_tests.
| Task ID | Status | Notes |
| --- | --- | --- |
| AUDIT-0410-M | DONE | Maintainability audit for StellaOps.Notify.Models.Tests. |
| AUDIT-0410-T | DONE | Test coverage audit for StellaOps.Notify.Models.Tests. |
| AUDIT-0410-A | DONE | Waived (test project). |
| AUDIT-0410-M | DONE | Revalidated 2026-01-07; maintainability audit for StellaOps.Notify.Models.Tests. |
| AUDIT-0410-T | DONE | Revalidated 2026-01-07; test coverage audit for StellaOps.Notify.Models.Tests. |
| AUDIT-0410-A | DONE | Waived (test project; revalidated 2026-01-07). |

View File

@@ -18,7 +18,6 @@
<PackageReference Include="FluentAssertions" />
<PackageReference Include="Moq" />
<PackageReference Include="Testcontainers.PostgreSql" />
<PackageReference Include="xunit.v3" />
</ItemGroup>
<ItemGroup>

View File

@@ -5,6 +5,6 @@ Source of truth: `docs/implplan/SPRINT_20251229_049_BE_csproj_audit_maint_tests.
| Task ID | Status | Notes |
| --- | --- | --- |
| AUDIT-0412-M | DONE | Maintainability audit for StellaOps.Notify.Persistence.Tests. |
| AUDIT-0412-T | DONE | Test coverage audit for StellaOps.Notify.Persistence.Tests. |
| AUDIT-0412-A | DONE | Waived (test project). |
| AUDIT-0412-M | DONE | Revalidated 2026-01-07; maintainability audit for StellaOps.Notify.Persistence.Tests. |
| AUDIT-0412-T | DONE | Revalidated 2026-01-07; test coverage audit for StellaOps.Notify.Persistence.Tests. |
| AUDIT-0412-A | DONE | Waived (test project; revalidated 2026-01-07). |

View File

@@ -15,7 +15,6 @@
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" />
<PackageReference Include="NSubstitute" />
<PackageReference Include="Testcontainers" />
<PackageReference Include="xunit.v3" />
</ItemGroup>
<ItemGroup>

View File

@@ -5,6 +5,6 @@ Source of truth: `docs/implplan/SPRINT_20251229_049_BE_csproj_audit_maint_tests.
| Task ID | Status | Notes |
| --- | --- | --- |
| AUDIT-0414-M | DONE | Maintainability audit for StellaOps.Notify.Queue.Tests. |
| AUDIT-0414-T | DONE | Test coverage audit for StellaOps.Notify.Queue.Tests. |
| AUDIT-0414-A | DONE | Waived (test project). |
| AUDIT-0414-M | DONE | Revalidated 2026-01-07; maintainability audit for StellaOps.Notify.Queue.Tests. |
| AUDIT-0414-T | DONE | Revalidated 2026-01-07; test coverage audit for StellaOps.Notify.Queue.Tests. |
| AUDIT-0414-A | DONE | Waived (test project; revalidated 2026-01-07). |

View File

@@ -19,7 +19,6 @@
<ItemGroup>
<PackageReference Include="FluentAssertions" />
<PackageReference Include="NSubstitute" />
<PackageReference Include="xunit.v3" />
</ItemGroup>
<ItemGroup>

View File

@@ -5,6 +5,6 @@ Source of truth: `docs/implplan/SPRINT_20251229_049_BE_csproj_audit_maint_tests.
| Task ID | Status | Notes |
| --- | --- | --- |
| AUDIT-0417-M | DONE | Maintainability audit for StellaOps.Notify.WebService.Tests. |
| AUDIT-0417-T | DONE | Test coverage audit for StellaOps.Notify.WebService.Tests. |
| AUDIT-0417-A | DONE | Waived (test project). |
| AUDIT-0417-M | DONE | Revalidated 2026-01-07; maintainability audit for StellaOps.Notify.WebService.Tests. |
| AUDIT-0417-T | DONE | Revalidated 2026-01-07; test coverage audit for StellaOps.Notify.WebService.Tests. |
| AUDIT-0417-A | DONE | Waived (test project; revalidated 2026-01-07). |

View File

@@ -12,7 +12,6 @@
<PackageReference Include="FluentAssertions" />
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" />
<PackageReference Include="NSubstitute" />
<PackageReference Include="xunit.v3" />
</ItemGroup> <ItemGroup>
<Using Include="Xunit" />
</ItemGroup>

View File

@@ -5,6 +5,6 @@ Source of truth: `docs/implplan/SPRINT_20251229_049_BE_csproj_audit_maint_tests.
| Task ID | Status | Notes |
| --- | --- | --- |
| AUDIT-0419-M | DONE | Maintainability audit for StellaOps.Notify.Worker.Tests. |
| AUDIT-0419-T | DONE | Test coverage audit for StellaOps.Notify.Worker.Tests. |
| AUDIT-0419-A | DONE | Waived (test project). |
| AUDIT-0419-M | DONE | Revalidated 2026-01-07; maintainability audit for StellaOps.Notify.Worker.Tests. |
| AUDIT-0419-T | DONE | Revalidated 2026-01-07; test coverage audit for StellaOps.Notify.Worker.Tests. |
| AUDIT-0419-A | DONE | Waived (test project; revalidated 2026-01-07). |