fix(options): bind + validate OperationTrackingOptions; register the site IOperationTrackingStore that two comments claimed AddSiteRuntime provides (plan R2-08 T8, arch-review 08r2 NF4)
VERIFY-THEN-FIX: the plan-authoring discovery is CONFIRMED. No code anywhere in src/ registered IOperationTrackingStore in DI, yet AkkaHostedService and AuditLog SCE both comment that AddSiteRuntime provides it. Every consumer resolved it via GetService (null-tolerant) and silently ran degraded: cached-drain scheduler never armed, PullSiteCalls reconciliation seam never wired, Tracking.Status degraded to audit-only. This is a FUNCTIONAL FIX riding the hygiene plan: AddSiteRuntime now registers the store (site-only), so site-local cached-call tracking runs in its intended mode. OperationTrackingOptions is now bound + eagerly validated in the Host site-options block.
This commit is contained in:
@@ -137,6 +137,18 @@ public static class SiteServiceRegistration
|
||||
services.TryAddEnumerable(
|
||||
ServiceDescriptor.Singleton<IValidateOptions<SiteRuntimeOptions>, SiteRuntimeOptionsValidator>());
|
||||
|
||||
// OperationTrackingOptions for the site-local cached-call tracking store
|
||||
// (registered by AddSiteRuntime). Bind + eagerly validate here — the store
|
||||
// opens its SQLite connection string at construction, so a blank connection
|
||||
// string should fail the host at boot with a key-naming message rather than
|
||||
// throw opaquely on first resolve (arch-review 08r2 NF4/T8).
|
||||
services.AddOptions<SiteRuntime.Tracking.OperationTrackingOptions>()
|
||||
.Bind(config.GetSection("ScadaBridge:OperationTracking"))
|
||||
.ValidateOnStart();
|
||||
services.TryAddEnumerable(
|
||||
ServiceDescriptor.Singleton<IValidateOptions<SiteRuntime.Tracking.OperationTrackingOptions>,
|
||||
SiteRuntime.Tracking.OperationTrackingOptionsValidator>());
|
||||
|
||||
services.Configure<DataConnectionOptions>(config.GetSection("ScadaBridge:DataConnection"));
|
||||
|
||||
services.AddOptions<StoreAndForwardOptions>()
|
||||
|
||||
Reference in New Issue
Block a user