0974de1df5
CLAUDE.md points at .claude/skills/scadabridge-components/SKILL.md as the component catalog and .claude/skills/scadabridge-cluster-ops/SKILL.md as the source for the management URL, credentials and rebuild/redeploy commands — but neither file was tracked, so a fresh clone got instructions referencing content that was not there. Only the skill files are added; .claude/settings.local.json and scheduled_tasks.lock stay ignored via .gitignore as before.
6.0 KiB
6.0 KiB
name, description
| name | description |
|---|---|
| scadabridge-components | Catalog of ScadaBridge's 27 components — what each one is and its key design commitments. Use when you need to know which component owns a concern, what a named component does, or how the component set fits together. Full per-component specs live in docs/requirements/Component-*.md; the README carries the component table. |
ScadaBridge Component Catalog
The authoritative spec for each entry is docs/requirements/Component-<Name>.md; this is the distilled index.
Current Component List (27 components)
- Template Engine — Template modeling, inheritance, composition, validation, flattening, diffs.
- Deployment Manager — Central-side deployment pipeline, system-wide artifact deployment, instance lifecycle.
- Site Runtime — Site-side actor hierarchy (Deployment Manager singleton, Instance/Script/Alarm Actors), script compilation, Akka stream.
- Data Connection Layer — Protocol abstraction (OPC UA, custom), subscription management, clean data pipe.
- Central–Site Communication — Akka.NET ClusterClient (command/control) + gRPC server-streaming (real-time data), message patterns, debug streaming.
- Store-and-Forward Engine — Buffering, fixed-interval retry, parking, SQLite persistence, replication.
- External System Gateway — External system definitions, API method invocation, database connections.
- Notification Service — Central-only notification-list and SMTP definitions, per-type delivery adapters (sites no longer deliver notifications).
- Central UI — Web-based management interface, all workflows.
- Security & Auth — LDAP/AD authentication, role-based authorization, site-scoped permissions.
- Health Monitoring — Site health metrics collection and central reporting.
- Site Event Logging — Local operational event logs at sites with central query access.
- Cluster Infrastructure — Akka.NET cluster setup, active/standby failover, singleton support.
- Inbound API — Web API for external systems, API key auth, script-based implementations.
- Host — Single deployable binary, role-based component registration, Akka.NET bootstrap.
- Commons — Shared types, POCO entity classes, repository interfaces, message contracts.
- Configuration Database — EF Core data access layer, repositories, unit-of-work, audit logging (IAuditService), migrations.
- Management Service — Akka.NET actor providing programmatic access to all admin operations, ClusterClientReceptionist registration.
- CLI — Command-line tool using HTTP Management API, System.CommandLine, JSON/table output.
- Traefik Proxy — Reverse proxy/load balancer fronting central cluster, active node routing via
/health/active, automatic failover. - Notification Outbox — Central component ingesting store-and-forwarded notifications,
Notificationsaudit table, dispatcher loop, retry/parking, delivery KPIs. - Site Call Audit — Central component auditing site cached calls (
CachedCall/CachedWrite);SiteCallsaudit table, telemetry ingest, reconciliation, KPIs, central→site Retry/Discard relay; sites remain the source of truth. - Audit Log — Central append-only AuditLog table spanning every script-trust-boundary action (outbound API sync+cached, outbound DB sync+cached, notifications, inbound API). Site SQLite hot-path + gRPC telemetry + reconciliation; combined telemetry with Site Call Audit; central direct-write for Notification Outbox dispatch + Inbound API; monthly partitioning, 365-day retention.
- Transport — File-based, encrypted bundle export/import via Central UI. Templates (with all child collections — attributes/alarms/scripts/compositions/native-alarm-sources, field-complete incl.
LockedInDerived+ script cadence/timeout), system artifacts, central-only configuration, plus site/instance-scoped config (Sites, siteDataConnections,Instances + realAreaNameby name) reconciled across environments by aBundleNameMapname-mapping subsystem. Per-conflict resolution with a per-line Myers diff. Runs the script trust gate at import review (5thScriptTrustValidatorcall site — forbidden-API scripts rejected pre-runtime; covers template/shared/ApiMethod bodies, template script + alarm Expression-trigger bodies, and instance alarm-override trigger expressions — all hard-block; template-script name-resolution findings are advisory warnings, ApiMethod findings hard-block). Correlated audit viaBundleImportId. Never touches site runtime nodes (imported instances landNotDeployed). - Script Analysis — Shared authoritative script-trust analyzer: unified forbidden-API deny-list (
ScriptTrustPolicy), fused semantic+syntactic validator (ScriptTrustValidator), Roslyn compile wrapper (RoslynScriptCompiler), and compile-only globals stubs (ScriptCompileSurface/TriggerCompileSurface); consumed by Template Engine, Site Runtime, Inbound API, and Central UI. - KPI History — Reusable central KPI-history backbone: tall/EAV
KpiSamplestore in central MS SQL,KpiHistoryRecorderActorcluster singleton (kpi-history-recorder, not readiness-gated) sampling DI-registeredIKpiSampleSources every minute, bucketed query (GetRawSeriesAsync+KpiSeriesBucketer) + scopedKpiHistoryQueryService, and a reusable custom-SVGKpiTrendChart; ships trends for Notification Outbox, Site Call Audit, Audit Log, and Site Health. - DelmiaNotifier — Standalone external client tool (NOT a cluster component, NOT in the Host): a compact Native-AOT (
win-x64) console app (WWNotifier.exe) that DELMIA Apriso shells out to per recipe download. POSTs to the Inbound APIDelmiaRecipeDownloadmethod (X-API-Key, key fromSCADABRIDGE_API_KEY), with connect-failure-only failover across a comma-list of base URLs, and reports the legacyYES/NO+ exit-code stdout contract — a drop-in replacement for the legacyWWNotifier(seedocs/former-api-specs/dnc/). Zero-dependency BCL-only,System.Text.Jsonsource-gen. Project README:src/ZB.MOM.WW.ScadaBridge.DelmiaNotifier/README.md; design:docs/plans/2026-06-26-delmia-recipe-notifier-design.md.