Joseph Doherty
fba3d09eed
docs(observability): current-state x3 + GAPS + README
...
Complete the observability normalization component docs:
- components/observability/current-state/otopcua/CURRENT-STATE.md — full
OTel SDK (metrics + tracing) + Prometheus; 7 otopcua.* instruments + 2
spans; Serilog with driver-scope LogContextEnricher; no Resource/service.name
anywhere; tracing pipeline wired but no exporter; adoption plan: AddZbTelemetry
gains shared Resource + trace↔log correlation; LogContextEnricher kept bespoke.
- components/observability/current-state/mxaccessgw/CURRENT-STATE.md — 20
hand-rolled instruments (13 counters, 3 histograms ms-unit, 4 gauges) in
GatewayMetrics.cs; no OTel SDK → metrics never export; MEL logging with
GatewayLogScope correlation and GatewayLogRedactor; adoption plan: in-pass
MEL → AddZbSerilog migration (LogContext correlation, ILogRedactor seam) +
AddZbTelemetry wires OTel SDK so GatewayMetrics finally exports.
- components/observability/current-state/scadabridge/CURRENT-STATE.md —
OpenTelemetry.Api is a CVE-patch override only (zero instrumentation); Serilog
with SiteId/NodeRole/NodeHostname enrichers (strongest set in family); adoption
plan: replace CVE ref with AddZbTelemetry; adopt AddZbSerilog (LoggerConfigurationFactory
deleted); add first scadabridge.* instruments.
- components/observability/GAPS.md — divergence table across §1 Resource (P1,
nobody), §2 metrics export (P1, MxGateway invisible), §3 MxGateway MEL→Serilog
(P1, in-pass done), §4 trace↔log correlation, §5 ms→s unit, §6 Meter naming,
§7 standard instrumentation, §8 Serilog version, §9 ScadaBridge zero
instrumentation; 11-item prioritized backlog.
- components/observability/README.md — overview, per-project status table
(OTel today / metrics / tracing / logging / enrichers / adoption status),
normalized vs. left-per-project boundary, 2-package structure, component status.
2026-06-01 07:23:08 -04:00
Joseph Doherty
7d243890ed
docs(observability): spec + METRIC-CONVENTIONS + ZB.MOM.WW.Telemetry shared contract
...
Author the three normalization docs for the observability component:
- components/observability/spec/SPEC.md — Section 0 scope (normalized vs. per-project),
AddZbTelemetry pipeline, shared Resource attribute set, standard instrumentation baseline,
exporter conventions, Serilog two-stage bootstrap with identity enrichers and
TraceContextEnricher, ILogRedactor redaction seam, per-project migration table, and
acceptance criteria.
- components/observability/spec/METRIC-CONVENTIONS.md — meter naming convention (app
namespace; MxGateway.Server flagged as convergence target), instrument naming pattern
(<app>.<subsystem>.<event>), mandatory duration unit = seconds (MxGateway ms histograms
flagged), Resource attribute set table, standard instrumentation baseline, and per-app
instrument tables (OtOpcUa 7 instruments + 2 spans; MxGateway 13 counters / 3 histograms
/ 4 gauges; ScadaBridge TBD).
- components/observability/shared-contract/ZB.MOM.WW.Telemetry.md — paper API for the two
packages: ZbTelemetryOptions, ZbExporter enum, AddZbTelemetry (IHostApplicationBuilder +
IServiceCollection overloads), ZbResource.Build, MapZbMetrics; AddZbSerilog,
ZbLogEnricherNames constants, TraceContextEnricher, ILogRedactor, RedactionEnricher.
Consumer matrix and open contract questions included.
2026-06-01 07:19:38 -04:00
Joseph Doherty
76295695ee
docs(health): align shared-contract to shipped API + per-lib CLAUDE.md + cleanup
...
- Contract: DatabaseHealthCheck<TContext> ctor now shows IServiceProvider (resolves
IDbContextFactory<TContext> when registered, else a scoped TContext; pool-safe)
- Contract: RequireActiveNode gains retryAfterSeconds = 5 default parameter
- Packages: remove dangling AspNetCore.HealthChecks.UI.Client PackageVersion (no
csproj referenced it)
- Tests: fix CS8625 in RoleLessCases — use object?[] so null role rows compile
warning-free under Nullable=enable
- Add ZB.MOM.WW.Health/CLAUDE.md (packages, responsibilities, consumer matrix,
build/test/pack commands, status + pointer to components/health/)
2026-06-01 07:17:18 -04:00
Joseph Doherty
0c087d150d
feat(health): pack ZB.MOM.WW.Health 0.1.0 + README + register health component in indexes
...
- Added PackageTags to all 3 library csproj files (health-checks;aspnetcore/akka/efcore;scada;wonderware;zb-mom-ww)
- Full solution dotnet test: 58 tests green (32 Akka + 20 core + 6 EFCore)
- dotnet pack -c Release produces ZB.MOM.WW.Health.0.1.0.nupkg, ZB.MOM.WW.Health.Akka.0.1.0.nupkg, ZB.MOM.WW.Health.EntityFrameworkCore.0.1.0.nupkg; artifacts/ not committed
- ZB.MOM.WW.Health/README.md: overview, packages table, consumer matrix, versioning, build/test/pack instructions, status note
- components/README.md: Health row added to component registry
- CLAUDE.md: Health row in Component-normalization table + Health paragraph; intro updated from "two pieces" to "three pieces"
- upcoming.md: Health checks item checked off with pointer to components/health/ and ZB.MOM.WW.Health/
- components/health/README.md: status updated from "Draft / scaffolded / follow-on" to "Built @ 0.1.0"
2026-06-01 07:09:14 -04:00
Joseph Doherty
1c2b23cbbb
refactor(health.akka): review polish (internal decision helper, role guard, factory results, test coverage) + fix SPEC §4 gate description
2026-06-01 07:04:29 -04:00
Joseph Doherty
aa2251b93d
feat(health): core review fixes (async writer, gRPC cancellation, validation, configurable retry-after)
2026-06-01 07:00:21 -04:00
Joseph Doherty
07d5907258
docs(health): resolve spec/contract/gaps consistency (review fixes)
...
Applies canonical resolutions for eight settled decisions:
- GAPS: remove three stale "Decisions still open" bullets (#1 IActiveNodeGate placement, #2 GrpcChannel type, #3 OtOpcUaCompat named constant)
- Shared contract: AkkaClusterHealthCheck, ActiveNodeHealthCheck constructors take IServiceProvider (lazy ActorSystem, Degraded-when-not-ready)
- Shared contract: AkkaActiveNodeGate takes IServiceProvider; reads SelfMember+leader directly, null-guarded; does not proxy ActiveNodeHealthCheck
- Shared contract: DatabaseHealthCheckOptions.Probe renamed to ProbeQuery; consumer matrix updated
- Shared contract: settled AddZbHealthChecks open question removed (spec §5 is per-project AddHealthChecks)
- SPEC §2.2: OtOpcUaCompat Leaving/Exiting cell updated from — to Degraded + footnote; §2.3 startup-safety note added
- README: status line corrected from "built and tested" to "scaffolded … implementation is follow-on (task #7 )"; IActiveNodeGate "left per-project" bullet removed
- OtOpcUa current-state: AddZbHealthChecks → AddHealthChecks().AddCheck<...>(); IClusterRoleInfo note reframed as accepted trade-off
- ScadaBridge current-state: IActiveNodeGate bullet rewritten — interface moves to ZB.MOM.WW.Health on adoption, InboundApiEndpointFilter references shared interface
2026-06-01 06:33:42 -04:00
Joseph Doherty
3d25ee5090
docs(health): current-state x3 + GAPS + README
...
Code-verified current-state docs for OtOpcUa (three-tier full), ScadaBridge
(two-tier, no /healthz), and MxAccessGateway (bare liveness only / no probes).
GAPS backlog with P1 for MxGateway and convergence items for Akka status policy,
DB probe technique, and response writer. README with per-project status table.
2026-06-01 06:23:53 -04:00
Joseph Doherty
1dc35a8c43
docs(health): spec + ZB.MOM.WW.Health shared contract
...
Authors components/health/spec/SPEC.md (normalized three-tier endpoint
convention, probe catalog, response-writer contract, migration notes) and
components/health/shared-contract/ZB.MOM.WW.Health.md (paper API for the
3-package library: core, Akka, EntityFrameworkCore).
2026-06-01 06:20:19 -04:00
Joseph Doherty
2485d86205
docs: register ui-theme component in indexes
2026-06-01 05:16:58 -04:00
Joseph Doherty
029ac0719b
docs(ui-theme): current-state ×3 + GAPS adoption backlog
2026-06-01 05:15:38 -04:00
Joseph Doherty
95975d0754
docs(ui-theme): spec, design tokens, shared contract
2026-06-01 05:11:43 -04:00
dohertj2
37e23cf9f2
Initial commit: scadaproj umbrella — sister-project index, auth component normalization (design + GAPS), and the built ZB.MOM.WW.Auth shared library (0.1.0, flattened in).
2026-06-01 03:59:23 -04:00