refactor(site-runtime): excise vestigial site-side notification-list surface — repo, DI registration, dead write paths (arch-review 08 §1.3/#23)

Claude-Session: https://claude.ai/code/session_01MtdgwpEeCUn6cUA5f1LMPj
This commit is contained in:
Joseph Doherty
2026-07-10 06:59:45 -04:00
parent 7ff1263ac0
commit d61881ffaf
7 changed files with 73 additions and 433 deletions
@@ -424,7 +424,8 @@ public class SiteCompositionRootTests : IDisposable
public static IEnumerable<object[]> SiteScopedServices => new[]
{
new object[] { typeof(IExternalSystemRepository) },
new object[] { typeof(INotificationRepository) },
// INotificationRepository is intentionally absent — notification config is
// central-only (arch-review 08 §1.3/#23); the site-side variant was removed.
new object[] { typeof(ExternalSystemClient) },
new object[] { typeof(IExternalSystemClient) },
new object[] { typeof(DatabaseGateway) },
@@ -442,11 +443,15 @@ public class SiteCompositionRootTests : IDisposable
}
[Fact]
public void Site_NotificationRepository_IsSiteImplementation()
public void Site_NotificationRepository_IsNotRegistered()
{
// Notification delivery is central-only (CLAUDE.md "Notification delivery is
// central-only"); the site-local notification_lists/smtp_configurations tables
// are purged on every artifact apply, so a site-side INotificationRepository
// could only ever serve empty results. It must not be registered at all.
using var scope = _host.Services.CreateScope();
var repo = scope.ServiceProvider.GetRequiredService<INotificationRepository>();
Assert.IsType<SiteNotificationRepository>(repo);
var repo = scope.ServiceProvider.GetService<INotificationRepository>();
Assert.Null(repo);
}
// --- Options ---