Files
3yearplan/schemas/uns/README.md
Joseph Doherty ebc76e9315 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.
2026-04-30 10:54:49 -04:00

40 lines
4.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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).