TypeSpec Assessment

Make the Cloud HSM cluster SKU name extensible

TypeSpec source diff: a6887d2260f26285d4b1f5fba97da370be9200b4 → 71ce7d0c524c4bea7bc737836684acd53f343147

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.

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

Recorded normalized SDK method: Microsoft.HardwareSecurityModules.CloudHsmClusters.createOrUpdate

CloudHsmClusterSkuName

Microsoft.HardwareSecurityModules.CloudHsmClusterSkuName

Representative method paths from recorded graph edges:

Input / bodybody.sku.nametarget evidence
Output / bodysku.nametarget evidence
Contract areaBeforeAfter
Enum shapeMicrosoft.HardwareSecurityModules.CloudHsmClusterSkuName
Fixed enum
Extensible enum
Enum memberCloudHsmClusterSkuName.Standard B10Wire value remains "Standard B10".
Standard B10
StandardB10
SDK type contractCloudHsmClusterSkuName
Microsoft.HardwareSecurityModules.CloudHsmClusterSkuName preserves its existing language-neutral generated SDK contract.
Microsoft.HardwareSecurityModules.CloudHsmClusterSkuName removed enum values: Standard B10.
SDK type contractCloudHsmClusterSkuName
Microsoft.HardwareSecurityModules.CloudHsmClusterSkuName preserves its existing language-neutral generated SDK contract.
Microsoft.HardwareSecurityModules.CloudHsmClusterSkuName changed enum extensibility.
Why this is breaking:
  • CloudHsmClusterSkuName renames the SDK member 'Standard B10' to 'StandardB10'. Existing references to the old member must change, even though its serialized value stays the same.
  • CloudHsmClusterSkuName changes from a fixed enum to an extensible string-backed enum. Callers relying on the fixed-enum type or its closed set of values must adapt.

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

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

Recorded normalized SDK method: Microsoft.HardwareSecurityModules.CloudHsmClusters.get

CloudHsmClusterSkuName

Microsoft.HardwareSecurityModules.CloudHsmClusterSkuName

Representative method paths from recorded graph edges:

Output / bodysku.nametarget evidence
Contract areaBeforeAfter
Enum shapeMicrosoft.HardwareSecurityModules.CloudHsmClusterSkuName
Fixed enum
Extensible enum
Enum memberCloudHsmClusterSkuName.Standard B10Wire value remains "Standard B10".
Standard B10
StandardB10
SDK type contractCloudHsmClusterSkuName
Microsoft.HardwareSecurityModules.CloudHsmClusterSkuName preserves its existing language-neutral generated SDK contract.
Microsoft.HardwareSecurityModules.CloudHsmClusterSkuName removed enum values: Standard B10.
SDK type contractCloudHsmClusterSkuName
Microsoft.HardwareSecurityModules.CloudHsmClusterSkuName preserves its existing language-neutral generated SDK contract.
Microsoft.HardwareSecurityModules.CloudHsmClusterSkuName changed enum extensibility.
Why this is breaking:
  • CloudHsmClusterSkuName renames the SDK member 'Standard B10' to 'StandardB10'. Existing references to the old member must change, even though its serialized value stays the same.
  • CloudHsmClusterSkuName changes from a fixed enum to an extensible string-backed enum. Callers relying on the fixed-enum type or its closed set of values must adapt.

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

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

Recorded normalized SDK method: Microsoft.HardwareSecurityModules.CloudHsmClusters.listByResourceGroup

CloudHsmClusterSkuName

Microsoft.HardwareSecurityModules.CloudHsmClusterSkuName

Representative method paths from recorded graph edges:

Output / bodysku.nametarget evidence
Contract areaBeforeAfter
Enum shapeMicrosoft.HardwareSecurityModules.CloudHsmClusterSkuName
Fixed enum
Extensible enum
Enum memberCloudHsmClusterSkuName.Standard B10Wire value remains "Standard B10".
Standard B10
StandardB10
SDK type contractCloudHsmClusterSkuName
Microsoft.HardwareSecurityModules.CloudHsmClusterSkuName preserves its existing language-neutral generated SDK contract.
Microsoft.HardwareSecurityModules.CloudHsmClusterSkuName removed enum values: Standard B10.
SDK type contractCloudHsmClusterSkuName
Microsoft.HardwareSecurityModules.CloudHsmClusterSkuName preserves its existing language-neutral generated SDK contract.
Microsoft.HardwareSecurityModules.CloudHsmClusterSkuName changed enum extensibility.
Why this is breaking:
  • CloudHsmClusterSkuName renames the SDK member 'Standard B10' to 'StandardB10'. Existing references to the old member must change, even though its serialized value stays the same.
  • CloudHsmClusterSkuName changes from a fixed enum to an extensible string-backed enum. Callers relying on the fixed-enum type or its closed set of values must adapt.

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

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

Recorded normalized SDK method: Microsoft.HardwareSecurityModules.CloudHsmClusters.listBySubscription

CloudHsmClusterSkuName

Microsoft.HardwareSecurityModules.CloudHsmClusterSkuName

Representative method paths from recorded graph edges:

Output / bodysku.nametarget evidence
Contract areaBeforeAfter
Enum shapeMicrosoft.HardwareSecurityModules.CloudHsmClusterSkuName
Fixed enum
Extensible enum
Enum memberCloudHsmClusterSkuName.Standard B10Wire value remains "Standard B10".
Standard B10
StandardB10
SDK type contractCloudHsmClusterSkuName
Microsoft.HardwareSecurityModules.CloudHsmClusterSkuName preserves its existing language-neutral generated SDK contract.
Microsoft.HardwareSecurityModules.CloudHsmClusterSkuName removed enum values: Standard B10.
SDK type contractCloudHsmClusterSkuName
Microsoft.HardwareSecurityModules.CloudHsmClusterSkuName preserves its existing language-neutral generated SDK contract.
Microsoft.HardwareSecurityModules.CloudHsmClusterSkuName changed enum extensibility.
Why this is breaking:
  • CloudHsmClusterSkuName renames the SDK member 'Standard B10' to 'StandardB10'. Existing references to the old member must change, even though its serialized value stays the same.
  • CloudHsmClusterSkuName changes from a fixed enum to an extensible string-backed enum. Callers relying on the fixed-enum type or its closed set of values must adapt.

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

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

Recorded normalized SDK method: Microsoft.HardwareSecurityModules.CloudHsmClusters.update

CloudHsmClusterSkuName

Microsoft.HardwareSecurityModules.CloudHsmClusterSkuName

Representative method paths from recorded graph edges:

Output / bodysku.nametarget evidence
Contract areaBeforeAfter
Enum shapeMicrosoft.HardwareSecurityModules.CloudHsmClusterSkuName
Fixed enum
Extensible enum
Enum memberCloudHsmClusterSkuName.Standard B10Wire value remains "Standard B10".
Standard B10
StandardB10
SDK type contractCloudHsmClusterSkuName
Microsoft.HardwareSecurityModules.CloudHsmClusterSkuName preserves its existing language-neutral generated SDK contract.
Microsoft.HardwareSecurityModules.CloudHsmClusterSkuName removed enum values: Standard B10.
SDK type contractCloudHsmClusterSkuName
Microsoft.HardwareSecurityModules.CloudHsmClusterSkuName preserves its existing language-neutral generated SDK contract.
Microsoft.HardwareSecurityModules.CloudHsmClusterSkuName changed enum extensibility.
Why this is breaking:
  • CloudHsmClusterSkuName renames the SDK member 'Standard B10' to 'StandardB10'. Existing references to the old member must change, even though its serialized value stays the same.
  • CloudHsmClusterSkuName changes from a fixed enum to an extensible string-backed enum. Callers relying on the fixed-enum type or its closed set of values must adapt.

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.

Make the Cloud HSM cluster SKU name extensibleReplaces the closed CloudHsmClusterSkuName enum with a string-backed union while retaining the Standard_B1 and Standard B10 wire values for create, get, and update operations.
modify
Changed TypeSpec source (1)
specification/hardwaresecuritymodules/resource-manager/Microsoft.HardwareSecurityModules/HardwareSecurityModules/models.tsp
 /**
  * Sku name of the Cloud HSM Cluster
  */
-#suppress "@azure-tools/typespec-azure-core/no-enum" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details"
-enum CloudHsmClusterSkuName {
-  Standard_B1,
-  `Standard B10`,
+union CloudHsmClusterSkuName {
+  string,
+
+  /** Standard_B1 SKU */
+  Standard_B1: "Standard_B1",
+
+  /** Standard B10 SKU */
+  StandardB10: "Standard B10",
 }
 
 /**

specification/hardwaresecuritymodules/resource-manager/Microsoft.HardwareSecurityModules/HardwareSecurityModules/models.tsp:283

Affected operations (3)
CloudHsmClusters_CreateOrUpdatePUT/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.HardwareSecurityModules/cloudHsmClusters/{cloudHsmClusterName}2025-03-31

HTTP signature and represented payload contract unchanged.

CloudHsmClusters_GetGET/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.HardwareSecurityModules/cloudHsmClusters/{cloudHsmClusterName}2025-03-31

HTTP signature and represented payload contract unchanged.

CloudHsmClusters_UpdatePATCH/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.HardwareSecurityModules/cloudHsmClusters/{cloudHsmClusterName}2025-03-31

HTTP signature and represented payload contract unchanged.

Azure Guidelines

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

1 of 1 semantic intents assessed · 4 documents selected

No Azure Guidelines findings.

REST breaking changes

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

No confirmed REST breaking changes.

Documentation Correctness

Does the description clearly and accurately explain the associated TypeSpec code? Examples, external documentation, and agent execution are not assessed.

0 findings · 3 descriptions assessed

Appendix

Potential limits

None

Projects and compiler status

ProjectModeBaseline commit@versionTarget commit@versionBaseline AutoRest / TCGCTarget AutoRest / TCGC
specification/hardwaresecuritymodules/resource-manager/Microsoft.HardwareSecurityModules/HardwareSecurityModulesexisting-api-versiona6887d2260f26285d4b1f5fba97da370be9200b4@2025-03-31
base · affected-existing-version
71ce7d0c524c4bea7bc737836684acd53f343147@2025-03-31
current · affected-existing-version
succeeded / succeededsucceeded / succeeded

Pull request: #43745

Guidance fetched

Guidance coverage and retrieval evidence
{
  "status": "passed",
  "coverage": {
    "semanticIntentCount": 1,
    "assessedIntentCount": 1,
    "selectedDocumentCount": 4,
    "unassessedIntentIds": []
  },
  "intentAssessments": [
    {
      "semanticIntentId": "semantic-6c953bac4d5ca5b2",
      "decision": "applicable-pass",
      "catalogRanking": [
        {
          "rank": 1,
          "catalogOrder": 23,
          "title": "Models",
          "canonicalUrl": "https://typespec.io/docs/language-basics/models/",
          "score": {
            "exactSymbol": 4,
            "patternCategory": 3,
            "servicePlane": 0,
            "changeContext": 0,
            "total": 7
          },
          "selectionRationale": "Selected because it names an exact changed TypeSpec construct (models) and matches the models and enums query category."
        },
        {
          "rank": 2,
          "catalogOrder": 24,
          "title": "Enums",
          "canonicalUrl": "https://typespec.io/docs/language-basics/enums/",
          "score": {
            "exactSymbol": 4,
            "patternCategory": 3,
            "servicePlane": 0,
            "changeContext": 0,
            "total": 7
          },
          "selectionRationale": "Selected because it names an exact changed TypeSpec construct (enums) and matches the models and enums query category."
        },
        {
          "rank": 3,
          "catalogOrder": 22,
          "title": "ARM common types",
          "canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/arm/add-common-types/",
          "score": {
            "exactSymbol": 0,
            "patternCategory": 3,
            "servicePlane": 2,
            "changeContext": 0,
            "total": 5
          },
          "selectionRationale": "Selected because it matches the models and enums query category and applies to ARM model definitions."
        },
        {
          "rank": 4,
          "catalogOrder": 32,
          "title": "Directives",
          "canonicalUrl": "https://typespec.io/docs/language-basics/directives/",
          "score": {
            "exactSymbol": 4,
            "patternCategory": 0,
            "servicePlane": 0,
            "changeContext": 0,
            "total": 4
          },
          "selectionRationale": "Selected because it names an exact changed TypeSpec construct (#suppress)."
        },
        {
          "rank": 5,
          "catalogOrder": 25,
          "title": "Scalars",
          "canonicalUrl": "https://typespec.io/docs/language-basics/scalars/",
          "score": {
            "exactSymbol": 0,
            "patternCategory": 3,
            "servicePlane": 0,
            "changeContext": 0,
            "total": 3
          },
          "selectionRationale": "Selected because it matches the models and enums query category."
        },
        {
          "rank": 6,
          "catalogOrder": 26,
          "title": "Decorators",
          "canonicalUrl": "https://typespec.io/docs/language-basics/decorators/",
          "score": {
            "exactSymbol": 0,
            "patternCategory": 3,
            "servicePlane": 0,
            "changeContext": 0,
            "total": 3
          },
          "selectionRationale": "Selected because it matches the decorators query category."
        },
        {
          "rank": 7,
          "catalogOrder": 27,
          "title": "Built-in decorators",
          "canonicalUrl": "https://typespec.io/docs/standard-library/built-in-decorators/",
          "score": {
            "exactSymbol": 0,
            "patternCategory": 3,
            "servicePlane": 0,
            "changeContext": 0,
            "total": 3
          },
          "selectionRationale": "Selected because it matches the decorators query category."
        },
        {
          "rank": 8,
          "catalogOrder": 28,
          "title": "OpenAPI decorators",
          "canonicalUrl": "https://typespec.io/docs/libraries/openapi/reference/decorators/",
          "score": {
            "exactSymbol": 0,
            "patternCategory": 3,
            "servicePlane": 0,
            "changeContext": 0,
            "total": 3
          },
          "selectionRationale": "Selected because it matches the decorators query category."
        },
        {
          "rank": 9,
          "catalogOrder": 29,
          "title": "Change provider namespace",
          "canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/arm/change-provider-namespace/",
          "score": {
            "exactSymbol": 0,
            "patternCategory": 3,
            "servicePlane": 0,
            "changeContext": 0,
            "total": 3
          },
          "selectionRationale": "Selected because it matches the decorators query category."
        },
        {
          "rank": 10,
          "catalogOrder": 30,
          "title": "Azure Portal default experiences",
          "canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/azure-portal/default-experiences/",
          "score": {
            "exactSymbol": 0,
            "patternCategory": 3,
            "servicePlane": 0,
            "changeContext": 0,
            "total": 3
          },
          "selectionRationale": "Selected because it matches the decorators query category."
        },
        {
          "rank": 11,
          "catalogOrder": 31,
          "title": "Content negotiation",
          "canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/azure-core/content-negotiation/",
          "score": {
            "exactSymbol": 0,
            "patternCategory": 3,
            "servicePlane": 0,
            "changeContext": 0,
            "total": 3
          },
          "selectionRationale": "Selected because it matches the decorators query category."
        },
        {
          "rank": 12,
          "catalogOrder": 16,
          "title": "Evolving APIs",
          "canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/versioning/06-evolving-apis/",
          "score": {
            "exactSymbol": 0,
            "patternCategory": 0,
            "servicePlane": 0,
            "changeContext": 1,
            "total": 1
          },
          "selectionRationale": "Selected because it covers modifying existing API definitions."
        },
        {
          "rank": 13,
          "catalogOrder": 1,
          "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": "Cataloged official guidance has no direct query-profile signal for this intent."
        },
        {
          "rank": 14,
          "catalogOrder": 2,
          "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": "Cataloged official guidance has no direct query-profile signal for this intent."
        },
        {
          "rank": 15,
          "catalogOrder": 3,
          "title": "Agent base type",
          "canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/arm/agent-base-type/",
          "score": {
            "exactSymbol": 0,
            "patternCategory": 0,
            "servicePlane": 0,
            "changeContext": 0,
            "total": 0
          },
          "selectionRationale": "Cataloged official guidance has no direct query-profile signal for this intent."
        },
        {
          "rank": 16,
          "catalogOrder": 4,
          "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": "Cataloged official guidance has no direct query-profile signal for this intent."
        },
        {
          "rank": 17,
          "catalogOrder": 5,
          "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": "Cataloged official guidance has no direct query-profile signal for this intent."
        },
        {
          "rank": 18,
          "catalogOrder": 6,
          "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": "Cataloged official guidance has no direct query-profile signal for this intent."
        },
        {
          "rank": 19,
          "catalogOrder": 7,
          "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": "Cataloged official guidance has no direct query-profile signal for this intent."
        },
        {
          "rank": 20,
          "catalogOrder": 8,
          "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": "Cataloged official guidance has no direct query-profile signal for this intent."
        },
        {
          "rank": 21,
          "catalogOrder": 9,
          "title": "Azure.Core operation interfaces",
          "canonicalUrl": "https://azure.github.io/typespec-azure/docs/getstarted/azure-core/step05/",
          "score": {
            "exactSymbol": 0,
            "patternCategory": 0,
            "servicePlane": 0,
            "changeContext": 0,
            "total": 0
          },
          "selectionRationale": "Cataloged official guidance has no direct query-profile signal for this intent."
        },
        {
          "rank": 22,
          "catalogOrder": 10,
          "title": "Azure.Core interface reference",
          "canonicalUrl": "https://azure.github.io/typespec-azure/docs/libraries/azure-core/reference/interfaces/",
          "score": {
            "exactSymbol": 0,
            "patternCategory": 0,
            "servicePlane": 0,
            "changeContext": 0,
            "total": 0
          },
          "selectionRationale": "Cataloged official guidance has no direct query-profile signal for this intent."
        },
        {
          "rank": 23,
          "catalogOrder": 11,
          "title": "Versioning overview",
          "canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/versioning/01-about-versioning/",
          "score": {
            "exactSymbol": 0,
            "patternCategory": 0,
            "servicePlane": 0,
            "changeContext": 0,
            "total": 0
          },
          "selectionRationale": "Cataloged official guidance has no direct query-profile signal for this intent."
        },
        {
          "rank": 24,
          "catalogOrder": 12,
          "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": 0,
            "changeContext": 0,
            "total": 0
          },
          "selectionRationale": "Cataloged official guidance has no direct query-profile signal for this intent."
        },
        {
          "rank": 25,
          "catalogOrder": 13,
          "title": "Add stable after preview",
          "canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/versioning/03-stable-after-preview/",
          "score": {
            "exactSymbol": 0,
            "patternCategory": 0,
            "servicePlane": 0,
            "changeContext": 0,
            "total": 0
          },
          "selectionRationale": "Cataloged official guidance has no direct query-profile signal for this intent."
        },
        {
          "rank": 26,
          "catalogOrder": 14,
          "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": 0,
            "changeContext": 0,
            "total": 0
          },
          "selectionRationale": "Cataloged official guidance has no direct query-profile signal for this intent."
        },
        {
          "rank": 27,
          "catalogOrder": 15,
          "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": 0,
            "changeContext": 0,
            "total": 0
          },
          "selectionRationale": "Cataloged official guidance has no direct query-profile signal for this intent."
        },
        {
          "rank": 28,
          "catalogOrder": 17,
          "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": "Cataloged official guidance has no direct query-profile signal for this intent."
        },
        {
          "rank": 29,
          "catalogOrder": 18,
          "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": 0,
            "changeContext": 0,
            "total": 0
          },
          "selectionRationale": "Cataloged official guidance has no direct query-profile signal for this intent."
        },
        {
          "rank": 30,
          "catalogOrder": 19,
          "title": "TypeSpec pagination",
          "canonicalUrl": "https://typespec.io/docs/standard-library/pagination/",
          "score": {
            "exactSymbol": 0,
            "patternCategory": 0,
            "servicePlane": 0,
            "changeContext": 0,
            "total": 0
          },
          "selectionRationale": "Cataloged official guidance has no direct query-profile signal for this intent."
        },
        {
          "rank": 31,
          "catalogOrder": 20,
          "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": "Cataloged official guidance has no direct query-profile signal for this intent."
        },
        {
          "rank": 32,
          "catalogOrder": 33,
          "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": 0,
            "changeContext": 0,
            "total": 0
          },
          "selectionRationale": "Cataloged official guidance has no direct query-profile signal for this intent."
        }
      ],
      "documents": [
        {
          "rank": 1,
          "catalogOrder": 23,
          "title": "Models",
          "canonicalUrl": "https://typespec.io/docs/language-basics/models/",
          "score": {
            "exactSymbol": 4,
            "patternCategory": 3,
            "servicePlane": 0,
            "changeContext": 0,
            "total": 7
          },
          "selectionRationale": "Selected because it names an exact changed TypeSpec construct (models) and matches the models and enums query category.",
          "guidance": [],
          "noRelevantGuidance": true,
          "retrievedAt": "2026-09-03T08:08:56.690Z",
          "contentHash": "sha256:d4cf376cb3444e72b89e054e0676c409d636e15be40ab30e71fb12d08e92b6be"
        },
        {
          "rank": 2,
          "catalogOrder": 24,
          "title": "Enums",
          "canonicalUrl": "https://typespec.io/docs/language-basics/enums/",
          "score": {
            "exactSymbol": 4,
            "patternCategory": 3,
            "servicePlane": 0,
            "changeContext": 0,
            "total": 7
          },
          "selectionRationale": "Selected because it names an exact changed TypeSpec construct (enums) and matches the models and enums query category.",
          "guidance": [
            {
              "section": "Enums",
              "excerpt": "Enums, short for enumerations, provide a way for developers to define a collection of named constants. They are useful for documenting the purpose of the code or for establishing a set of distinct scenarios. Enums can be either numeric or string-based. For other data types, consider using unions.",
              "queryTerms": [
                "enum",
                "unions"
              ],
              "examples": [],
              "applicableDeclarationIds": [
                "declaration-6f59f326dfa59a93",
                "declaration-b248c9fd9eb008fb",
                "declaration-ec7b99f0e7bc0b26"
              ]
            }
          ],
          "noRelevantGuidance": false,
          "retrievedAt": "2026-09-03T08:08:56.690Z",
          "contentHash": "sha256:b6a44601f8c00b52f6063daae907d3384d60ef3a4721af342b802be9ab2a7d31"
        },
        {
          "rank": 3,
          "catalogOrder": 22,
          "title": "ARM common types",
          "canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/arm/add-common-types/",
          "score": {
            "exactSymbol": 0,
            "patternCategory": 3,
            "servicePlane": 2,
            "changeContext": 0,
            "total": 5
          },
          "selectionRationale": "Selected because it matches the models and enums query category and applies to ARM model definitions.",
          "guidance": [],
          "noRelevantGuidance": true,
          "retrievedAt": "2026-09-03T08:08:56.690Z",
          "contentHash": "sha256:18a5c6374d552b964058717b07178681036191e9489da3fa4089d9f9509ed229"
        },
        {
          "rank": 4,
          "catalogOrder": 32,
          "title": "Directives",
          "canonicalUrl": "https://typespec.io/docs/language-basics/directives/",
          "score": {
            "exactSymbol": 4,
            "patternCategory": 0,
            "servicePlane": 0,
            "changeContext": 0,
            "total": 4
          },
          "selectionRationale": "Selected because it names an exact changed TypeSpec construct (#suppress).",
          "guidance": [],
          "noRelevantGuidance": true,
          "retrievedAt": "2026-09-03T08:08:56.690Z",
          "contentHash": "sha256:dd2de927d98582c444dfd946513a2267499852001c0b9e5b20f73e78e2a88791"
        }
      ],
      "blockers": []
    }
  ],
  "retrievalFailures": [],
  "blockers": []
}

Changed files

  • specification/hardwaresecuritymodules/resource-manager/Microsoft.HardwareSecurityModules/HardwareSecurityModules/models.tsp (committed)

Timing and model input

{
  "timings": {
    "downstreamAnalysisMs": 845,
    "buildModelInputMs": 1
  },
  "inputAccounting": {
    "budgetTier": "small",
    "budgetBytes": 131072,
    "bytes": 22974,
    "estimatedTokens": 5744,
    "retained": {
      "evidenceSets": 3,
      "facts": 9,
      "semanticReviewUnits": 1,
      "restCandidates": 0,
      "downstreamCandidates": 2,
      "downstreamRootCauses": 1,
      "complianceSearchRequests": 1,
      "inferenceRequests": 0
    },
    "omittedRedundant": {
      "rawEmitterArtifacts": true,
      "compilerLogs": true,
      "unchangedInventories": true,
      "unreferencedFacts": true,
      "unreferencedDeterministicFacts": true,
      "sourceChanges": true,
      "repeatedDeclarationIds": true,
      "repeatedReviewUnitEvidence": true
    },
    "compliance": {
      "catalogEntriesScored": 32,
      "documentsFetched": 4,
      "documentBytesFetched": 1283990,
      "guidanceExcerptsRetained": 1,
      "guidanceExcerptBytesRetained": 297
    }
  }
}

Provenance: model-input.json, compliance-search-evidence.json, assessment-judgment.json, preparation-manifest.json, [object Object]