Stop versioning DI and ISA95 packages as preview (#4686)

## Summary
Removes the **DI** (`Opc.Ua.Di*`) and **ISA95** (`Opc.Ua.ISA95*`)
package families from the preview-only set, so they ship with the stable
root version (e.g. `2.0.1` instead of `2.0.1-preview.N`).

- `version.targets`: drop the two `_IsPreviewPackage` conditions.
- `.azurepipelines/package-version-policy.ps1`: drop `ISA95|Di` from
`Test-PreviewPackageId`. It must match `version.targets`, because the
package-set validator fails if the two disagree.
- `PackageVersionPolicyTests`: ISA95/Di IDs are now expected to be
non-preview, they are removed from the classifier-agreement token list,
and the "already-preview base version" case now uses Robotics.
- Docs (`DeveloperGuide.md`, `ReleaseProcess.md`, `docs/README.md`): the
preview-family list no longer includes DI or ISA95, and the "preview
package" label is removed from the DI, Software Update (part of the DI
packages), and ISA-95 entries.

## Test
`dotnet test tests/Opc.Ua.Tools.Tests --filter PackageVersionPolicy`
(net10.0): 87/87 passed.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
romanett
2026-10-06 21:37:20 +02:00
committed by GitHub
parent 5572107ab8
commit fa06c66dbb
6 changed files with 10 additions and 14 deletions
+1 -1
View File
@@ -2,7 +2,7 @@ function Test-PreviewPackageId {
param([Parameter(Mandatory)][string]$PackageId)
$baseId = $PackageId -replace '\.Debug$', ''
return $baseId -match '^OPCFoundation\.NetStandard\.Opc\.Ua\.(XRegistry|WotCon|Vision|Robotics|Redundancy|Positioning|OpenUsd|ISA95|AI|Di)(\.|$)' -or
return $baseId -match '^OPCFoundation\.NetStandard\.Opc\.Ua\.(XRegistry|WotCon|Vision|Robotics|Redundancy|Positioning|OpenUsd|AI)(\.|$)' -or
$baseId -in @(
'OPCFoundation.NetStandard.Opc.Ua.Mcp.Robotics',
'OPCFoundation.NetStandard.Opc.Ua.Mcp.Vision',
+1 -1
View File
@@ -380,7 +380,7 @@ From **2.0** onward, package versions are produced by [Nerdbank.GitVersioning](h
Stable (public-release) versions are produced **only** from a canonical `release/<major>.<minor>` branch (e.g. `release/2.0`, `release/2.1`) — never from `master`, a tag, or any other branch — and only at the exact commit whose `version.json` carries the plain `<major>.<minor>.<patch>` version with no prerelease label (e.g. `2.0.0`). Patch numbers increase by exactly one per release on their line (`2.0.0` → `2.0.1` → `2.0.2`); a new minor line resets the patch to zero (`2.1.0`). See **[Release process](ReleaseProcess.md)** for the full branch/version model and the step-by-step procedure for cutting a release, shipping a patch or minor version, backporting a fix, and promoting a stable candidate.
The XRegistry, WoT Connectivity, Vision, Robotics, Redundancy, Positioning,
OpenUSD, ISA95, AI, and DI package families remain preview packages even when
OpenUSD, and AI package families remain preview packages even when
the root version is stable. Their numeric version follows the root version:
for example, a stable `2.0.0` root produces `2.0.0-preview.N` for these
families (`N` a committed, manually curated number in `preview-version.props`
+3 -3
View File
@@ -165,16 +165,16 @@ explains how they relate to the base model. These libraries assume the server
path and, for typed client access, the client path. The packages load the
models that each model depends on.
- [Device Integration](DeviceIntegration.md) (OPC 10000-100; preview package) —
- [Device Integration](DeviceIntegration.md) (OPC 10000-100) —
devices, topology, and locking.
- [Asset Management Basics](AMB.md) (OPC 10000-110; preview
package) — make devices, machines, pumps or scales manageable assets:
discovery, identification, health alarms, maintenance, documentation links
and locations. Read Device Integration first.
- [Software update](SoftwareUpdate.md) (OPC 10000-100; preview package) —
- [Software update](SoftwareUpdate.md) (OPC 10000-100) —
software package storage, installation, and confirmation. Read Device
Integration first.
- [ISA-95](ISA95.md) (OPC 10030 and OPC 10031-4; preview package) — the common
- [ISA-95](ISA95.md) (OPC 10030 and OPC 10031-4) — the common
model and job control.
- [Positioning](Positioning.md) (OPC 10000-210 and OPC 10000-211; preview
package) — relative frames and geographic positions.
+2 -2
View File
@@ -37,7 +37,7 @@ without any other context.
[Versioning](DeveloperGuide.md#versioning)). Every package in the solution
shares the same root version except the **preview-only families**.
- **Preview-only families** - the XRegistry, WoT Connectivity, Vision,
Robotics, Redundancy, Positioning, OpenUSD, ISA95, AI, and DI package
Robotics, Redundancy, Positioning, OpenUSD, and AI package
families, the Robotics/Vision MCP extensions, and the OpenUSD connector
tools. `version.targets` keeps these on a `-preview.N` suffix even when the
root version is an exact stable release. The full, single source of truth
@@ -116,7 +116,7 @@ Every procedure below starts here.
ConvertFrom-Json | ForEach-Object name
```
Repeat for a representative sample of the preview-only families (at
minimum XRegistry, DI, and one MCP/connector package); they are versioned
minimum XRegistry, Robotics, and one MCP/connector package); they are versioned
together but published independently, so check more than one. If any
published number is greater than or equal to the committed
`PreviewPackageBuildNumber`, raise it (in the same PR that changes the
@@ -71,9 +71,9 @@ namespace Opc.Ua.Tools.Tests
("OPCFoundation.NetStandard.Opc.Ua.Redundancy.Kubernetes", true),
("OPCFoundation.NetStandard.Opc.Ua.Positioning.Client", true),
("OPCFoundation.NetStandard.Opc.Ua.OpenUsd.Server", true),
("OPCFoundation.NetStandard.Opc.Ua.ISA95.Client", true),
("OPCFoundation.NetStandard.Opc.Ua.ISA95.Client", false),
("OPCFoundation.NetStandard.Opc.Ua.AI.Inference", true),
("OPCFoundation.NetStandard.Opc.Ua.Di.Server", true),
("OPCFoundation.NetStandard.Opc.Ua.Di.Server", false),
("OPCFoundation.NetStandard.Opc.Ua.Mcp.Robotics", true),
("OPCFoundation.NetStandard.Opc.Ua.Mcp.Vision", true),
("OPCFoundation.NetStandard.Opc.Ua.OpenUsd.Connector", true),
@@ -180,7 +180,7 @@ namespace Opc.Ua.Tools.Tests
@{
preview = (Get-ExpectedPackageVersion -PackageId 'OPCFoundation.NetStandard.Opc.Ua.XRegistry' -BaseVersion '2.0.0')
core = (Get-ExpectedPackageVersion -PackageId 'OPCFoundation.NetStandard.Opc.Ua.Core' -BaseVersion '2.0.0')
previewDev = (Get-ExpectedPackageVersion -PackageId 'OPCFoundation.NetStandard.Opc.Ua.Di' -BaseVersion '2.0.0-preview.9')
previewDev = (Get-ExpectedPackageVersion -PackageId 'OPCFoundation.NetStandard.Opc.Ua.Robotics' -BaseVersion '2.0.0-preview.9')
coreDev = (Get-ExpectedPackageVersion -PackageId 'OPCFoundation.NetStandard.Opc.Ua.Core' -BaseVersion '2.0.0-preview.9')
} | ConvertTo-Json
""").ConfigureAwait(false);
@@ -465,9 +465,7 @@ namespace Opc.Ua.Tools.Tests
"Opc.Ua.Redundancy",
"Opc.Ua.Positioning",
"Opc.Ua.OpenUsd",
"Opc.Ua.ISA95",
"Opc.Ua.AI",
"Opc.Ua.Di",
"Opc.Ua.Mcp.Robotics",
"Opc.Ua.Mcp.Vision",
"Opc.Ua.OpenUsd.Connector",
-2
View File
@@ -17,9 +17,7 @@
<_IsPreviewPackage Condition="'$(_PreviewPackageBaseId)' == '$(PackagePrefix).Opc.Ua.Redundancy' OR $([System.String]::Copy('$(_PreviewPackageBaseId)').StartsWith('$(PackagePrefix).Opc.Ua.Redundancy.'))">true</_IsPreviewPackage>
<_IsPreviewPackage Condition="'$(_PreviewPackageBaseId)' == '$(PackagePrefix).Opc.Ua.Positioning' OR $([System.String]::Copy('$(_PreviewPackageBaseId)').StartsWith('$(PackagePrefix).Opc.Ua.Positioning.'))">true</_IsPreviewPackage>
<_IsPreviewPackage Condition="'$(_PreviewPackageBaseId)' == '$(PackagePrefix).Opc.Ua.OpenUsd' OR $([System.String]::Copy('$(_PreviewPackageBaseId)').StartsWith('$(PackagePrefix).Opc.Ua.OpenUsd.'))">true</_IsPreviewPackage>
<_IsPreviewPackage Condition="'$(_PreviewPackageBaseId)' == '$(PackagePrefix).Opc.Ua.ISA95' OR $([System.String]::Copy('$(_PreviewPackageBaseId)').StartsWith('$(PackagePrefix).Opc.Ua.ISA95.'))">true</_IsPreviewPackage>
<_IsPreviewPackage Condition="'$(_PreviewPackageBaseId)' == '$(PackagePrefix).Opc.Ua.AI' OR $([System.String]::Copy('$(_PreviewPackageBaseId)').StartsWith('$(PackagePrefix).Opc.Ua.AI.'))">true</_IsPreviewPackage>
<_IsPreviewPackage Condition="'$(_PreviewPackageBaseId)' == '$(PackagePrefix).Opc.Ua.Di' OR $([System.String]::Copy('$(_PreviewPackageBaseId)').StartsWith('$(PackagePrefix).Opc.Ua.Di.'))">true</_IsPreviewPackage>
<_IsPreviewPackage Condition="'$(_PreviewPackageBaseId)' == '$(PackagePrefix).Opc.Ua.Mcp.Robotics' OR '$(_PreviewPackageBaseId)' == '$(PackagePrefix).Opc.Ua.Mcp.Vision' OR '$(_PreviewPackageBaseId)' == '$(PackagePrefix).Opc.Ua.OpenUsd.Connector' OR '$(_PreviewPackageBaseId)' == '$(PackagePrefix).Opc.Ua.OpenUsd.Connector.Viewer'">true</_IsPreviewPackage>
<!--
On a canonical release/M.m branch build (NBGV_PublicRelease == 'True'),