Files
3yearplan/schemas/docs/overview.md
Joseph Doherty 98bf2d0da4 Expand SnowBridge to own ingest + in-process transform; drop dbt
SnowBridge now owns machine-data ingest, in-process .NET transformation,
and direct writes to curated tables in Snowflake. Collapses the previous
ingest/transform split into a single service; no dbt, no external
orchestrator, no Snowflake landing tier. Keeps the in-house .NET pattern
consistent with ScadaBridge and OtOpcUa.

The "Snowflake dbt Transform Layer" roadmap workstream merges into
SnowBridge (7 → 6 workstreams); Year 2 canonical-state-based OEE moves
with it. Canonical model still has three surfaces — the third is
renamed from "dbt curated layer" to "SnowBridge curated layer in
Snowflake"; mechanics unchanged.
2026-04-24 14:53:16 -04:00

2.2 KiB

Overview

The schemas repo is the org's single source of truth for OT equipment definitions. Three things live here:

  1. UNS hierarchy — per-site declarations of which Areas and Lines exist (uns/).
  2. Equipment-class templates — per-class declarations of which raw signals each equipment type exposes (classes/).
  3. Format definitions — JSON Schemas defining what UNS and class files must look like (format/).

Why a central repo

Three OT/IT systems consume the same canonical model:

  • OtOpcUa equipment namespace — exposes raw signals over OPC UA
  • Redpanda + Protobuf event topics — canonical event shape on the wire
  • SnowBridge curated layer in Snowflake — analytics model (SnowBridge writes curated rows directly; no separate dbt layer)

Without a central source, they would drift. With one repo, every consumer pulls a versioned snapshot and validates against it. Drift becomes a CI failure, not a production incident.

Lifecycle

[author edits JSON in this repo]
          │
          ▼
[CI validates against format/*.schema.json]
          │
          ▼
[PR review by maintainer + consumer reps]
          │
          ▼
[merge to main → tag a semver release]
          │
          ▼
[each consumer pulls the tag and integrates per docs/consumer-integration.md]

What's NOT in this repo

  • Per-equipment configuration — which specific CNC at Warsaw West runs which program. That's per-instance config in OtOpcUa's central config DB (lmxopcua/docs/v2/config-db-schema.md Equipment table), not template-level material.
  • State derivation rules — how raw signals derive into Running / Idle / Faulted / Starved / Blocked. That's Layer 3 logic in Aveva System Platform / Ignition. Equipment-class templates can declare which states the class supports (stateModel.states) but not the derivation itself.
  • Wire-format Protobuf schemas — those are code-generated from this repo into a separate output artifact for Redpanda. The authoring source is here; the binary wire format is derived.
  • Authoritative LDAP groups, ACL grants, OPC UA security policies — those live in the consuming systems (OtOpcUa central config DB, identity provider).