Updated goal-state.md UNS hierarchy table (level 1 example with rationale: matches existing ZB.MOM.WW.* namespace prefix, short by design for a segment that appears in every equipment path, operators already say "ZB" colloquially), all worked-example paths in text + OPC UA browse forms, small-site placeholder example. Removed enterprise-shortname from the §UNS-hierarchy TBD list.
Updated schemas/uns/example-warsaw-west.json `enterprise: "zb"`.
Updated corrections-doc D4 entry to RESOLVED with full propagation list, and updated summary table accordingly.
Production deployments use `zb` from cluster-create. The hardcoded `_default` reserved-segment rule is unchanged (still the placeholder for unused Area/Line levels at single-cluster sites).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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>
B1 resolved: ACL model designed and committed (decisions #129-132).
6-level scope hierarchy, NodePermissions bitmask, generation-versioned
NodeAcl table, Phase 1 ships before any driver phase. Updated goal-state
and roadmap.
B2 partially resolved: schemas repo seed exists at schemas/ (temporary).
FANUC CNC pilot class, JSON Schema format definitions, UNS subtree
example, docs. Still needs: owner team, dedicated repo, format ratification,
CI gate, consumer integration plumbing.
C5 resolved: consumer cutover OUT of OtOpcUa v2 scope (decision #136).
Integration/operations team owns cutover, not yet named. Plan updated
to explicitly assign ownership outside OtOpcUa.
CLAUDE.md updated with schemas/ in the file index.
The OtOpcUa v2 implementation team committed all 8 core drivers from
internal knowledge of the estate, making the formal protocol survey
unnecessary for driver scoping. Removed current-state/equipment-protocol-
survey.md and cleaned up all references across 7 files.
The UNS hierarchy snapshot (per-site equipment-instance walk for site/area/
line/equipment assignments + UUIDs) is now a standalone Year 1 deliverable,
decoupled from protocol discovery. Tracked in status.md and goal-state.md
UNS naming hierarchy section.
Eliminates ~52 TBDs (all placeholder data in the pre-seeded survey rows).
- EquipmentId is now system-generated ('EQ-' + 12 hex from UUID), never
operator-supplied — eliminates duplicate-identity corruption from typos
and bulk-import renames (lmxopcua decision #125)
- ZTag and SAPID fleet-wide uniqueness enforced via ExternalIdReservation
table outside generation versioning — rollback-safe (decision #124)
- Identifier table now shows who-sets-it column (3 operator, 2 system)
- Note added: ExternalIdReservation pattern is a precedent for non-versioned
cross-generation invariants; check for similar hazard when scoping ACLs