Joseph Doherty 8704f9e455 Integrate Round 3 OtOpcUa corrections into the plan files (goal-state.md, roadmap.md) and append a Round 3 addendum to the corrections doc for audit trail.
goal-state.md: schemas-repo seed paragraph (line 574) now reflects the `_base` equipment-class template (universal cross-machine baseline that every other class extends), explicit alignment to OPC UA Companion Spec OPC 40010 (Machinery) for the Identification component + MachineryOperationMode enum, OPC UA Part 9 for alarm-summary fields (HasActiveAlarms, ActiveAlarmCount, HighestActiveAlarmSeverity), ISO 22400 for lifetime counters (TotalRunSeconds, TotalCycles) that feed Availability + Performance KPIs, the canonical state vocabulary declared in `_base.stateModel`, and the OtOpcUa central config DB extension with 9 nullable OPC 40010 identity columns (Manufacturer, Model, SerialNumber, HardwareRevision, SoftwareRevision, YearOfConstruction, AssetLocation, ManufacturerUri, DeviceManualUri). Updated format-decisions count from 8 to 10 (added D9 _base+extends inheritance, D10 category→folder mapping). Multi-identifier section (line 156) gains a paragraph describing the OPC 40010 fields as additional first-class metadata beyond the five identifiers, with the operator-set / driver-dynamic-override pattern documented.

roadmap.md: OtOpcUa Year 1 cell (line 66) gains the universal `_base` equipment-class template seeded by the OtOpcUa team, with explicit OPC 40010 / OPC UA Part 9 / ISO 22400 references and the rationale ("avoids per-class drift in identity / state / alarm field naming and ensures every machine in the estate exposes the same baseline metadata regardless of vendor").

handoffs/otopcua-corrections-2026-04-17.md: appended a Round 3 addendum capturing the four follow-on additions (ACL design closing B1, dev-environment two-tier model, cutover scope removal closing C5, `_base` template + OPC 40010 columns building on B2). Updated summary table marks B1 / C1 / C5 as CLOSED, B2 as PARTIALLY CLOSED. Round 3 additions are committed in lmxopcua at `4903a19` and `d8fa3a0`, and in 3yearplan at `5953685` and `cd85159`.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-17 13:04:18 -04:00
Add _base equipment-class template for universal cross-machine metadata that every machine in the OtOpcUa estate exposes regardless of vendor, protocol, or machine type. References OPC UA Companion Spec OPC 40010 (Machinery) for the Identification component (Manufacturer, Model, ProductInstanceUri, SerialNumber, HardwareRevision, SoftwareRevision, YearOfConstruction, ManufacturerUri, DeviceManual, AssetLocation) plus the MachineryOperationMode enum (Auto, Manual, Maintenance, Service, Setup, Other), OPC UA Part 9 for the alarm summary fields (HasActiveAlarms, ActiveAlarmCount, HighestActiveAlarmSeverity), ISO 22400 for the lifetime counter fields (TotalRunSeconds, TotalCycles) that feed Availability + Performance KPIs at Layer 3, and the 3-year-plan handoff §"Canonical Model Integration" for the canonical state vocabulary (Running / Idle / Faulted / Starved / Blocked) declared in _base.stateModel. Includes the OtOpcUa five-identifier set (EquipmentUuid, MachineCode, ZTag, SAPID, plus DeviceClass = EquipmentClassRef) so every machine surfaces the join keys downstream consumers need; ConnectionState + LastDataTimestamp + DriverType for driver-side observability that does not require any particular equipment-protocol feature; optional production context (CurrentWorkOrder, CurrentPartNumber, CurrentRecipe, CurrentOperator, CurrentShift) marked isRequired: false since not every machine type surfaces these. Plus two universal alarm definitions (communication-loss, data-stale) that apply to every equipment regardless of class.
2026-04-17 12:54:17 -04:00

3-Year Plan: Shopfloor IT/OT Transformation

A 3-year plan for transforming and enhancing shopfloor IT/OT interfaces and data collection — bridging IT and OT layers, improving operator interfaces, and upgrading data collection pipelines.

Vision

A stable, single point of integration between shopfloor OT and enterprise IT.

Three Pillars (binary at end of plan)

  1. Unification — 100% of sites on the standardized stack (OtOpcUa + ScadaBridge + Redpanda + SnowBridge + Snowflake/dbt).
  2. Analytics / AI Enablement — machine data in Snowflake with a ≤15-minute analytics SLO; at least one "not possible before" use case in production.
  3. Legacy Retirement — zero remaining bespoke IT/OT integration paths outside ScadaBridge.

Key Architecture

Layer 1  Equipment (PLCs, controllers, instruments)
Layer 2  OtOpcUa (unified site-level OPC UA — single session per equipment, two namespaces)
Layer 3  SCADA (Aveva System Platform + Ignition)
Layer 4  ScadaBridge (sole IT/OT crossing point)
         ─── IT/OT Boundary ───
         Enterprise IT (Camstar, Delmia, Snowflake, Power BI, SnowBridge)

The plan also declares a Unified Namespace (UNS) composed of OtOpcUa + Redpanda + canonical model in schemas repo + dbt curated layer, with a 5-level naming hierarchy standard (Enterprise → Site → Area → Line → Equipment).

Plan Documents

File Purpose
current-state.md Snapshot of today's systems, integrations, and pain points
goal-state.md Target end-state: architecture, components, success criteria, UNS, canonical model
roadmap.md 7 workstreams x 3 years migration grid
STATUS.md Working-session bookmark — where we left off, pending items

Component Detail Files

File Purpose
current-state/legacy-integrations.md Pillar 3 denominator: 3 legacy IT/OT integrations to retire
current-state/equipment-protocol-survey.md Removed — protocol survey no longer needed; OtOpcUa v2 team committed driver list directly
goal-state/digital-twin-management-brief.md Digital twin management conversation brief (completed)
schemas/ Canonical OT equipment definitions (DRAFT seed contributed by OtOpcUa team — UNS hierarchy + equipment-class templates + format JSON Schemas + worked FANUC CNC pilot). Temporary location until a dedicated schemas repo is created and an owner team is named — see schemas/README.md

Output Generation

File Purpose
outputs/README.md How to regenerate PPTX + PDF from plan source
outputs/presentation-spec.md 18-slide mixed-stakeholder deck structure
outputs/longform-spec.md Faithful-typeset PDF structure

Trigger: regenerate outputs, regenerate presentation, or regenerate longform in a Claude Code session.

Conventions

  • Everything in markdown — no proprietary formats.
  • _TBD_ marks gaps that still need filling.
  • Decisions are captured inline with rationale; don't re-open without new information.

Working with Claude Code

This repo includes a CLAUDE.md file that orients Claude Code sessions to the plan's structure and conventions. Resume work with:

claude --resume <session-id>

or start a new session in this directory — CLAUDE.md and STATUS.md provide enough context to pick up where the last session left off.

Description
No description provided
Readme 2.1 MiB
Languages
Mermaid 100%