[Telemetry] Add a minimum-level governance hook to AddZbSerilog so ScadaBridge can adopt it #12

Open
opened 2026-11-06 15:24:43 -05:00 by dohertj2 · 0 comments
Owner

What: Teach AddZbSerilog (ZB.MOM.WW.Telemetry.Serilog) to accept a caller-supplied minimum-level governance hook, so ScadaBridge can drop its own LoggerConfigurationFactory and adopt the shared bootstrap.

Why: ScadaBridge's factory implements a documented contract (REQ-HOST-8 / Host-011/014/020/022): ScadaBridge:Logging:MinimumLevel is the floor and overrides Serilog:MinimumLevel, with operator warnings. AddZbSerilog hard-codes MinimumLevel.Is(Information) before ReadFrom.Configuration, which would invert that precedence, so ScadaBridge is the only app not on AddZbSerilog. GAPS records: "Full AddZbSerilog adoption for ScadaBridge would first require teaching the shared bootstrap to accept a caller-supplied minimum-level governance hook."

Scope: library change here (additive, opt-in option); ScadaBridge adoption is a follow-on in that repo. Low priority — the current split is an accepted decision, not a defect.

Source: components/observability/GAPS.md ("Accepted scope decisions"); ZB.MOM.WW.Telemetry/CLAUDE.md

**What:** Teach `AddZbSerilog` (`ZB.MOM.WW.Telemetry.Serilog`) to accept a caller-supplied minimum-level governance hook, so ScadaBridge can drop its own `LoggerConfigurationFactory` and adopt the shared bootstrap. **Why:** ScadaBridge's factory implements a documented contract (REQ-HOST-8 / Host-011/014/020/022): `ScadaBridge:Logging:MinimumLevel` is the floor and overrides `Serilog:MinimumLevel`, with operator warnings. `AddZbSerilog` hard-codes `MinimumLevel.Is(Information)` before `ReadFrom.Configuration`, which would invert that precedence, so ScadaBridge is the only app not on `AddZbSerilog`. GAPS records: "Full `AddZbSerilog` adoption for ScadaBridge would first require teaching the shared bootstrap to accept a caller-supplied minimum-level governance hook." **Scope:** library change here (additive, opt-in option); ScadaBridge adoption is a follow-on in that repo. Low priority — the current split is an accepted decision, not a defect. Source: `components/observability/GAPS.md` ("Accepted scope decisions"); `ZB.MOM.WW.Telemetry/CLAUDE.md`
dohertj2 added the type:featurepriority:p3migrated labels 2026-11-06 15:24:43 -05:00
Sign in to join this conversation.