Seed UNS hierarchy across 6 sites; rebrand outputs to SCADA IT/OT with ZB template

Lands per-site UNS subtree files (Warsaw West/North, Shannon, Galway, TMT,
Ponce) seeded from OpenText facility docs — Warsaw split confirmed as
numbered = legacy Zimmer = West, lettered = legacy Biomet = North. Renames
project framing from "Shopfloor IT/OT" to "SCADA IT/OT" for accuracy.
Extracts a ZB-branded PowerPoint template from example_powerpoint.pptx and
wires it into the outputs pipeline. Trims deck from 18 to 16 slides
(BOBJ->Power BI transferred to another team, Non-Goals and Asks dropped);
goal-state BOBJ analysis pruned to a stub.
This commit is contained in:
Joseph Doherty
2026-04-30 10:54:49 -04:00
parent 98bf2d0da4
commit ebc76e9315
46 changed files with 2554 additions and 122 deletions

39
schemas/uns/README.md Normal file
View File

@@ -0,0 +1,39 @@
# UNS Subtrees — initial draft
> **Status: WORK-IN-PROGRESS draft (2026-04-30).** Initial structural skeleton seeded from the 3-year-plan source files (`current-state.md` enterprise layout + `goal-state.md` UNS naming hierarchy standard) and OpenText facility documentation. Per-site **line and equipment** detail is **not yet populated** — that requires the UNS hierarchy snapshot walk (see `goal-state.md` → "Unified Namespace (UNS) posture → UNS naming hierarchy standard"). See [`QUESTIONS.md`](QUESTIONS.md) for the open questions that block finalization.
>
> **Quick stakeholder view:** [`HIERARCHY.md`](HIERARCHY.md) — high-level tree across all 6 sites with Warsaw expanded as a worked example.
This directory holds one JSON file per **integrated site**, declaring the canonical UNS subtree (Enterprise → Site → Area → Line) for that site. Equipment (level 5) is configured per-cluster in OtOpcUa, not declared here.
## What's drafted
| Site | File | Source of truth | Notes |
|------|------|-----------------|-------|
| Warsaw West | [`warsaw-west.json`](warsaw-west.json) | OpenText `Zimmer Warsaw - Building Use Descriptions.docx` + verbal confirmation from project owner (numbered = legacy Zimmer = West Campus) | Six production buildings: `bldg-2`, `bldg-5`, `bldg-7`, `bldg-10`, `bldg-19`, `bldg-20`. Non-production buildings (3, 4, 8, 14, 15, 17, 18) deliberately excluded — Areas are production-only per goal-state. Lines pending walk. |
| Warsaw North | [`warsaw-north.json`](warsaw-north.json) | OpenText `Zimmer Biomet Buildings` folder + verbal confirmation (lettered = legacy Biomet = North Campus) | Six lettered buildings: `bldg-a`, `bldg-b`, `bldg-c`, `bldg-d`, `bldg-e`, `bldg-i`. Production-vs-non-production breakdown per building is **not yet known** — all included pending walk. Note F/G/H are absent from the building list; verify whether they exist. |
| Shannon | [`shannon.json`](shannon.json) | `current-state.md` other-integrated-sites + "single server cluster covering the whole site" rule | Area = `_default` (single-cluster site). Lines pending walk. |
| Galway | [`galway.json`](galway.json) | same | same |
| TMT | [`tmt.json`](tmt.json) | same | Area = `_default`. Lines pending walk. **TMT shortname unconfirmed** — see [`QUESTIONS.md`](QUESTIONS.md) Q2. |
| Ponce | [`ponce.json`](ponce.json) | same | same |
The not-yet-integrated smaller sites (Berlin, Winterthur, Jacksonville, others) are deliberately **not seeded** — onboarding shape is still TBD and the site list is volatile per `current-state.md`.
## What still needs to happen
1. **Walk integrated sites** to populate the `lines` arrays in each file above. Walk inputs: System Platform IO config, Ignition OPC UA connections, ScadaBridge templates. Walk output: per-site list of production lines with their `name` (kebab-case), `displayName`, and the equipment instances belonging to each line (with stable UUIDs — assigned during the walk, not derived from existing identifiers).
2. **Confirm Warsaw North production-vs-non-production breakdown** — the lettered buildings are all in `warsaw-north.json` pending verification of which are actually production. The walk should resolve this; non-production buildings should be removed from the Areas list once identified.
3. **Resolve remaining [`QUESTIONS.md`](QUESTIONS.md)** — Q2Q4 (naming conventions) before authoring real line names, so the walk doesn't have to be redone.
4. **Move to a dedicated `schemas` repo** once one is created and an owner team is named. The temporary location under `3yearplan/schemas/` is documented in `../README.md`.
## Validation
Each file is validated against [`../format/uns-subtree.schema.json`](../format/uns-subtree.schema.json). Constraints:
- `enterprise` must equal `zb` across every file (matches `ServerCluster.Enterprise` in OtOpcUa).
- `site`, area `name`, and line `name` must match `^[a-z0-9-]{1,32}$` or be the literal `_default`.
- `_default` is reserved as the explicit "this level doesn't apply at this site" placeholder, per the goal-state design goal of uniform path depth.
## Worked examples
- [`example-warsaw-west.json`](example-warsaw-west.json) — original schema worked example contributed with the seed (uses placeholder bldg-3/bldg-4 — **superseded by the authoritative `warsaw-west.json`** for any actual consumer; kept here for documentation purposes only).