TypeSpec Assessment

7 TypeSpec changes for NetworkCloud.Management

TypeSpec source diff: 86ed062246b8e1939872eb283c4ee164cd9442f0 → 117f3e002839ec70ce585b42f262d5f8ad23b4eb

Preview NoticeThe TypeSpec Assessment Assistant is in preview; official validation and review remain the source of truth.

The TypeSpec Assessment Assistant is currently in preview. Its goal is to help service developers build confidence earlier in the TypeSpec authoring workflow by providing contextual analysis, risk identification, and guidance on potential downstream impacts.

This report is intended as a review reference and learning aid only. It does not replace official ARM API, Azure API Stewardship, Azure Breaking Change reviews, and should not be treated as authoritative review feedback or approval for specification changes. Official validation tools, generated artifacts, and reviewer feedback remain the source of truth for merge and release decisions.

Downstream breaking changes

Method impact and affected intents at a glance; expand for before/after evidence.

Clusters.updateThe method uses changed SDK types; its top-level signature need not change.
Indirect type change

Recorded normalized SDK method: Microsoft.NetworkCloud.Clusters.update

ClusterPatchProperties

Microsoft.NetworkCloud.ClusterPatchProperties

Representative method paths from recorded graph edges:

Input / bodyclusterUpdateParameters.propertiestarget evidence
Contract areaBeforeAfter
SDK type contractClusterPatchProperties
Microsoft.NetworkCloud.ClusterPatchProperties preserves its existing language-neutral generated SDK contract.
Microsoft.NetworkCloud.ClusterPatchProperties.aggregatorOrSingleRackDefinition changed type, optionality, flattening, or access.
SDK type contractClusterPatchProperties
Microsoft.NetworkCloud.ClusterPatchProperties preserves its existing language-neutral generated SDK contract.
Microsoft.NetworkCloud.ClusterPatchProperties.clusterServicePrincipal changed type, optionality, flattening, or access.
SDK type contractClusterPatchProperties
Microsoft.NetworkCloud.ClusterPatchProperties preserves its existing language-neutral generated SDK contract.
Microsoft.NetworkCloud.ClusterPatchProperties.runtimeProtectionConfiguration changed type, optionality, flattening, or access.
SDK type contractClusterPatchProperties
Microsoft.NetworkCloud.ClusterPatchProperties preserves its existing language-neutral generated SDK contract.
Microsoft.NetworkCloud.ClusterPatchProperties.computeRackDefinitions changed type, optionality, flattening, or access.
SDK type contractClusterPatchProperties
Microsoft.NetworkCloud.ClusterPatchProperties preserves its existing language-neutral generated SDK contract.
Microsoft.NetworkCloud.ClusterPatchProperties.updateStrategy changed type, optionality, flattening, or access.
SDK type contractClusterPatchProperties
Microsoft.NetworkCloud.ClusterPatchProperties preserves its existing language-neutral generated SDK contract.
Microsoft.NetworkCloud.ClusterPatchProperties.secretArchive changed type, optionality, flattening, or access.
SDK type contractClusterPatchProperties
Microsoft.NetworkCloud.ClusterPatchProperties preserves its existing language-neutral generated SDK contract.
Microsoft.NetworkCloud.ClusterPatchProperties.computeDeploymentThreshold changed type, optionality, flattening, or access.
Why this is breaking:
  • ClusterPatchProperties.aggregatorOrSingleRackDefinition changes from RackDefinition to RackDefinitionPatch. Existing Clusters.update callers supplying RackDefinition must construct a different public SDK type.
  • ClusterPatchProperties.clusterServicePrincipal changes from ServicePrincipalInformation to ServicePrincipalInformationPatch. Existing Clusters.update callers must migrate to the new public input type.
  • ClusterPatchProperties.runtimeProtectionConfiguration changes from RuntimeProtectionConfiguration to RuntimeProtectionConfigurationPatch. Existing Clusters.update callers must replace the SDK model they supply.
  • ClusterPatchProperties.computeRackDefinitions changes from RackDefinition[] to RackDefinitionPatch[]. Existing Clusters.update callers must rebuild the collection with a different public SDK element type.
  • ClusterPatchProperties.updateStrategy changes from ClusterUpdateStrategy to ClusterUpdateStrategyPatch. Existing Clusters.update callers must migrate their public SDK input model.
  • ClusterPatchProperties.secretArchive changes from ClusterSecretArchive to ClusterSecretArchivePatch. Existing Clusters.update callers passing the former public model must migrate.
  • ClusterPatchProperties.computeDeploymentThreshold changes from ValidationThreshold to ValidationThresholdPatch. Existing Clusters.update callers must construct the replacement SDK type.

Language-neutral TCGC evidence is shown; generated language signatures are not fabricated.

Consoles.updateThe method uses changed SDK types; its top-level signature need not change.
Indirect type change

Recorded normalized SDK method: Microsoft.NetworkCloud.Consoles.update

ConsolePatchProperties

Microsoft.NetworkCloud.ConsolePatchProperties

Representative method paths from recorded graph edges:

Input / bodyconsoleUpdateParameters.propertiestarget evidence
Contract areaBeforeAfter
SDK type contractConsolePatchProperties
Microsoft.NetworkCloud.ConsolePatchProperties preserves its existing language-neutral generated SDK contract.
Microsoft.NetworkCloud.ConsolePatchProperties.sshPublicKey changed type, optionality, flattening, or access.
Why this is breaking: ConsolePatchProperties.sshPublicKey changes from SshPublicKey to SshPublicKeyPatch. Existing Consoles.update callers passing the former SDK model no longer match the public input contract.

Language-neutral TCGC evidence is shown; generated language signatures are not fabricated.

VirtualMachines.updateThe method uses changed SDK types; its top-level signature need not change.
Indirect type change

Recorded normalized SDK method: Microsoft.NetworkCloud.VirtualMachines.update

VirtualMachinePatchProperties

Microsoft.NetworkCloud.VirtualMachinePatchProperties

Representative method paths from recorded graph edges:

Input / bodyvirtualMachineUpdateParameters.propertiestarget evidence
Contract areaBeforeAfter
SDK type contractVirtualMachinePatchProperties
Microsoft.NetworkCloud.VirtualMachinePatchProperties preserves its existing language-neutral generated SDK contract.
Microsoft.NetworkCloud.VirtualMachinePatchProperties.vmImageRepositoryCredentials changed type, optionality, flattening, or access.
Why this is breaking: VirtualMachinePatchProperties.vmImageRepositoryCredentials changes from ImageRepositoryCredentials to ImageRepositoryCredentialsPatch. Existing VirtualMachines.update callers must migrate to the new public input model.

Language-neutral TCGC evidence is shown; generated language signatures are not fabricated.

Semantic intents

Impact links are visible at a glance; expand for changed TypeSpec source, followed by affected operations.

Introduce dedicated cluster patch modelsChanges seven optional properties in ClusterPatchProperties from full resource configuration models to dedicated patch models for Clusters_Update while preserving their serialized wire shapes through 2026-07-01 versioning.
modify
Changed TypeSpec source (1)
specification/networkcloud/NetworkCloud.Management/clusters/Cluster_models.tsp
   waitTimeMinutes?: int64 = 15;
 }
 
+/**
+ * RackDefinitionPatch represents details regarding the rack for patch operations.
+ */
+@added(Versions.v2026_07_01)
+model RackDefinitionPatch {
+  /**
+   * The zone name used for this rack when created. Availability zones are used for workload placement.
+   */
+  @pattern("^[a-zA-Z0-9]{1,10}$")
+  availabilityZone?: string;
+
+  /**
+   * The unordered list of bare metal machine configuration.
+   */
+  @identifiers(#[])
+  bareMetalMachineConfigurationData?: BareMetalMachineConfigurationDataPatch[];
+
+  /**
+   * The resource ID of the network rack that matches this rack definition.
+   */
+  networkRackId?: Azure.Core.armResourceIdentifier;
+
+  /**
+   * The free-form description of the rack's location.
+   */
+  @maxLength(256)
+  rackLocation?: string;
+
+  /**
+   * The unique identifier for the rack within Network Cloud cluster. An alternate unique alphanumeric value other than a serial number may be provided if desired.
+   */
+  @maxLength(64)
+  @minLength(1)
+  rackSerialNumber?: string;
+
+  /**
+   * The resource ID of the sku for the rack being added.
+   */
+  rackSkuId?: Azure.Core.armResourceIdentifier<[
+    {
+      type: "Microsoft.NetworkCloud/rackSkus";
+    }
+  ]>;
+
+  /**
+   * The list of storage appliance configuration data for this rack.
+   */
+  @identifiers(#[])
+  storageApplianceConfigurationData?: StorageApplianceConfigurationDataPatch[];
+}
+
+/**
+ * BareMetalMachineConfigurationDataPatch represents configuration for the bare metal machine for patch operations.
+ */
+@added(Versions.v2026_07_01)
+model BareMetalMachineConfigurationDataPatch {
+  /**
+   * The connection string for the baseboard management controller including IP address and protocol.
+   */
+  @visibility(Lifecycle.Read)
+  bmcConnectionString?: string;
+
+  /**
+   * The credentials of the baseboard management controller on this bare metal machine. The password field is expected to be an Azure Key Vault key URL. Until the cluster is converted to utilize managed identity by setting the secret archive settings, the actual password value should be provided instead.
+   */
+  bmcCredentials?: AdministrativeCredentialsPatch;
+
+  /**
+   * The MAC address of the BMC for this machine.
+   */
+  @pattern("^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$")
+  bmcMacAddress?: string;
+
+  /**
+   * The MAC address associated with the PXE NIC card.
+   */
+  @pattern("^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$")
+  bootMacAddress?: string;
+
+  /**
+   * The free-form additional information about the machine, e.g. an asset tag.
+   */
+  @maxLength(256)
+  machineDetails?: string;
+
+  /**
+   * The user-provided name for the bare metal machine created from this specification. If not provided, the machine name will be generated programmatically.
+   */
+  @pattern("^([a-zA-Z0-9][a-zA-Z0-9]{0,62}[a-zA-Z0-9])$")
+  machineName?: string;
+
+  /**
+   * The slot the physical machine is in the rack based on the BOM configuration.
+   */
+  @maxValue(256)
+  @minValue(1)
+  rackSlot?: int64;
+
+  /**
+   * The serial number of the machine. Hardware suppliers may use an alternate value. For example, service tag.
+   */
+  @maxLength(64)
+  serialNumber?: string;
+}
+
+/**
+ * StorageApplianceConfigurationDataPatch represents configuration for the storage application for patch operations.
+ */
+@added(Versions.v2026_07_01)
+model StorageApplianceConfigurationDataPatch {
+  /**
+   * The credentials of the administrative interface on this storage appliance. The password field is expected to be an Azure Key Vault key URL. Until the cluster is converted to utilize managed identity by setting the secret archive settings, the actual password value should be provided instead.
+   */
+  adminCredentials?: AdministrativeCredentialsPatch;
+
+  /**
+   * The slot that storage appliance is in the rack based on the BOM configuration.
+   */
+  @maxValue(256)
+  @minValue(1)
+  rackSlot?: int64;
+
+  /**
+   * The serial number of the appliance.
+   */
+  serialNumber?: string;
+
+  /**
+   * The user-provided name for the storage appliance that will be created from this specification.
+   */
+  @pattern("^([a-zA-Z0-9][a-zA-Z0-9-_]{0,28}[a-zA-Z0-9])$")
+  storageApplianceName?: string;
+}
+
+/**
+ * ServicePrincipalInformationPatch represents the details of the service principal to be used by the cluster during Arc Appliance installation for patch operations.
+ */
+@added(Versions.v2026_07_01)
+model ServicePrincipalInformationPatch {
+  /**
+   * The application ID, also known as client ID, of the service principal.
+   */
+  applicationId?: string;
+
+  /**
+   * The password of the service principal.
+   */
+  @secret
+  password?: string;
+
+  /**
+   * The principal ID, also known as the object ID, of the service principal.
+   */
+  principalId?: string;
+
+  /**
+   * The tenant ID, also known as the directory ID, of the tenant in which the service principal is created.
+   */
+  tenantId?: string;
+}
+
+/**
+ * ValidationThresholdPatch indicates allowed machine and node hardware and deployment failures for patch operations.
+ */
+@added(Versions.v2026_07_01)
+model ValidationThresholdPatch {
+  /**
+   * Selection of how the type evaluation is applied to the cluster calculation.
+   */
+  grouping?: ValidationThresholdGrouping;
+
+  /**
+   * Selection of how the threshold should be evaluated.
+   */
+  type?: ValidationThresholdType;
+
+  /**
+   * The numeric threshold value.
+   */
+  @minValue(0)
+  value?: int64;
+}
+
+/**
+ * RuntimeProtectionConfigurationPatch represents the runtime protection configuration for the cluster for patch operations.
+ */
+@added(Versions.v2026_07_01)
+model RuntimeProtectionConfigurationPatch {
+  /**
+   * The definition update mode for runtime protection.
+   */
+  definitionUpdateMode?: RuntimeProtectionDefinitionUpdateMode;
+
+  /**
+   * The mode of operation for runtime protection.
+   */
+  enforcementLevel?: RuntimeProtectionEnforcementLevel;
+}
+
+/**
+ * ClusterSecretArchivePatch configures the key vault to archive the secrets of the cluster for later retrieval for patch operations.
+ */
+@added(Versions.v2026_07_01)
+model ClusterSecretArchivePatch {
+  /**
+   * The resource ID of the key vault to archive the secrets of the cluster.
+   */
+  keyVaultId?: Azure.Core.armResourceIdentifier<[
+    {
+      type: "Microsoft.KeyVault/vaults";
+    }
+  ]>;
+
+  /**
+   * The indicator if the specified key vault should be used to archive the secrets of the cluster.
+   */
+  useKeyVault?: ClusterSecretArchiveEnabled;
+}
+
+/**
+ * ClusterUpdateStrategyPatch represents the strategy for updating the cluster for patch operations.
+ */
+@added(Versions.v2026_07_01)
+model ClusterUpdateStrategyPatch {
+  /**
+   * The maximum number of worker nodes that can be offline within the increment of update, e.g., rack-by-rack. Limited by the maximum number of machines in the increment. Defaults to the whole increment size.
+   */
+  @minValue(1)
+  maxUnavailable?: int64;
+
+  /**
+   * The mode of operation for runtime protection.
+   */
+  strategyType?: ClusterUpdateStrategyType;
+
+  /**
+   * Selection of how the threshold should be evaluated.
+   */
+  thresholdType?: ValidationThresholdType;
+
+  /**
+   * The numeric threshold value.
+   */
+  @minValue(0)
+  thresholdValue?: int64;
+
+  /**
+   * The time to wait between the increments of update defined by the strategy.
+   */
+  @minValue(0)
+  @maxValue(60)
+  waitTimeMinutes?: int64;
+}
+
 /**
  * VulnerabilityScanningSettings represents the settings for how security vulnerability scanning is applied to the cluster.
  */
specification/networkcloud/NetworkCloud.Management/clusters/Cluster_models.tsp
   /**
    * The rack definition that is intended to reflect only a single rack in a single rack cluster, or an aggregator rack in a multi-rack cluster.
    */
-  aggregatorOrSingleRackDefinition?: RackDefinition;
+  @typeChangedFrom(Versions.v2026_07_01, RackDefinition)
+  aggregatorOrSingleRackDefinition?: RackDefinitionPatch;
 
   /**
    * The settings for the log analytics workspace used for output of logs from this cluster.
specification/networkcloud/NetworkCloud.Management/clusters/Cluster_models.tsp
   /**
    * Field Deprecated: Use managed identity to provide cluster privileges. The service principal to be used by the cluster during Arc Appliance installation.
    */
-  clusterServicePrincipal?: ServicePrincipalInformation;
+  @typeChangedFrom(Versions.v2026_07_01, ServicePrincipalInformation)
+  clusterServicePrincipal?: ServicePrincipalInformationPatch;
 
   /**
    * The settings for commands run in this cluster, such as bare metal machine run read only commands and data extracts.
specification/networkcloud/NetworkCloud.Management/clusters/Cluster_models.tsp
   /**
    * The validation threshold indicating the allowable failures of compute machines during environment validation and deployment.
    */
-  computeDeploymentThreshold?: ValidationThreshold;
+  @typeChangedFrom(Versions.v2026_07_01, ValidationThreshold)
+  computeDeploymentThreshold?: ValidationThresholdPatch;
 
   /**
    * The list of rack definitions for the compute racks in a multi-rack cluster, or an empty list in a single-rack cluster.
    */
   @identifiers(#["networkRackId"])
-  computeRackDefinitions?: RackDefinition[];
+  @typeChangedFrom(Versions.v2026_07_01, RackDefinition[])
+  computeRackDefinitions?: RackDefinitionPatch[];
 
   /**
    * The settings for cluster runtime protection.
    */
-  runtimeProtectionConfiguration?: RuntimeProtectionConfiguration;
+  @typeChangedFrom(Versions.v2026_07_01, RuntimeProtectionConfiguration)
+  runtimeProtectionConfiguration?: RuntimeProtectionConfigurationPatch;
 
   /**
    * The configuration for use of a key vault to store secrets for later retrieval by the operator.
    */
-  secretArchive?: ClusterSecretArchive;
+  @typeChangedFrom(Versions.v2026_07_01, ClusterSecretArchive)
+  secretArchive?: ClusterSecretArchivePatch;
 
   /**
    * The settings for the secret archive used to hold credentials for the cluster.
specification/networkcloud/NetworkCloud.Management/clusters/Cluster_models.tsp
   /**
    * The strategy for updating the cluster.
    */
-  updateStrategy?: ClusterUpdateStrategy;
+  @typeChangedFrom(Versions.v2026_07_01, ClusterUpdateStrategy)
+  updateStrategy?: ClusterUpdateStrategyPatch;
 
   /**
    * The settings for how security vulnerability scanning is applied to the cluster.

specification/networkcloud/NetworkCloud.Management/clusters/Cluster_models.tsp:1069

Affected operations (1)
Clusters_UpdatePATCH/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NetworkCloud/clusters/{clusterName}2026-07-01
Contract areaBeforeAfter
Request body propertyproperties.aggregatorOrSingleRackDefinition
RackDefinition
RackDefinitionPatch
Request body propertyproperties.clusterServicePrincipal
ServicePrincipalInformation
ServicePrincipalInformationPatch
Request body propertyproperties.computeDeploymentThreshold
ValidationThreshold
ValidationThresholdPatch
Request body propertyproperties.runtimeProtectionConfiguration
RuntimeProtectionConfiguration
RuntimeProtectionConfigurationPatch
Request body propertyproperties.secretArchive
ClusterSecretArchive
ClusterSecretArchivePatch
Request body propertyproperties.updateStrategy
ClusterUpdateStrategy
ClusterUpdateStrategyPatch
Response body property200 · kind
not present
DeploymentType (optional)
Response body property200 · properties.lastSuccessfulVersionUpdateTime
not present
string date-time (optional)
Response body property200 · properties.managedCredentials
not present
array (optional)

REST contract changed: request, responses.

Use a patch-specific console SSH keyChanges ConsolePatchProperties.sshPublicKey from SshPublicKey to SshPublicKeyPatch for Consoles_Update, versioned at 2026-07-01 without changing the REST property name.
modify
Changed TypeSpec source (1)
specification/networkcloud/NetworkCloud.Management/virtualmachines/Console_models.tsp
 import "@azure-tools/typespec-azure-resource-manager";
 
 using Azure.ResourceManager;
+using TypeSpec.Versioning;
 
 namespace Microsoft.NetworkCloud;
 
specification/networkcloud/NetworkCloud.Management/virtualmachines/Console_models.tsp
   /**
    * The SSH public key that will be provisioned for user access. The user is expected to have the corresponding SSH private key for logging in.
    */
-  sshPublicKey?: SshPublicKey;
+  @typeChangedFrom(Versions.v2026_07_01, SshPublicKey)
+  sshPublicKey?: SshPublicKeyPatch;
 }

specification/networkcloud/NetworkCloud.Management/virtualmachines/Console_models.tsp:164

Affected operations (1)
Consoles_UpdatePATCH/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NetworkCloud/virtualMachines/{virtualMachineName}/consoles/{consoleName}2026-07-01
Contract areaBeforeAfter
Request body propertyproperties.sshPublicKey
SshPublicKey
SshPublicKeyPatch

REST contract changed: request.

Publish a new API versionCarries 95 existing operations into the new API version. This publication intent is reported deterministically and is not used for inference, guideline findings, or breaking-change relationships.
modify
Changed TypeSpec source (2)
specification/networkcloud/NetworkCloud.Management/main.tsp
   /**
    * The 2026-05-01-preview API version.
    */
-  @Azure.Core.previewVersion
   @armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v6)
   v2026_05_01_preview: "2026-05-01-preview",
+
+  /**
+   * The 2026-07-01 API version.
+   */
+  @armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v6)
+  v2026_07_01: "2026-07-01",
 }
 
 interface Operations extends Azure.ResourceManager.Operations {}
specification/networkcloud/NetworkCloud.Management/common/models.tsp
 import "@azure-tools/typespec-azure-resource-manager";
 
 using Azure.ResourceManager;
+using TypeSpec.Versioning;
 
 namespace Microsoft.NetworkCloud;
 
specification/networkcloud/NetworkCloud.Management/common/models.tsp
   username: string;
 }
 
+/**
+ * AdministrativeCredentialsPatch represents the admin credentials for the device requiring password-based authentication.
+ */
+@added(Versions.v2026_07_01)
+model AdministrativeCredentialsPatch {
+  /**
+   * The password of the administrator of the device used during initialization.
+   */
+  @minLength(1)
+  @secret
+  password?: string;
+
+  /**
+   * The username of the administrator of the device used during initialization.
+   */
+  @minLength(1)
+  username?: string;
+}
+
 /**
  * CertificateInfo represents the non-private information of an X.509 Certificate.
  */
specification/networkcloud/NetworkCloud.Management/common/models.tsp
   keyData: string;
 }
 
+/**
+ * SshPublicKeyPatch represents the public key used to authenticate with a resource through SSH.
+ */
+@added(Versions.v2026_07_01)
+model SshPublicKeyPatch {
+  /**
+   * The SSH public key data.
+   */
+  @minLength(1)
+  keyData?: string;
+}
+
 /**
  * NetworkAttachment represents the single network attachment.
  */

specification/networkcloud/NetworkCloud.Management/main.tsp:51, specification/networkcloud/NetworkCloud.Management/common/models.tsp:321

Affected operations (95)

Showing 10 operation cards; the remaining 85 are listed below.

AgentPools_CreateOrUpdatePUT/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NetworkCloud/kubernetesClusters/{kubernetesClusterName}/agentPools/{agentPoolName}2026-07-01

HTTP signature and represented payload contract unchanged.

AgentPools_DeleteDELETE/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NetworkCloud/kubernetesClusters/{kubernetesClusterName}/agentPools/{agentPoolName}2026-07-01

HTTP signature and represented payload contract unchanged.

AgentPools_ListByKubernetesClusterGET/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NetworkCloud/kubernetesClusters/{kubernetesClusterName}/agentPools2026-07-01

HTTP signature and represented payload contract unchanged.

AgentPools_UpdatePATCH/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NetworkCloud/kubernetesClusters/{kubernetesClusterName}/agentPools/{agentPoolName}2026-07-01

HTTP signature and represented payload contract unchanged.

BareMetalMachineKeySets_CreateOrUpdatePUT/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NetworkCloud/clusters/{clusterName}/bareMetalMachineKeySets/{bareMetalMachineKeySetName}2026-07-01

HTTP signature and represented payload contract unchanged.

BareMetalMachineKeySets_DeleteDELETE/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NetworkCloud/clusters/{clusterName}/bareMetalMachineKeySets/{bareMetalMachineKeySetName}2026-07-01

HTTP signature and represented payload contract unchanged.

BareMetalMachineKeySets_ListByClusterGET/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NetworkCloud/clusters/{clusterName}/bareMetalMachineKeySets2026-07-01

HTTP signature and represented payload contract unchanged.

BareMetalMachineKeySets_UpdatePATCH/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NetworkCloud/clusters/{clusterName}/bareMetalMachineKeySets/{bareMetalMachineKeySetName}2026-07-01

HTTP signature and represented payload contract unchanged.

BareMetalMachines_CreateOrUpdatePUT/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NetworkCloud/bareMetalMachines/{bareMetalMachineName}2026-07-01
Contract areaBeforeAfter
Request body propertyproperties.bmcIpv4Address
not present
string (optional)
Request body propertyproperties.bmcIpv6Address
not present
string (optional)
Request body propertyproperties.monitoringConfigurationStatus
not present
BareMetalMachineMonitoringConfigurationStatus (optional)
Response body property200 · properties.bmcIpv4Address
not present
string (optional)
Response body property200 · properties.bmcIpv6Address
not present
string (optional)
Response body property200 · properties.monitoringConfigurationStatus
not present
BareMetalMachineMonitoringConfigurationStatus (optional)
Response body property201 · properties.bmcIpv4Address
not present
string (optional)
Response body property201 · properties.bmcIpv6Address
not present
string (optional)
Response body property201 · properties.monitoringConfigurationStatus
not present
BareMetalMachineMonitoringConfigurationStatus (optional)

REST contract changed: request, responses.

BareMetalMachines_DeleteDELETE/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NetworkCloud/bareMetalMachines/{bareMetalMachineName}2026-07-01

HTTP signature and represented payload contract unchanged.

Other affected operations (85)

BareMetalMachines_Get (GET, 2026-07-01); BareMetalMachines_ListByResourceGroup (GET, 2026-07-01); BareMetalMachines_ListBySubscription (GET, 2026-07-01); BareMetalMachines_Reimage (POST, 2026-07-01); BareMetalMachines_Update (PATCH, 2026-07-01); BmcKeySets_CreateOrUpdate (PUT, 2026-07-01); BmcKeySets_Delete (DELETE, 2026-07-01); BmcKeySets_ListByCluster (GET, 2026-07-01); BmcKeySets_Update (PATCH, 2026-07-01); CloudServicesNetworks_CreateOrUpdate (PUT, 2026-07-01); CloudServicesNetworks_Delete (DELETE, 2026-07-01); CloudServicesNetworks_Get (GET, 2026-07-01); CloudServicesNetworks_ListByResourceGroup (GET, 2026-07-01); CloudServicesNetworks_ListBySubscription (GET, 2026-07-01); CloudServicesNetworks_Update (PATCH, 2026-07-01); ClusterManagers_CreateOrUpdate (PUT, 2026-07-01); ClusterManagers_Delete (DELETE, 2026-07-01); ClusterManagers_Get (GET, 2026-07-01); ClusterManagers_ListByResourceGroup (GET, 2026-07-01); ClusterManagers_ListBySubscription (GET, 2026-07-01); ClusterManagers_Update (PATCH, 2026-07-01); Clusters_ContinueUpdateVersion (POST, 2026-07-01); Clusters_CreateOrUpdate (PUT, 2026-07-01); Clusters_Delete (DELETE, 2026-07-01); Clusters_Get (GET, 2026-07-01); Clusters_ListByResourceGroup (GET, 2026-07-01); Clusters_ListBySubscription (GET, 2026-07-01); Clusters_Update (PATCH, 2026-07-01); Clusters_UpdateVersion (POST, 2026-07-01); Consoles_CreateOrUpdate (PUT, 2026-07-01); Consoles_Delete (DELETE, 2026-07-01); Consoles_ListByVirtualMachine (GET, 2026-07-01); Consoles_Update (PATCH, 2026-07-01); KubernetesClusterFeatures_CreateOrUpdate (PUT, 2026-07-01); KubernetesClusterFeatures_Delete (DELETE, 2026-07-01); KubernetesClusterFeatures_ListByKubernetesCluster (GET, 2026-07-01); KubernetesClusterFeatures_Update (PATCH, 2026-07-01); KubernetesClusters_CreateOrUpdate (PUT, 2026-07-01); KubernetesClusters_Delete (DELETE, 2026-07-01); KubernetesClusters_ListByResourceGroup (GET, 2026-07-01); KubernetesClusters_ListBySubscription (GET, 2026-07-01); KubernetesClusters_Update (PATCH, 2026-07-01); L2Networks_CreateOrUpdate (PUT, 2026-07-01); L2Networks_Delete (DELETE, 2026-07-01); L2Networks_ListByResourceGroup (GET, 2026-07-01); L2Networks_ListBySubscription (GET, 2026-07-01); L2Networks_Update (PATCH, 2026-07-01); L3Networks_CreateOrUpdate (PUT, 2026-07-01); L3Networks_Delete (DELETE, 2026-07-01); L3Networks_ListByResourceGroup (GET, 2026-07-01); L3Networks_ListBySubscription (GET, 2026-07-01); L3Networks_Update (PATCH, 2026-07-01); MetricsConfigurations_CreateOrUpdate (PUT, 2026-07-01); MetricsConfigurations_Delete (DELETE, 2026-07-01); MetricsConfigurations_ListByCluster (GET, 2026-07-01); MetricsConfigurations_Update (PATCH, 2026-07-01); Racks_CreateOrUpdate (PUT, 2026-07-01); Racks_Delete (DELETE, 2026-07-01); Racks_ListByResourceGroup (GET, 2026-07-01); Racks_ListBySubscription (GET, 2026-07-01); Racks_Update (PATCH, 2026-07-01); RackSkus_Get (GET, 2026-07-01); RackSkus_ListBySubscription (GET, 2026-07-01); StorageAppliances_CreateOrUpdate (PUT, 2026-07-01); StorageAppliances_Delete (DELETE, 2026-07-01); StorageAppliances_Get (GET, 2026-07-01); StorageAppliances_ListByResourceGroup (GET, 2026-07-01); StorageAppliances_ListBySubscription (GET, 2026-07-01); StorageAppliances_Update (PATCH, 2026-07-01); TrunkedNetworks_CreateOrUpdate (PUT, 2026-07-01); TrunkedNetworks_Delete (DELETE, 2026-07-01); TrunkedNetworks_ListByResourceGroup (GET, 2026-07-01); TrunkedNetworks_ListBySubscription (GET, 2026-07-01); TrunkedNetworks_Update (PATCH, 2026-07-01); VirtualMachines_CreateOrUpdate (PUT, 2026-07-01); VirtualMachines_Delete (DELETE, 2026-07-01); VirtualMachines_ListByResourceGroup (GET, 2026-07-01); VirtualMachines_ListBySubscription (GET, 2026-07-01); VirtualMachines_Update (PATCH, 2026-07-01); Volumes_CreateOrUpdate (PUT, 2026-07-01); Volumes_Delete (DELETE, 2026-07-01); Volumes_Get (GET, 2026-07-01); Volumes_ListByResourceGroup (GET, 2026-07-01); Volumes_ListBySubscription (GET, 2026-07-01); Volumes_Update (PATCH, 2026-07-01).

Normalize storage appliance monitoring typesRenames storage appliance monitoring status unions at 2026-07-01 and aligns StorageApplianceSpec property ordering and descriptions without changing the StorageAppliances_CreateOrUpdate wire contract.
modify
Changed TypeSpec source (1)
specification/networkcloud/NetworkCloud.Management/storageappliances/StorageAppliance_models.tsp
  * The log level for the monitoring configuration status of the storage appliance.
  */
 @added(Versions.v2026_05_01_preview)
-union StorageApplianceMetricsConfigurationStatusLogLevel {
+@renamedFrom(
+  Versions.v2026_07_01,
+  "StorageApplianceMetricsConfigurationStatusLogLevel"
+)
+union StorageApplianceMonitoringConfigurationStatusLogLevel {
   string,
 
   /**
specification/networkcloud/NetworkCloud.Management/storageappliances/StorageAppliance_models.tsp
  * The metrics level for the monitoring configuration status of the storage appliance.
  */
 @added(Versions.v2026_05_01_preview)
-union StorageApplianceMetricsConfigurationStatusMetricsLevel {
+@renamedFrom(
+  Versions.v2026_07_01,
+  "StorageApplianceMetricsConfigurationStatusMetricsLevel"
+)
+union StorageApplianceMonitoringConfigurationStatusMetricsLevel {
   string,
 
   /**
specification/networkcloud/NetworkCloud.Management/storageappliances/StorageAppliance_models.tsp
  */
 model StorageApplianceSpec {
   /**
-   * The credentials of the administrative interface on this storage appliance.
+   * The resource ID of the rack where this storage appliance resides.
    */
   @visibility(Lifecycle.Read, Lifecycle.Create)
-  administratorCredentials: AdministrativeCredentials;
+  rackId: Azure.Core.armResourceIdentifier;
 
   /**
-   * The resource ID of the rack where this storage appliance resides.
+   * The SKU for the storage appliance.
    */
   @visibility(Lifecycle.Read, Lifecycle.Create)
-  rackId: Azure.Core.armResourceIdentifier;
+  storageApplianceSkuId: string;
 
   /**
    * The slot the storage appliance is in the rack based on the BOM configuration.
specification/networkcloud/NetworkCloud.Management/storageappliances/StorageAppliance_models.tsp
   serialNumber: string;
 
   /**
-   * The SKU for the storage appliance.
+   * The credentials of the administrative interface on this storage appliance.
    */
   @visibility(Lifecycle.Read, Lifecycle.Create)
-  storageApplianceSkuId: string;
+  administratorCredentials: AdministrativeCredentials;
 }
 
 /**
specification/networkcloud/NetworkCloud.Management/storageappliances/StorageAppliance_models.tsp
   /**
    * The log level for the monitoring configuration status of the storage appliance.
    */
-  logLevel?: StorageApplianceMetricsConfigurationStatusLogLevel;
+  logLevel?: StorageApplianceMonitoringConfigurationStatusLogLevel;
 
   /**
    * The metrics level for the monitoring configuration status of the storage appliance.
    */
-  metricsLevel?: StorageApplianceMetricsConfigurationStatusMetricsLevel;
+  metricsLevel?: StorageApplianceMonitoringConfigurationStatusMetricsLevel;
 }

specification/networkcloud/NetworkCloud.Management/storageappliances/StorageAppliance_models.tsp:109

Affected operations (1)
StorageAppliances_CreateOrUpdatePUT/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NetworkCloud/storageAppliances/{storageApplianceName}2026-07-01
Contract areaBeforeAfter
Request body propertyproperties.expansionShelves
not present
array (optional)
Request body propertyproperties.monitoringConfigurationStatus
not present
StorageApplianceMonitoringConfigurationStatus (optional)
Response body property200 · properties.expansionShelves
not present
array (optional)
Response body property200 · properties.monitoringConfigurationStatus
not present
StorageApplianceMonitoringConfigurationStatus (optional)
Response body property201 · properties.expansionShelves
not present
array (optional)
Response body property201 · properties.monitoringConfigurationStatus
not present
StorageApplianceMonitoringConfigurationStatus (optional)

REST contract changed: request, responses.

Align C# patch-model names and typesAdds C#-specific client names and alternate resource-identifier types for new patch models; these customizations do not alter REST operations or the language-neutral SDK contract.
modify
Changed TypeSpec source (1)
specification/networkcloud/NetworkCloud.Management/client.tsp
 using Azure.Core;
 using Microsoft.NetworkCloud;
 
-// --- go ---
 @@clientName(HugepagesSize.`1G`, "OneG", "go,javascript");
 @@clientName(HugepagesSize.`2M`, "TwoM", "go,javascript");
+
+// --- go ---
 @@alternateType(
   Azure.ResourceManager.Foundations.ExtendedLocation.type,
   string,
specification/networkcloud/NetworkCloud.Management/client.tsp
 @@clientName(AccessBridge, "NetworkCloudAccessBridge", "csharp");
 @@clientName(KubernetesVersion, "NetworkCloudKubernetesVersion", "csharp");
 @@clientName(DeploymentType, "NetworkCloudDeploymentType", "csharp");
+@@clientName(
+  BareMetalMachineConfigurationDataPatch,
+  "BareMetalMachineConfigurationPatch",
+  "csharp"
+);
 @@clientName(BareMetalMachineKeySetProperties.expiration, "ExpireOn", "csharp");
 @@alternateType(
   BareMetalMachineKeySetProperties.jumpHostsAllowed,
specification/networkcloud/NetworkCloud.Management/client.tsp
   "registryUriString",
   "csharp"
 );
+@@clientName(
+  ImageRepositoryCredentialsPatch.registryUrl,
+  "registryUriString",
+  "csharp"
+);
 @@alternateType(
   KubernetesClusterProperties.attachedNetworkIds,
   armResourceIdentifier[],
specification/networkcloud/NetworkCloud.Management/client.tsp
   "CACertificate",
   "csharp"
 );
+@@alternateType(
+  RackDefinitionPatch.networkRackId,
+  armResourceIdentifier,
+  "csharp"
+);
+@@alternateType(RackDefinitionPatch.rackSkuId, armResourceIdentifier, "csharp");
 @@alternateType(
   StorageApplianceProperties.clusterId,
   armResourceIdentifier,
specification/networkcloud/NetworkCloud.Management/client.tsp
   "StorageApplianceConfiguration",
   "csharp"
 );
+@@clientName(
+  StorageApplianceConfigurationDataPatch,
+  "StorageApplianceConfigurationPatch",
+  "csharp"
+);
 @@alternateType(
   StorageProfile.volumeAttachments,
   armResourceIdentifier[],
specification/networkcloud/NetworkCloud.Management/client.tsp
 @@clientName(Nic, "NetworkCloudNic", "csharp");
 @@clientName(OsDisk, "NetworkCloudOSDisk", "csharp");
 @@clientName(RackDefinition, "NetworkCloudRackDefinition", "csharp");
+@@clientName(RackDefinitionPatch, "NetworkCloudRackDefinitionPatch", "csharp");
 @@clientName(SshPublicKey, "NetworkCloudSshPublicKey", "csharp");
+@@clientName(SshPublicKeyPatch, "NetworkCloudSshPublicKeyPatch", "csharp");
 @@clientName(StorageProfile, "NetworkCloudStorageProfile", "csharp");
 @@clientName(
   OperationStatusResult,
specification/networkcloud/NetworkCloud.Management/client.tsp
 @@clientName(VirtualMachineBootMethod.BIOS, "Bios", "csharp");
 @@clientName(VirtualMachineBootMethod.UEFI, "Uefi", "csharp");
 @@clientName(ValidationThreshold.type, "ThresholdType", "csharp");
+@@clientName(ValidationThresholdPatch.type, "ThresholdType", "csharp");
 @@clientName(MachineSkuDiskConnectionType.PCIE, "Pcie", "csharp");
 @@clientName(MachineSkuDiskConnectionType.RAID, "Raid", "csharp");
 @@clientName(MachineSkuDiskConnectionType.SATA, "Sata", "csharp");

specification/networkcloud/NetworkCloud.Management/client.tsp

Affected operations (0)

No directly affected REST operation.

Use patch-specific image repository credentialsChanges VirtualMachinePatchProperties.vmImageRepositoryCredentials from ImageRepositoryCredentials to ImageRepositoryCredentialsPatch for VirtualMachines_Update at 2026-07-01.
modify
Changed TypeSpec source (1)
specification/networkcloud/NetworkCloud.Management/virtualmachines/VirtualMachine_models.tsp
 
 using Azure.ResourceManager;
 using Azure.ClientGenerator.Core;
+using TypeSpec.Versioning;
 
 namespace Microsoft.NetworkCloud;
 
specification/networkcloud/NetworkCloud.Management/virtualmachines/VirtualMachine_models.tsp
   username: string;
 }
 
+/**
+ * ImageRepositoryCredentialsPatch represents the credentials used to login to the image repository for patch operations.
+ */
+@added(Versions.v2026_07_01)
+model ImageRepositoryCredentialsPatch {
+  /**
+   * The password or token used to access an image in the target repository.
+   */
+  @minLength(1)
+  @secret
+  password?: string;
+
+  /**
+   * The URL of the authentication server used to validate the repository credentials.
+   */
+  registryUrl?: string;
+
+  /**
+   * The username used to access an image in the target repository.
+   */
+  @minLength(1)
+  username?: string;
+}
+
 /**
  * OsDisk represents configuration of the boot disk.
  */
specification/networkcloud/NetworkCloud.Management/virtualmachines/VirtualMachine_models.tsp
   /**
    * The credentials used to login to the image repository that has access to the specified image.
    */
-  vmImageRepositoryCredentials?: ImageRepositoryCredentials;
+  @typeChangedFrom(Versions.v2026_07_01, ImageRepositoryCredentials)
+  vmImageRepositoryCredentials?: ImageRepositoryCredentialsPatch;
 }
 
 /**

specification/networkcloud/NetworkCloud.Management/virtualmachines/VirtualMachine_models.tsp:323

Affected operations (1)
VirtualMachines_UpdatePATCH/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NetworkCloud/virtualMachines/{virtualMachineName}2026-07-01
Contract areaBeforeAfter
Request body propertyproperties.vmImageRepositoryCredentials
ImageRepositoryCredentials
ImageRepositoryCredentialsPatch

REST contract changed: request.

Normalize bare-metal monitoring type namesRenames the bare-metal machine monitoring status log-level and metrics-level unions at 2026-07-01 while retaining their existing wire values and operation behavior.
modify
Changed TypeSpec source (1)
specification/networkcloud/NetworkCloud.Management/baremetalmachines/BareMetalMachine_models.tsp
  * The log level for the monitoring configuration status of the bare metal machine.
  */
 @added(Versions.v2026_05_01_preview)
-union BareMetalMachineMetricsConfigurationStatusLogLevel {
+@renamedFrom(
+  Versions.v2026_07_01,
+  "BareMetalMachineMetricsConfigurationStatusLogLevel"
+)
+union BareMetalMachineMonitoringConfigurationStatusLogLevel {
   string,
 
   /**
specification/networkcloud/NetworkCloud.Management/baremetalmachines/BareMetalMachine_models.tsp
  * The metrics level for the monitoring configuration status of the bare metal machine.
  */
 @added(Versions.v2026_05_01_preview)
-union BareMetalMachineMetricsConfigurationStatusMetricsLevel {
+@renamedFrom(
+  Versions.v2026_07_01,
+  "BareMetalMachineMetricsConfigurationStatusMetricsLevel"
+)
+union BareMetalMachineMonitoringConfigurationStatusMetricsLevel {
   string,
 
   /**
specification/networkcloud/NetworkCloud.Management/baremetalmachines/BareMetalMachine_models.tsp
   /**
    * The log level for the monitoring configuration status of the bare metal machine.
    */
-  logLevel?: BareMetalMachineMetricsConfigurationStatusLogLevel;
+  logLevel?: BareMetalMachineMonitoringConfigurationStatusLogLevel;
 
   /**
    * The metrics level for the monitoring configuration status of the bare metal machine.
    */
-  metricsLevel?: BareMetalMachineMetricsConfigurationStatusMetricsLevel;
+  metricsLevel?: BareMetalMachineMonitoringConfigurationStatusMetricsLevel;
 }
 
 /**

specification/networkcloud/NetworkCloud.Management/baremetalmachines/BareMetalMachine_models.tsp:99

Affected operations (1)
BareMetalMachines_CreateOrUpdatePUT/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NetworkCloud/bareMetalMachines/{bareMetalMachineName}2026-07-01
Contract areaBeforeAfter
Request body propertyproperties.bmcIpv4Address
not present
string (optional)
Request body propertyproperties.bmcIpv6Address
not present
string (optional)
Request body propertyproperties.monitoringConfigurationStatus
not present
BareMetalMachineMonitoringConfigurationStatus (optional)
Response body property200 · properties.bmcIpv4Address
not present
string (optional)
Response body property200 · properties.bmcIpv6Address
not present
string (optional)
Response body property200 · properties.monitoringConfigurationStatus
not present
BareMetalMachineMonitoringConfigurationStatus (optional)
Response body property201 · properties.bmcIpv4Address
not present
string (optional)
Response body property201 · properties.bmcIpv6Address
not present
string (optional)
Response body property201 · properties.monitoringConfigurationStatus
not present
BareMetalMachineMonitoringConfigurationStatus (optional)

REST contract changed: request, responses.

Azure Guidelines

Findings and affected intents at a glance; expand for expected guidance and actual changes.

6 of 6 semantic intents assessed · 4 documents selected

No Azure Guidelines findings.

No applicable guideline was found for: Align C# patch-model names and types.

REST breaking changes

Operation impact and affected intents at a glance; expand for before/after evidence.

No confirmed REST breaking changes.

Documentation Completeness

Checks only whether newly added operation, model, enum, and interface declarations have a nonempty effective TypeSpec description.

0 findings · 9 declarations checked

Appendix

Potential limits

None

Projects and compiler status

ProjectModeBaseline commit@versionTarget commit@versionBaseline AutoRest / TCGCTarget AutoRest / TCGC
specification/networkcloud/NetworkCloud.Managementnew-api-version117f3e002839ec70ce585b42f262d5f8ad23b4eb@2025-09-01
current · previous-latest-stable
117f3e002839ec70ce585b42f262d5f8ad23b4eb@2026-07-01
current · newest-added-version
succeeded / succeededsucceeded / succeeded

Pull request: #43718

Guidance fetched

Guidance coverage and retrieval evidence
{
  "status": "passed",
  "coverage": {
    "semanticIntentCount": 6,
    "assessedIntentCount": 6,
    "selectedDocumentCount": 4,
    "unassessedIntentIds": []
  },
  "sharedSearch": {
    "catalogRanking": [
      {
        "rank": 1,
        "catalogOrder": 25,
        "title": "Built-in decorators",
        "canonicalUrl": "https://typespec.io/docs/standard-library/built-in-decorators/",
        "score": {
          "exactSymbol": 4,
          "patternCategory": 3,
          "servicePlane": 2,
          "changeContext": 1,
          "total": 10
        },
        "selectionRationale": "Directly covers @minLength, @maxLength, @minValue, @maxValue, @pattern, @visibility, and @secret usage."
      },
      {
        "rank": 2,
        "catalogOrder": 1,
        "title": "Evolving APIs",
        "canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/versioning/06-evolving-apis/",
        "score": {
          "exactSymbol": 0,
          "patternCategory": 3,
          "servicePlane": 2,
          "changeContext": 1,
          "total": 6
        },
        "selectionRationale": "Directly governs versioned property type changes and model renames."
      },
      {
        "rank": 3,
        "catalogOrder": 2,
        "title": "Versioning overview",
        "canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/versioning/01-about-versioning/",
        "score": {
          "exactSymbol": 0,
          "patternCategory": 3,
          "servicePlane": 2,
          "changeContext": 1,
          "total": 6
        },
        "selectionRationale": "Applies to the stable version progression and preview history."
      },
      {
        "rank": 4,
        "catalogOrder": 4,
        "title": "Add stable after preview",
        "canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/versioning/03-stable-after-preview/",
        "score": {
          "exactSymbol": 0,
          "patternCategory": 3,
          "servicePlane": 2,
          "changeContext": 1,
          "total": 6
        },
        "selectionRationale": "The new 2026-07-01 stable version follows active preview versions."
      },
      {
        "rank": 5,
        "catalogOrder": 21,
        "title": "Models",
        "canonicalUrl": "https://typespec.io/docs/language-basics/models/",
        "score": {
          "exactSymbol": 0,
          "patternCategory": 3,
          "servicePlane": 2,
          "changeContext": 1,
          "total": 6
        },
        "selectionRationale": "Applies to the patch-model substitutions and optional properties."
      },
      {
        "rank": 6,
        "catalogOrder": 22,
        "title": "Enums",
        "canonicalUrl": "https://typespec.io/docs/language-basics/enums/",
        "score": {
          "exactSymbol": 0,
          "patternCategory": 3,
          "servicePlane": 2,
          "changeContext": 1,
          "total": 6
        },
        "selectionRationale": "Applies to the monitoring union renames."
      },
      {
        "rank": 7,
        "catalogOrder": 24,
        "title": "Decorators",
        "canonicalUrl": "https://typespec.io/docs/language-basics/decorators/",
        "score": {
          "exactSymbol": 0,
          "patternCategory": 3,
          "servicePlane": 2,
          "changeContext": 1,
          "total": 6
        },
        "selectionRationale": "Applies generally to the added versioning and client decorators."
      },
      {
        "rank": 8,
        "catalogOrder": 6,
        "title": "Add stable after stable",
        "canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/versioning/05-stable-after-stable/",
        "score": {
          "exactSymbol": 0,
          "patternCategory": 0,
          "servicePlane": 2,
          "changeContext": 1,
          "total": 3
        },
        "selectionRationale": "Stable publication is relevant, but preview versions intervene."
      },
      {
        "rank": 9,
        "catalogOrder": 17,
        "title": "Azure.Core long-running operations",
        "canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/azure-core/long-running-operations/",
        "score": {
          "exactSymbol": 0,
          "patternCategory": 0,
          "servicePlane": 2,
          "changeContext": 1,
          "total": 3
        },
        "selectionRationale": "The supplied profile is data-plane, but no LRO pattern itself changes."
      },
      {
        "rank": 10,
        "catalogOrder": 3,
        "title": "Add preview after preview",
        "canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/versioning/02-preview-after-preview/",
        "score": {
          "exactSymbol": 0,
          "patternCategory": 0,
          "servicePlane": 2,
          "changeContext": 0,
          "total": 2
        },
        "selectionRationale": "The PR adds a stable version, not another preview."
      },
      {
        "rank": 11,
        "catalogOrder": 5,
        "title": "Add preview after stable",
        "canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/versioning/04-preview-after-stable/",
        "score": {
          "exactSymbol": 0,
          "patternCategory": 0,
          "servicePlane": 2,
          "changeContext": 0,
          "total": 2
        },
        "selectionRationale": "The PR does not add a preview version."
      },
      {
        "rank": 12,
        "catalogOrder": 19,
        "title": "TypeSpec pagination",
        "canonicalUrl": "https://typespec.io/docs/standard-library/pagination/",
        "score": {
          "exactSymbol": 0,
          "patternCategory": 0,
          "servicePlane": 2,
          "changeContext": 0,
          "total": 2
        },
        "selectionRationale": "No pagination construct is changed."
      },
      {
        "rank": 13,
        "catalogOrder": 23,
        "title": "Scalars",
        "canonicalUrl": "https://typespec.io/docs/language-basics/scalars/",
        "score": {
          "exactSymbol": 0,
          "patternCategory": 0,
          "servicePlane": 2,
          "changeContext": 0,
          "total": 2
        },
        "selectionRationale": "No custom scalar is changed."
      },
      {
        "rank": 14,
        "catalogOrder": 26,
        "title": "OpenAPI decorators",
        "canonicalUrl": "https://typespec.io/docs/libraries/openapi/reference/decorators/",
        "score": {
          "exactSymbol": 0,
          "patternCategory": 0,
          "servicePlane": 2,
          "changeContext": 0,
          "total": 2
        },
        "selectionRationale": "No OpenAPI-specific decorator is changed."
      },
      {
        "rank": 15,
        "catalogOrder": 29,
        "title": "Content negotiation",
        "canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/azure-core/content-negotiation/",
        "score": {
          "exactSymbol": 0,
          "patternCategory": 0,
          "servicePlane": 2,
          "changeContext": 0,
          "total": 2
        },
        "selectionRationale": "No content-negotiation behavior is changed."
      },
      {
        "rank": 16,
        "catalogOrder": 30,
        "title": "Directives",
        "canonicalUrl": "https://typespec.io/docs/language-basics/directives/",
        "score": {
          "exactSymbol": 0,
          "patternCategory": 0,
          "servicePlane": 2,
          "changeContext": 0,
          "total": 2
        },
        "selectionRationale": "No warning suppression is part of the assessed semantic intents."
      },
      {
        "rank": 17,
        "catalogOrder": 31,
        "title": "Azure Core `no-openapi` rule",
        "canonicalUrl": "https://azure.github.io/typespec-azure/docs/libraries/azure-core/rules/no-openapi/",
        "score": {
          "exactSymbol": 0,
          "patternCategory": 0,
          "servicePlane": 2,
          "changeContext": 0,
          "total": 2
        },
        "selectionRationale": "No OpenAPI decorator warning is involved."
      },
      {
        "rank": 18,
        "catalogOrder": 7,
        "title": "ARM resource types and modeling",
        "canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/arm/resource-type/",
        "score": {
          "exactSymbol": 0,
          "patternCategory": 0,
          "servicePlane": 0,
          "changeContext": 0,
          "total": 0
        },
        "selectionRationale": "No resource kind or lifecycle structure is changed."
      },
      {
        "rank": 19,
        "catalogOrder": 8,
        "title": "Specific extension resource sample",
        "canonicalUrl": "https://azure.github.io/typespec-azure/docs/samples/resource-manager/resource-types/specific-extension/",
        "score": {
          "exactSymbol": 0,
          "patternCategory": 0,
          "servicePlane": 0,
          "changeContext": 0,
          "total": 0
        },
        "selectionRationale": "No extension resource is changed."
      },
      {
        "rank": 20,
        "catalogOrder": 9,
        "title": "Private endpoints",
        "canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/arm/private-endpoints/",
        "score": {
          "exactSymbol": 0,
          "patternCategory": 0,
          "servicePlane": 0,
          "changeContext": 0,
          "total": 0
        },
        "selectionRationale": "No private endpoint resource is changed."
      },
      {
        "rank": 21,
        "catalogOrder": 10,
        "title": "Private links",
        "canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/arm/private-links/",
        "score": {
          "exactSymbol": 0,
          "patternCategory": 0,
          "servicePlane": 0,
          "changeContext": 0,
          "total": 0
        },
        "selectionRationale": "No private link resource is changed."
      },
      {
        "rank": 22,
        "catalogOrder": 11,
        "title": "Network security perimeter",
        "canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/arm/network-security-perimeter/",
        "score": {
          "exactSymbol": 0,
          "patternCategory": 0,
          "servicePlane": 0,
          "changeContext": 0,
          "total": 0
        },
        "selectionRationale": "No network security perimeter behavior is changed."
      },
      {
        "rank": 23,
        "catalogOrder": 12,
        "title": "ARM resource operations",
        "canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/arm/resource-operations/",
        "score": {
          "exactSymbol": 0,
          "patternCategory": 0,
          "servicePlane": 0,
          "changeContext": 0,
          "total": 0
        },
        "selectionRationale": "The changes do not alter ARM lifecycle templates."
      },
      {
        "rank": 24,
        "catalogOrder": 13,
        "title": "Azure.ResourceManager interface reference",
        "canonicalUrl": "https://azure.github.io/typespec-azure/docs/libraries/azure-resource-manager/reference/interfaces/",
        "score": {
          "exactSymbol": 0,
          "patternCategory": 0,
          "servicePlane": 0,
          "changeContext": 0,
          "total": 0
        },
        "selectionRationale": "No ARM interface template signature is changed."
      },
      {
        "rank": 25,
        "catalogOrder": 14,
        "title": "TypeSpec.Rest decorators",
        "canonicalUrl": "https://typespec.io/docs/libraries/rest/reference/decorators/",
        "score": {
          "exactSymbol": 0,
          "patternCategory": 0,
          "servicePlane": 0,
          "changeContext": 0,
          "total": 0
        },
        "selectionRationale": "No resource-semantics decorator is changed."
      },
      {
        "rank": 26,
        "catalogOrder": 15,
        "title": "Azure.ResourceManager decorators",
        "canonicalUrl": "https://azure.github.io/typespec-azure/docs/libraries/azure-resource-manager/reference/decorators/",
        "score": {
          "exactSymbol": 0,
          "patternCategory": 0,
          "servicePlane": 0,
          "changeContext": 0,
          "total": 0
        },
        "selectionRationale": "No ARM lifecycle decorator is changed."
      },
      {
        "rank": 27,
        "catalogOrder": 16,
        "title": "ARM long-running operations",
        "canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/arm/long-running-operations/",
        "score": {
          "exactSymbol": 0,
          "patternCategory": 0,
          "servicePlane": 0,
          "changeContext": 0,
          "total": 0
        },
        "selectionRationale": "No ARM LRO behavior is changed."
      },
      {
        "rank": 28,
        "catalogOrder": 18,
        "title": "Azure.ResourceManager data types",
        "canonicalUrl": "https://azure.github.io/typespec-azure/docs/libraries/azure-resource-manager/reference/data-types/",
        "score": {
          "exactSymbol": 0,
          "patternCategory": 0,
          "servicePlane": 0,
          "changeContext": 0,
          "total": 0
        },
        "selectionRationale": "No ARM paging parameter is changed."
      },
      {
        "rank": 29,
        "catalogOrder": 20,
        "title": "ARM common types",
        "canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/arm/add-common-types/",
        "score": {
          "exactSymbol": 0,
          "patternCategory": 0,
          "servicePlane": 0,
          "changeContext": 0,
          "total": 0
        },
        "selectionRationale": "No ARM common definition is changed."
      },
      {
        "rank": 30,
        "catalogOrder": 27,
        "title": "Change provider namespace",
        "canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/arm/change-provider-namespace/",
        "score": {
          "exactSymbol": 0,
          "patternCategory": 0,
          "servicePlane": 0,
          "changeContext": 0,
          "total": 0
        },
        "selectionRationale": "The provider namespace is unchanged."
      },
      {
        "rank": 31,
        "catalogOrder": 28,
        "title": "Azure Portal default experiences",
        "canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/azure-portal/default-experiences/",
        "score": {
          "exactSymbol": 0,
          "patternCategory": 0,
          "servicePlane": 0,
          "changeContext": 0,
          "total": 0
        },
        "selectionRationale": "No portal default-experience customization is changed."
      }
    ],
    "documents": [
      {
        "rank": 1,
        "catalogOrder": 25,
        "title": "Built-in decorators",
        "canonicalUrl": "https://typespec.io/docs/standard-library/built-in-decorators/",
        "score": {
          "exactSymbol": 4,
          "patternCategory": 3,
          "servicePlane": 2,
          "changeContext": 1,
          "total": 10
        },
        "selectionRationale": "Directly covers @minLength, @maxLength, @minValue, @maxValue, @pattern, @visibility, and @secret usage.",
        "guidance": [
          {
            "section": "String, numeric, visibility, and secret decorators",
            "excerpt": "@minLength specifies the minimum string length, @maxLength the maximum string length, @minValue and @maxValue numeric bounds, @pattern a string regular expression, and @secret marks values that require careful treatment.",
            "queryTerms": [
              "@minLength",
              "@maxLength",
              "@minValue",
              "@maxValue",
              "@pattern",
              "@secret"
            ],
            "examples": [
              "@minLength(1)",
              "@pattern(\"[a-z]+\", \"Must contain only lowercase letters.\")"
            ],
            "applicableDeclarationIds": [
              "declaration-484f5a014d519e3a",
              "declaration-53c1879bdea5527f",
              "declaration-5554c64342be73f0",
              "declaration-75337f77f5f4463e",
              "declaration-7a7ef9428b23c420",
              "declaration-83d4f5caadb819f2",
              "declaration-83fd90c0e6eebb35",
              "declaration-8e491d60f219489a",
              "declaration-983fd4580a9d3ce3",
              "declaration-9ccd0de72d1f3471",
              "declaration-e6caa350d61d4292"
            ]
          }
        ],
        "noRelevantGuidance": false,
        "retrievedAt": "2026-09-18T09:13:36.5627054Z",
        "contentHash": "sha256:c8818ba04dedf32a38140733e7d9b6dd0684ef433ad2f7a4617ea6ce49509d58"
      },
      {
        "rank": 2,
        "catalogOrder": 1,
        "title": "Evolving APIs",
        "canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/versioning/06-evolving-apis/",
        "score": {
          "exactSymbol": 0,
          "patternCategory": 3,
          "servicePlane": 2,
          "changeContext": 1,
          "total": 6
        },
        "selectionRationale": "Directly governs versioned property type changes and model renames.",
        "guidance": [
          {
            "section": "Evolving APIs with versioning decorators",
            "excerpt": "Versioning allows an API to evolve without breaking existing clients by specifying when resources, operations, or properties are added, removed, renamed, or changed.",
            "queryTerms": [
              "@added",
              "@typeChangedFrom",
              "@renamedFrom",
              "property type"
            ],
            "examples": [
              "@typeChangedFrom(Versions.v2, OldType) property: NewType;",
              "@renamedFrom(Versions.v2, \"OldName\") model NewName {}"
            ],
            "applicableDeclarationIds": [
              "declaration-24add68e026049c1",
              "declaration-484f5a014d519e3a",
              "declaration-53c1879bdea5527f",
              "declaration-5554c64342be73f0",
              "declaration-75337f77f5f4463e",
              "declaration-7a7ef9428b23c420",
              "declaration-83d4f5caadb819f2",
              "declaration-83fd90c0e6eebb35",
              "declaration-8e491d60f219489a",
              "declaration-983fd4580a9d3ce3",
              "declaration-9ccd0de72d1f3471",
              "declaration-aaa25b0c04d2b2db",
              "declaration-e6caa350d61d4292"
            ]
          },
          {
            "section": "Renaming declarations across versions",
            "excerpt": "Use @renamedFrom to rename models, properties, operations, enums, and other declarations; the version identifies where the name changed and oldName records the previous name.",
            "queryTerms": [
              "@renamedFrom",
              "model rename",
              "union rename"
            ],
            "examples": [
              "@renamedFrom(Versions.v3, \"WorkerProperties\") model EmployeeProperties {}"
            ],
            "applicableDeclarationIds": [
              "declaration-75112a47b0283920",
              "declaration-7d40eba1a19cb06e",
              "declaration-a29b9f1429d64453",
              "declaration-eb3f7340b30f3243"
            ]
          }
        ],
        "noRelevantGuidance": false,
        "retrievedAt": "2026-09-18T09:13:36.5007492Z",
        "contentHash": "sha256:51b720949106ee0e50a15c94e429c13aaa4698453919340ce88067d6c05be2ca"
      },
      {
        "rank": 3,
        "catalogOrder": 2,
        "title": "Versioning overview",
        "canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/versioning/01-about-versioning/",
        "score": {
          "exactSymbol": 0,
          "patternCategory": 3,
          "servicePlane": 2,
          "changeContext": 1,
          "total": 6
        },
        "selectionRationale": "Applies to the stable version progression and preview history.",
        "guidance": [],
        "noRelevantGuidance": true,
        "retrievedAt": "2026-09-18T09:13:36.5007587Z",
        "contentHash": "sha256:9096bf729185c03094a263380cd15c5a73b64bf68bb572e303dc3596f8fa1bfb"
      },
      {
        "rank": 4,
        "catalogOrder": 4,
        "title": "Add stable after preview",
        "canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/versioning/03-stable-after-preview/",
        "score": {
          "exactSymbol": 0,
          "patternCategory": 3,
          "servicePlane": 2,
          "changeContext": 1,
          "total": 6
        },
        "selectionRationale": "The new 2026-07-01 stable version follows active preview versions.",
        "guidance": [
          {
            "section": "Normalize preview versioning when adding stable",
            "excerpt": "When adding stable after preview, preview-scoped @typeChangedFrom and @renamedFrom changes are folded into the stable shape by replacing the declaration with the desired type or name and removing the preview decorator.",
            "queryTerms": [
              "stable after preview",
              "@typeChangedFrom",
              "@renamedFrom"
            ],
            "examples": [
              "@typeChangedFrom(Versions.preview, string) property: int32;",
              "@renamedFrom(Versions.preview, \"oldProperty\")"
            ],
            "applicableDeclarationIds": [
              "declaration-75112a47b0283920",
              "declaration-7d40eba1a19cb06e",
              "declaration-a29b9f1429d64453",
              "declaration-eb3f7340b30f3243"
            ]
          }
        ],
        "noRelevantGuidance": false,
        "retrievedAt": "2026-09-18T09:13:36.5420939Z",
        "contentHash": "sha256:e588bd3b7013fcfdca8cdb147231c74a6d2d89f1942d7cc4d583cefbe25f6261"
      }
    ]
  },
  "intentAssessments": [
    {
      "semanticIntentId": "semantic-0100f60eb3fb8229",
      "decision": "applicable-pass",
      "blockers": []
    },
    {
      "semanticIntentId": "semantic-418aa19e650d3fa6",
      "decision": "applicable-pass",
      "blockers": []
    },
    {
      "semanticIntentId": "semantic-58d123da1d0c8c44",
      "decision": "applicable-pass",
      "blockers": []
    },
    {
      "semanticIntentId": "semantic-6f1e90bccd5d3faf",
      "decision": "no-applicable-guidance",
      "blockers": []
    },
    {
      "semanticIntentId": "semantic-7536bb35e6d549ff",
      "decision": "applicable-pass",
      "blockers": []
    },
    {
      "semanticIntentId": "semantic-e27000eaa07e0e95",
      "decision": "applicable-pass",
      "blockers": []
    }
  ],
  "retrievalFailures": [],
  "blockers": []
}

Changed files

  • specification/networkcloud/NetworkCloud.Management/baremetalmachines/BareMetalMachine_models.tsp (committed)
  • specification/networkcloud/NetworkCloud.Management/client.tsp (committed)
  • specification/networkcloud/NetworkCloud.Management/clusters/Cluster_models.tsp (committed)
  • specification/networkcloud/NetworkCloud.Management/common/models.tsp (committed)
  • specification/networkcloud/NetworkCloud.Management/main.tsp (committed)
  • specification/networkcloud/NetworkCloud.Management/storageappliances/StorageAppliance_models.tsp (committed)
  • specification/networkcloud/NetworkCloud.Management/virtualmachines/Console_models.tsp (committed)
  • specification/networkcloud/NetworkCloud.Management/virtualmachines/VirtualMachine_models.tsp (committed)

Timing and model input

{
  "timings": {
    "metadataMs": 1078,
    "fetchMs": 144,
    "scopeDiscoveryMs": 180,
    "setupExcludingFetchMs": 10213,
    "comparisonMs": 128,
    "changeDiscoveryMs": 106,
    "workspacePreparationMs": 8406,
    "projectDiscoveryMs": 95,
    "totalMs": 143918,
    "semanticAnalysisMs": 559,
    "restAnalysisMs": 185,
    "downstreamAnalysisMs": 6594,
    "documentQualityAnalysisMs": 1
  },
  "inputAccounting": {
    "budgetTier": "small",
    "budgetBytes": 131072,
    "bytes": 122278,
    "estimatedTokens": 30570,
    "retained": {
      "evidenceSets": 21,
      "facts": 18,
      "semanticReviewUnits": 6,
      "restCandidates": 0,
      "downstreamCandidates": 10,
      "downstreamRootCauses": 4,
      "complianceSearchRequests": 6,
      "inferenceRequests": 10
    },
    "omittedRedundant": {
      "rawEmitterArtifacts": true,
      "compilerLogs": true,
      "unchangedInventories": true,
      "unreferencedFacts": true,
      "unreferencedDeterministicFacts": true,
      "sourceChanges": true,
      "repeatedDeclarationIds": true,
      "repeatedReviewUnitEvidence": true
    },
    "inference": {
      "requestCount": 10,
      "inferredCandidateCount": 0,
      "noImpactCount": 10,
      "blockedCount": 0
    },
    "compliance": {
      "catalogEntriesScored": 31,
      "documentsFetched": 4,
      "documentBytesFetched": 1694076,
      "guidanceExcerptsRetained": 4,
      "guidanceExcerptBytesRetained": 777
    }
  }
}

Provenance: model-input.json, dimensions/document-quality-input.json, inference.json, compliance-search-evidence.json, assessment-judgment.json, preparation-manifest.json