Files
scadaproj/ZB.MOM.WW.Configuration/CLAUDE.md
T
Joseph Doherty c3ab37523a docs: record ZB.MOM.WW.Configuration fleet-wide adoption + add design/plan
Configuration is now adopted across all three sister apps (local branches),
so flip the status lines in CLAUDE.md, components/configuration/GAPS.md, and the
lib README/CLAUDE.md from 'not adopted' to adopted (also corrects 27->42 tests).
Adds the brainstorm design doc + bite-sized implementation plan (+tasks.json)
under docs/plans/ that drove the adoption.
2026-06-01 23:18:02 -04:00

3.5 KiB

ZB.MOM.WW.Configuration

Startup configuration-validation library for the ZB.MOM.WW SCADA family (OtOpcUa, MxAccessGateway, ScadaBridge). These are libraries, not a service — the package is linked directly into the consuming application at build time. There is no central validation process; all validation runs in-process at startup.

The library normalizes the three-project configuration-validation surface: a failure-accumulating IValidateOptions base, reusable rule primitives, a bind+validate+ValidateOnStart DI extension, and a pre-host ConfigPreflight aggregator for raw IConfiguration — so the plumbing is written once and domain rules stay per-project.

Built at 0.1.0. Adopted by OtOpcUa, MxAccessGateway, and ScadaBridge on 2026-06-01 (local default branches; not yet pushed to remotes). Adoption tracked in ~/Desktop/scadaproj/components/configuration/GAPS.md.


Package

Package Responsibilities Key Dependencies
ZB.MOM.WW.Configuration OptionsValidatorBase<TOptions> (abstract IValidateOptions base, failure-accumulating), ValidationBuilder (rule primitives: Required, Port, HostPort, PositiveTimeSpan, OneOf, MinCount, RequireThat, Add), ServiceCollectionExtensions.AddValidatedOptions (bind + validator + ValidateOnStart in one call), ConfigPreflight (fluent pre-host raw-IConfiguration checker). Microsoft.Extensions.Options, Microsoft.Extensions.Options.ConfigurationExtensions, Microsoft.Extensions.Configuration.Abstractions, Microsoft.Extensions.DependencyInjection.Abstractions

Single package; no ASP.NET Core framework reference.


Build, test, and pack commands

# From ZB.MOM.WW.Configuration/

# Build
dotnet build ZB.MOM.WW.Configuration.slnx

# Test (no external dependencies required)
dotnet test ZB.MOM.WW.Configuration.slnx

# Pack (one .nupkg lands in artifacts/)
dotnet pack ZB.MOM.WW.Configuration.slnx -c Release -o ./artifacts

Test breakdown:

Assembly Tests
ZB.MOM.WW.Configuration.Tests 27
Total 27

GeneratePackageOnBuild is off — pack explicitly with the command above.


Source layout

ZB.MOM.WW.Configuration/
├── Directory.Build.props          # version (0.1.0), TFM (net10.0), central package mgmt
├── Directory.Packages.props       # pinned package versions
├── ZB.MOM.WW.Configuration.slnx   # solution file
├── src/
│   └── ZB.MOM.WW.Configuration/   # library project
│       ├── OptionsValidatorBase.cs
│       ├── ValidationBuilder.cs
│       ├── Checks.cs                 # internal shared rule wording
│       ├── ServiceCollectionExtensions.cs
│       └── ConfigPreflight.cs
└── tests/
    └── ZB.MOM.WW.Configuration.Tests/   # xUnit test project (27 tests)

Status

Part of the scadaproj component-normalization family — this is the configuration + validation component. Built at 0.1.0. Adopted by OtOpcUa, MxAccessGateway, and ScadaBridge on 2026-06-01 (local default branches; not yet pushed to remotes) — per-app result is tracked in:

  • ~/Desktop/scadaproj/components/configuration/GAPS.md

Design documentation:

  • ~/Desktop/scadaproj/components/configuration/spec/SPEC.md — normalized validation target
  • ~/Desktop/scadaproj/components/configuration/shared-contract/ZB.MOM.WW.Configuration.md — proposed shared-library API
  • ~/Desktop/scadaproj/components/configuration/current-state/ — per-project current state (code-verified)