Azure Guidelines
Findings and affected intents at a glance; expand for expected guidance and actual changes.
3 of 3 semantic intents assessed · 4 documents selected
LRO behavior changes in an existing API versionThe LRO modeling and no-openapi requirements are satisfied, but the existing version is modified in place despite generated SDK invocation and result-contract breaks.Affected intents (1)failed
Expected
Use Azure LRO decorators and correct final results instead of raw OpenAPI extensions, and introduce caller-visible basic-to-LRO operation changes through API versioning.
ARM long-running (asynchronous) operation templates allow you to customize the LRO headers returned in the initial response, while retaining the correct `finalResult` value that matches the result of the operation.
Raw OpenAPI decorators change the OpenAPI output without informing other emitters such as SDKs, so SDKs can misrepresent the wire API.
Versioning allows you to evolve your API without breaking existing clients. By using versioning decorators, you can specify when resources, operations, or properties are added, removed, or changed.
Actual
The change correctly replaces raw OpenAPI LRO extensions with Azure.Core decorators, but changes execute and cancel from basic methods to Location-polled LROs within the existing 2026-05-01-preview API version.
specification/chaos/resource-manager/Microsoft.Chaos/Chaos/scenarioConfiguration.tsp:22-84, specification/chaos/resource-manager/Microsoft.Chaos/Chaos/scenarioConfiguration.tsp:48-55, specification/chaos/resource-manager/Microsoft.Chaos/Chaos/scenarioConfiguration.tsp:57-65, specification/chaos/resource-manager/Microsoft.Chaos/Chaos/scenarioConfiguration.tsp:67-74, specification/chaos/resource-manager/Microsoft.Chaos/Chaos/scenarioConfiguration.tsp:76-83, specification/chaos/resource-manager/Microsoft.Chaos/Chaos/workspace.tsp:17-79, specification/chaos/resource-manager/Microsoft.Chaos/Chaos/workspace.tsp:71-78, specification/chaos/resource-manager/Microsoft.Chaos/Chaos/scenarioRun.models.tsp:15-41, specification/chaos/resource-manager/Microsoft.Chaos/Chaos/scenarioRun.models.tsp:23-27, specification/chaos/resource-manager/Microsoft.Chaos/Chaos/scenarioRun.models.tsp:29-35, specification/chaos/resource-manager/Microsoft.Chaos/Chaos/scenarioRun.models.tsp:37-40, specification/chaos/resource-manager/Microsoft.Chaos/Chaos/scenarioRun.tsp:16-53, specification/chaos/resource-manager/Microsoft.Chaos/Chaos/scenarioRun.tsp:20-34, specification/chaos/resource-manager/Microsoft.Chaos/Chaos/scenarioRun.tsp:34-36, specification/chaos/resource-manager/Microsoft.Chaos/Chaos/scenarioRun.tsp:38-40, specification/chaos/resource-manager/Microsoft.Chaos/Chaos/scenarioRun.tsp:44-52, specification/chaos/resource-manager/Microsoft.Chaos/Chaos/lro-helpers.tsp:46-81, specification/chaos/resource-manager/Microsoft.Chaos/Chaos/lro-helpers.tsp:74-74
22- #suppress "@azure-tools/typespec-azure-resource-manager/arm-post-operation-response-codes" "LRO POST returns 202 with Location header for polling; final result obtained by polling the Location URL" 23- @pollingOperation(ScenarioRuns.get)
22- #suppress "@azure-tools/typespec-azure-resource-manager/arm-post-operation-response-codes" "LRO POST returns 202 with Location header for polling; final result obtained by polling the Location URL" 23- @pollingOperation(ScenarioRuns.get)
22- #suppress "@azure-tools/typespec-azure-resource-manager/arm-post-operation-response-codes" "LRO POST returns 202 with Location header for polling; final result obtained by polling the Location URL"22- #suppress "@azure-tools/typespec-azure-resource-manager/arm-post-operation-response-codes" "LRO POST returns 202 with Location header for polling; final result obtained by polling the Location URL"17- #suppress "@azure-tools/typespec-azure-resource-manager/arm-post-operation-response-codes" "Async LRO POST returning 202 + Location, not a synchronous POST"15+using TypeSpec.Http; 16+/** 17+ * Indicates the scenario run is still in progress. Clients polling via the 18+ * Location header should continue polling until a 200 response is returned. 19+ * The body reflects the current run state at the time of the poll. 20+ */ 21+model ScenarioRunInProgressResponse { 22+ ...AcceptedResponse; 23+ 24+ /** 25+ * The URL where the status of the long-running operation can be polled. 26+ */
16-import "@typespec/openapi";16-using TypeSpec.OpenAPI; 17+@removed(Microsoft.Chaos.Versions.v2025_01_01) 18+ * 19+ * This endpoint is also the polling target for ScenarioConfigurations.execute 20+ * and ScenarioRuns.cancel (final-state-via: location). While the run is in 21+ * progress the service returns 202 with a Location header pointing back to 22+ * this URL; clients must keep polling until they receive 200, which carries 23+ * the final ScenarioRun body. 24- #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-operation" "LRO polling endpoint that returns body in both 200 and 202" 25- #suppress "@azure-tools/typespec-azure-resource-manager/no-response-body" "LRO polling endpoint returns body in 202 to reflect current status" 26- #suppress "@azure-tools/typespec-azure-core/polling-operation-no-status-monitor" "LRO uses final-state-via:location pattern, not status monitor" 27- @summary("Get a scenario run.")
16- #suppress "@azure-tools/typespec-azure-resource-manager/arm-post-operation-response-codes" "LRO POST returns 202 with Location header for polling; final result obtained by polling the Location URL" 17- #suppress "@azure-tools/typespec-azure-core/polling-operation-no-status-monitor" "LRO uses final-state-via:location pattern" 18- @pollingOperation(ScenarioRuns.get)
46-import "@typespec/openapi"; 47-using TypeSpec.OpenAPI;
46-#suppress "@azure-tools/typespec-azure-core/no-openapi" "Required for LRO extensions in OpenAPI output" 47-@extension("x-ms-long-running-operation", true) 48-@extension( 49- "x-ms-long-running-operation-options", 50- #{ `final-state-via`: "location" } 51-) 52+@Azure.Core.useFinalStateVia("location")
46-#suppress "@azure-tools/typespec-azure-core/no-openapi" "Required for LRO extensions in OpenAPI output" 47-@extension("x-ms-long-running-operation", true) 48-@extension( 49- "x-ms-long-running-operation-options", 50- #{ `final-state-via`: "location" } 51-) 52+@Azure.Core.useFinalStateVia("location")
46-#suppress "@azure-tools/typespec-azure-core/no-openapi" "Required for LRO extensions in OpenAPI output" 47-@extension("x-ms-long-running-operation", true) 48-@extension( 49- "x-ms-long-running-operation-options", 50- #{ `final-state-via`: "location" } 51-) 52+@Azure.Core.useFinalStateVia("location")
No applicable guideline was found for: Use ARM resource-identifier scalars for resource ID propertiesRename fifteen generated C# SDK symbols.
Downstream breaking changes
Method impact and affected intents at a glance; expand for before/after evidence.
ScenarioConfigurations.executeThe normalized SDK method contract changes directly.Affected intents (1)Direct method change
Target normalized SDK method: Microsoft.Chaos.ScenarioConfigurations.execute
| Contract area | Before | After |
|---|---|---|
| SDK methodMethod kindScenarioConfigurations.execute changes from a basic method to an LRO method, changing invocation and result consumption for existing SDK callers. | basic | lro |
| SDK methodLong-running behaviorScenarioConfigurations.execute gains Location-based polling and completion behavior, requiring existing callers to handle a long-running operation. | none | {
"finalStateVia": "location",
"logicalResult": "Microsoft.Chaos.ScenarioRun",
"pollingStep": "model",
"finalStep": "finalOperationLink",
"statusMonitorStep": "nextOperationLink"
} |
| SDK methodReturn type (body output) | void | ScenarioRun |
- ScenarioConfigurations.execute changes from no SDK result to returning ScenarioRun through an LRO, so existing callers must adopt a polling result contract.
- ScenarioConfigurations.execute changes from a basic method to an LRO method, changing invocation and result consumption for existing SDK callers.
- ScenarioConfigurations.execute gains Location-based polling and completion behavior, requiring existing callers to handle a long-running operation.
Language-neutral TCGC evidence is shown; generated language signatures are not fabricated.
ScenarioRuns.cancelThe normalized SDK method contract changes directly.Affected intents (1)Direct method change
Target normalized SDK method: Microsoft.Chaos.ScenarioRuns.cancel
| Contract area | Before | After |
|---|---|---|
| SDK methodLong-running behaviorScenarioRuns.cancel gains Location-based polling and completion behavior, requiring existing callers to handle a long-running operation. | none | {
"finalStateVia": "location",
"logicalResult": "Microsoft.Chaos.ScenarioRun",
"pollingStep": "model",
"finalStep": "finalOperationLink",
"statusMonitorStep": "nextOperationLink"
} |
| SDK methodMethod kindScenarioRuns.cancel changes from a basic method to an LRO method, changing invocation and result consumption for existing SDK callers. | basic | lro |
| SDK methodReturn type (body output) | void | ScenarioRun |
- ScenarioRuns.cancel changes from no SDK result to returning ScenarioRun through an LRO, so existing callers must adopt a polling result contract.
- ScenarioRuns.cancel gains Location-based polling and completion behavior, requiring existing callers to handle a long-running operation.
- ScenarioRuns.cancel changes from a basic method to an LRO method, changing invocation and result consumption for existing SDK callers.
Language-neutral TCGC evidence is shown; generated language signatures are not fabricated.
ParameterTypeConfirmed SDK type finding retained without a deterministic SDK method mapping.Affected intents (1)Method mapping unavailable
ParameterType
ParameterType
Precise method path, location and baseline/target role unavailable. Aggregate root locations are not method-specific evidence.
| Contract area | Before | After |
|---|---|---|
| SDK type contractParameterType | Existing C# SDK type names remain stable. | C# renames ParameterType to ChaosScenarioParameterType. |
ConfigurationFiltersConfirmed SDK type finding retained without a deterministic SDK method mapping.Affected intents (1)Method mapping unavailable
ConfigurationFilters
ConfigurationFilters
Precise method path, location and baseline/target role unavailable. Aggregate root locations are not method-specific evidence.
| Contract area | Before | After |
|---|---|---|
| SDK type contractConfigurationFilters | Existing C# SDK type names remain stable. | C# renames ConfigurationFilters to ChaosScenarioConfigurationFilters. |
PermissionsFixConfirmed SDK type finding retained without a deterministic SDK method mapping.Affected intents (1)Method mapping unavailable
PermissionsFix
PermissionsFix
Precise method path, location and baseline/target role unavailable. Aggregate root locations are not method-specific evidence.
| Contract area | Before | After |
|---|---|---|
| SDK type contractPermissionsFix | Existing C# SDK type names remain stable. | C# renames PermissionsFix to ChaosPermissionsFixData. |
ValidationConfirmed SDK type finding retained without a deterministic SDK method mapping.Affected intents (1)Method mapping unavailable
Validation
Validation
Precise method path, location and baseline/target role unavailable. Aggregate root locations are not method-specific evidence.
| Contract area | Before | After |
|---|---|---|
| SDK type contractValidation | Existing C# SDK type names remain stable. | C# renames Validation to ChaosScenarioValidationData. |
whatIfModeConfirmed SDK type finding retained without a deterministic SDK method mapping.Affected intents (1)Method mapping unavailable
whatIfMode
PermissionsFixProperties.whatIfMode
Precise method path, location and baseline/target role unavailable. Aggregate root locations are not method-specific evidence.
| Contract area | Before | After |
|---|---|---|
| SDK type contractwhatIfMode | Existing C# SDK property names remain stable. | C# renames PermissionsFixProperties.whatIfMode to IsWhatIfMode. |
ConfigurationExclusionsConfirmed SDK type finding retained without a deterministic SDK method mapping.Affected intents (1)Method mapping unavailable
ConfigurationExclusions
ConfigurationExclusions
Precise method path, location and baseline/target role unavailable. Aggregate root locations are not method-specific evidence.
| Contract area | Before | After |
|---|---|---|
| SDK type contractConfigurationExclusions | Existing C# SDK type names remain stable. | C# renames ConfigurationExclusions to ChaosScenarioConfigurationExclusions. |
requiredConfirmed SDK type finding retained without a deterministic SDK method mapping.Affected intents (1)Method mapping unavailable
required
ScenarioParameter.required
Precise method path, location and baseline/target role unavailable. Aggregate root locations are not method-specific evidence.
| Contract area | Before | After |
|---|---|---|
| SDK type contractrequired | Existing C# SDK property names remain stable. | C# renames ScenarioParameter.required to IsRequired. |
WorkspaceEvaluationConfirmed SDK type finding retained without a deterministic SDK method mapping.Affected intents (1)Method mapping unavailable
WorkspaceEvaluation
WorkspaceEvaluation
Precise method path, location and baseline/target role unavailable. Aggregate root locations are not method-specific evidence.
| Contract area | Before | After |
|---|---|---|
| SDK type contractWorkspaceEvaluation | Existing C# SDK type names remain stable. | C# renames WorkspaceEvaluation to ChaosWorkspaceEvaluationData. |
PrivateAccessPropertiesConfirmed SDK type finding retained without a deterministic SDK method mapping.Affected intents (1)Method mapping unavailable
PrivateAccessProperties
PrivateAccessProperties
Precise method path, location and baseline/target role unavailable. Aggregate root locations are not method-specific evidence.
| Contract area | Before | After |
|---|---|---|
| SDK type contractPrivateAccessProperties | Existing C# SDK type names remain stable. | C# renames PrivateAccessProperties to ChaosPrivateAccessProperties. |
PrivateAccessConfirmed SDK type finding retained without a deterministic SDK method mapping.Affected intents (1)Method mapping unavailable
PrivateAccess
PrivateAccess
Precise method path, location and baseline/target role unavailable. Aggregate root locations are not method-specific evidence.
| Contract area | Before | After |
|---|---|---|
| SDK type contractPrivateAccess | Existing C# SDK type names remain stable. | C# renames PrivateAccess to ChaosPrivateAccess. |
OperationErrorConfirmed SDK type finding retained without a deterministic SDK method mapping.Affected intents (1)Method mapping unavailable
OperationError
OperationError
Precise method path, location and baseline/target role unavailable. Aggregate root locations are not method-specific evidence.
| Contract area | Before | After |
|---|---|---|
| SDK type contractOperationError | Existing C# SDK type names remain stable. | C# renames OperationError to ChaosOperationError. |
RecommendationConfirmed SDK type finding retained without a deterministic SDK method mapping.Affected intents (1)Method mapping unavailable
Recommendation
Recommendation
Precise method path, location and baseline/target role unavailable. Aggregate root locations are not method-specific evidence.
| Contract area | Before | After |
|---|---|---|
| SDK type contractRecommendation | Existing C# SDK type names remain stable. | C# renames Recommendation to ChaosScenarioRecommendation. |
whatIfConfirmed SDK type finding retained without a deterministic SDK method mapping.Affected intents (1)Method mapping unavailable
whatIf
FixResourcePermissionsRequest.whatIf
Precise method path, location and baseline/target role unavailable. Aggregate root locations are not method-specific evidence.
| Contract area | Before | After |
|---|---|---|
| SDK type contractwhatIf | Existing C# SDK property names remain stable. | C# renames FixResourcePermissionsRequest.whatIf to IsWhatIf. |
PrivateAccessPatchConfirmed SDK type finding retained without a deterministic SDK method mapping.Affected intents (1)Method mapping unavailable
PrivateAccessPatch
PrivateAccessPatch
Precise method path, location and baseline/target role unavailable. Aggregate root locations are not method-specific evidence.
| Contract area | Before | After |
|---|---|---|
| SDK type contractPrivateAccessPatch | Existing C# SDK type names remain stable. | C# renames PrivateAccessPatch to ChaosPrivateAccessPatch. |
DiscoveredResourceConfirmed SDK type finding retained without a deterministic SDK method mapping.Affected intents (1)Method mapping unavailable
DiscoveredResource
DiscoveredResource
Precise method path, location and baseline/target role unavailable. Aggregate root locations are not method-specific evidence.
| Contract area | Before | After |
|---|---|---|
| SDK type contractDiscoveredResource | Existing C# SDK type names remain stable. | C# renames DiscoveredResource to ChaosDiscovered. |
Semantic intents
Impact links are visible at a glance; expand for changed TypeSpec source, followed by affected operations.
Use ARM resource-identifier scalars for resource ID propertiesChanges five scenario-configuration resource ID properties from plain strings to `Azure.Core.armResourceIdentifier` without changing their emitted wire contracts.modify
Changed TypeSpec source (2)
* The resource id for the affected resource. */ @visibility(Lifecycle.Read) - resourceId: string; + resourceId: Azure.Core.armResourceIdentifier; /** * The missing permissions.
* The resource id for the affected resource. */ @visibility(Lifecycle.Read) - resourceId: string; + resourceId: Azure.Core.armResourceIdentifier; /** * The error code.
* The target Azure resource ID. */ @visibility(Lifecycle.Read) - targetResourceId: string; + targetResourceId: Azure.Core.armResourceIdentifier; /** * The managed identity principal ID.
* The created role assignment resource ID (null if failed or what-if mode). */ @visibility(Lifecycle.Read) - roleAssignmentId?: string; + roleAssignmentId?: Azure.Core.armResourceIdentifier; /** * Error details if the assignment failed.
* The workspace ID this evaluation belongs to. */ @visibility(Lifecycle.Read) - workspaceId: string; + workspaceId: Azure.Core.armResourceIdentifier; /** * The number of scenarios to evaluate.
specification/chaos/resource-manager/Microsoft.Chaos/Chaos/scenarioConfiguration.models.tsp:218, specification/chaos/resource-manager/Microsoft.Chaos/Chaos/workspaceEvaluation.models.tsp:29
Affected operations (0)
No directly affected REST operation.
Rename fifteen generated C# SDK symbolsAdds C#-specific `@@clientName` customizations for eleven models or properties in one hunk and four private-access models in another, changing their generated C# source identifiers only.Impacts (15)Downstream: ParameterType (SDK type)Downstream: ConfigurationFilters (SDK type)Downstream: PermissionsFix (SDK type)Downstream: Validation (SDK type)Downstream: whatIfMode (SDK type)Downstream: ConfigurationExclusions (SDK type)Downstream: required (SDK type)Downstream: WorkspaceEvaluation (SDK type)Downstream: PrivateAccessProperties (SDK type)Downstream: PrivateAccess (SDK type)Downstream: OperationError (SDK type)Downstream: Recommendation (SDK type)Downstream: whatIf (SDK type)Downstream: PrivateAccessPatch (SDK type)Downstream: DiscoveredResource (SDK type)modify
Changed TypeSpec source (1)
@@clientName(Scenario, "ChaosScenario", "csharp"); @@clientName(ScenarioRun, "ChaosScenarioRun", "csharp"); @@clientName(ScenarioConfiguration, "ChaosScenarioConfiguration", "csharp"); +@@clientName(DiscoveredResource, "ChaosDiscovered", "csharp"); +@@clientName(PrivateAccess, "ChaosPrivateAccess", "csharp"); +@@clientName(PrivateAccessPatch, "ChaosPrivateAccessPatch", "csharp"); +@@clientName(PrivateAccessProperties, "ChaosPrivateAccessProperties", "csharp"); @@clientName(ExperimentExecution, "ChaosExperimentExecution", "csharp"); @@clientName(Experiment, "ChaosExperiment", "csharp"); @@clientName(ExperimentExecution, "ChaosExperimentExecution", "csharp");
@@clientName(Action, "ChaosAction", "csharp"); @@clientName(ActionVersion, "ChaosActionVersion", "csharp"); @@clientName(ActionKind, "ChaosActionKind", "csharp"); +@@clientName( + ConfigurationExclusions, + "ChaosScenarioConfigurationExclusions", + "csharp" +); +@@clientName( + ConfigurationFilters, + "ChaosScenarioConfigurationFilters", + "csharp" +); +@@clientName(OperationError, "ChaosOperationError", "csharp"); +@@clientName(ScenarioParameter.required, "IsRequired", "csharp"); +@@clientName(ParameterType, "ChaosScenarioParameterType", "csharp"); +@@clientName(FixResourcePermissionsRequest.whatIf, "IsWhatIf", "csharp"); +@@clientName(PermissionsFix, "ChaosPermissionsFixData", "csharp"); +@@clientName(PermissionsFixProperties.whatIfMode, "IsWhatIfMode", "csharp"); +@@clientName(Recommendation, "ChaosScenarioRecommendation", "csharp"); +@@clientName(Validation, "ChaosScenarioValidationData", "csharp"); +@@clientName(WorkspaceEvaluation, "ChaosWorkspaceEvaluationData", "csharp"); @@clientName( ActionSupportedTargetType, "ChaosActionSupportedTargetType",
specification/chaos/resource-manager/Microsoft.Chaos/Chaos/client.tsp
Affected operations (0)
No directly affected REST operation.
Convert scenario execution and cancellation actions to Location-based LROsReworks scenario configuration execution and scenario run cancellation as Location-polled ARM long-running operations, replaces raw OpenAPI LRO extensions with Azure.Core decorators, and adds the in-progress response model.modify
Changed TypeSpec source (5)
/** * Execute the scenario execution with the given scenario configuration. */ - #suppress "@azure-tools/typespec-azure-resource-manager/arm-post-operation-response-codes" "LRO POST returns 202 with Location header for polling; final result obtained by polling the Location URL" - @pollingOperation(ScenarioRuns.get) execute is ArmResourceActionNoContentAsyncWithLocationResult< ScenarioConfiguration, void,
/** * Cancel the currently running scenario execution. */ - #suppress "@azure-tools/typespec-azure-resource-manager/arm-post-operation-response-codes" "LRO POST returns 202 with Location header for polling; final result obtained by polling the Location URL" @removed(Microsoft.Chaos.Versions.v2026_05_01_preview) - @pollingOperation(ScenarioRuns.get) cancel is ArmResourceActionNoContentAsyncWithLocationResult< ScenarioConfiguration, void,
/** * Validate the given scenario configuration. */ - #suppress "@azure-tools/typespec-azure-resource-manager/arm-post-operation-response-codes" "LRO POST returns 202 with Location header for polling; final result obtained by polling the Location URL" validate is ArmResourceActionNoContentAsyncWithLocationResult< ScenarioConfiguration, void,
/** * Fixes resource permissions for the given scenario configuration. */ - #suppress "@azure-tools/typespec-azure-resource-manager/arm-post-operation-response-codes" "LRO POST returns 202 with Location header for polling; final result obtained by polling the Location URL" fixResourcePermissions is ArmResourceActionNoContentAsyncWithLocationResult< ScenarioConfiguration, FixResourcePermissionsRequest,
/** * Refreshes recommendation status for all scenarios in a given workspace. */ - #suppress "@azure-tools/typespec-azure-resource-manager/arm-post-operation-response-codes" "Async LRO POST returning 202 + Location, not a synchronous POST" refreshRecommendations is ArmResourceActionNoContentAsyncWithLocationResult< Workspace, void,
import "./scenario.models.tsp"; using TypeSpec.Rest; +using TypeSpec.Http; using Azure.ResourceManager; using Azure.Core; using Azure.Core.Traits; namespace Microsoft.Chaos; +/** + * Indicates the scenario run is still in progress. Clients polling via the + * Location header should continue polling until a 200 response is returned. + * The body reflects the current run state at the time of the poll. + */ +model ScenarioRunInProgressResponse { + ...AcceptedResponse; + + /** + * The URL where the status of the long-running operation can be polled. + */ + @header("Location") + location: url; + + /** + * The number of seconds the client should wait before polling again. + */ + @minValue(0) + @maxValue(2147483647) + @header("Retry-After") + retryAfter?: int32; + + /** + * The current scenario run state at the time of the poll. + */ + @bodyRoot body: ScenarioRun; +} + /** * Model that represents the scenario run. */
import "@azure-tools/typespec-azure-resource-manager"; import "@typespec/rest"; import "@typespec/http"; -import "@typespec/openapi"; import "./scenarioRun.models.tsp"; import "./lro-helpers.tsp";
using TypeSpec.Versioning; using TypeSpec.Http; using TypeSpec.Rest; -using TypeSpec.OpenAPI; namespace Microsoft.Chaos; @added(Microsoft.Chaos.Versions.v2026_05_01_preview) +@removed(Microsoft.Chaos.Versions.v2025_01_01) @armResourceOperations interface ScenarioRuns { /** * Get a scenario run. + * + * This endpoint is also the polling target for ScenarioConfigurations.execute + * and ScenarioRuns.cancel (final-state-via: location). While the run is in + * progress the service returns 202 with a Location header pointing back to + * this URL; clients must keep polling until they receive 200, which carries + * the final ScenarioRun body. */ - #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-operation" "LRO polling endpoint that returns body in both 200 and 202" - #suppress "@azure-tools/typespec-azure-resource-manager/no-response-body" "LRO polling endpoint returns body in 202 to reflect current status" - #suppress "@azure-tools/typespec-azure-core/polling-operation-no-status-monitor" "LRO uses final-state-via:location pattern, not status monitor" - @summary("Get a scenario run.") - @autoRoute - @armResourceRead(ScenarioRun) - @get - get(...ResourceInstanceParameters<ScenarioRun>): - | ArmResponse<ScenarioRun> - | (AcceptedResponse & { - @doc("The Location header contains the URL where the status of the long running operation can be checked.") - @header("Location") - location: string; - - @doc("The Retry-After header can indicate how long the client should wait before polling the operation status.") - @header("Retry-After") - retryAfter?: int32; - - @bodyRoot body: ScenarioRun; - }) - | ErrorResponse; + #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-operation" "LRO polling endpoint that returns body in both 200 and 202 responses." + #suppress "@azure-tools/typespec-azure-resource-manager/no-response-body" "LRO polling endpoint returns body in 202 to reflect the current run state." + get is ArmResourceRead< + ScenarioRun, + Response = ArmResponse<ScenarioRun> | ScenarioRunInProgressResponse + >; /** * Get a list of scenario runs.
/** * Cancel the currently running scenario execution. */ - #suppress "@azure-tools/typespec-azure-resource-manager/arm-post-operation-response-codes" "LRO POST returns 202 with Location header for polling; final result obtained by polling the Location URL" - #suppress "@azure-tools/typespec-azure-core/polling-operation-no-status-monitor" "LRO uses final-state-via:location pattern" @added(Microsoft.Chaos.Versions.v2026_05_01_preview) - @pollingOperation(ScenarioRuns.get) cancel is ArmResourceActionNoContentAsyncWithLocationResult< ScenarioRun, void,
import "@azure-tools/typespec-azure-resource-manager"; import "@typespec/http"; import "@typespec/rest"; -import "@typespec/openapi"; using Azure.ResourceManager; using Azure.Core; using TypeSpec.Http; using TypeSpec.Rest; -using TypeSpec.OpenAPI; namespace Microsoft.Chaos;
#suppress "@azure-tools/typespec-azure-core/documentation-required" "template" #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-operation" "template" #suppress "@azure-tools/typespec-azure-resource-manager/arm-post-operation-response-codes" "Custom LRO operation with specific response codes" -#suppress "@azure-tools/typespec-azure-core/no-openapi" "Required for LRO extensions in OpenAPI output" @autoRoute @armResourceAction(Resource) @post -@extension("x-ms-long-running-operation", true) -@extension( - "x-ms-long-running-operation-options", - #{ `final-state-via`: "location" } -) +@Azure.Core.useFinalStateVia("location") op ArmResourceActionAsyncWithLocation< Resource extends Azure.ResourceManager.Foundations.Resource, Request extends TypeSpec.Reflection.Model | void,
#suppress "@azure-tools/typespec-azure-core/documentation-required" "template" #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-operation" "template" #suppress "@azure-tools/typespec-azure-resource-manager/arm-post-operation-response-codes" "Custom LRO operation with specific response codes" -#suppress "@azure-tools/typespec-azure-core/no-openapi" "Required for LRO extensions in OpenAPI output" @autoRoute @armResourceAction(Resource) @post -@extension("x-ms-long-running-operation", true) -@extension( - "x-ms-long-running-operation-options", - #{ `final-state-via`: "location" } -) +@Azure.Core.useFinalStateVia("location") op ArmResourceActionNoContentAsyncWithLocationResult< Resource extends Azure.ResourceManager.Foundations.Resource, Request extends TypeSpec.Reflection.Model | void,
#suppress "@azure-tools/typespec-azure-core/documentation-required" "template" #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-operation" "template" #suppress "@azure-tools/typespec-azure-resource-manager/arm-post-operation-response-codes" "Custom LRO operation with specific response codes" -#suppress "@azure-tools/typespec-azure-core/no-openapi" "Required for LRO extensions in OpenAPI output" @autoRoute @armResourceAction(Resource) @post -@extension("x-ms-long-running-operation", true) -@extension( - "x-ms-long-running-operation-options", - #{ `final-state-via`: "location" } -) +@Azure.Core.useFinalStateVia("location") op ArmResourceActionNoBodyAsyncWithLocation< Resource extends Azure.ResourceManager.Foundations.Resource, Request extends TypeSpec.Reflection.Model | void,
specification/chaos/resource-manager/Microsoft.Chaos/Chaos/scenarioConfiguration.tsp:22, specification/chaos/resource-manager/Microsoft.Chaos/Chaos/workspace.tsp:17, specification/chaos/resource-manager/Microsoft.Chaos/Chaos/scenarioRun.models.tsp:15, specification/chaos/resource-manager/Microsoft.Chaos/Chaos/scenarioRun.tsp:16, specification/chaos/resource-manager/Microsoft.Chaos/Chaos/lro-helpers.tsp:46
Affected operations (1)
ScenarioRuns_GetGET/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Chaos/workspaces/{workspaceName}/scenarios/{scenarioName}/runs/{runId}2026-05-01-preview
| Contract area | Before | After |
|---|---|---|
| Response header202 · Location | string | string uri |
REST contract changed: responses.
REST breaking changes
Operation impact and affected intents at a glance; expand for before/after evidence.
Documentation Completeness
Checks only whether newly added operation, model, enum, and interface declarations have a nonempty effective TypeSpec description.
0 findings · 1 declaration checked
Appendix
Potential limits
None
Projects and compiler status
| Project | Mode | Baseline commit@version | Target commit@version | Baseline AutoRest / TCGC | Target AutoRest / TCGC |
|---|---|---|---|---|---|
specification/chaos/resource-manager/Microsoft.Chaos/Chaos | existing-api-version | 232dfa71843fd574be49ba91a918ee7d3e7bfec3@2026-05-01-previewbase · affected-existing-version | a3b8933eb6ce030faa6abc6d354fc97e30f02e96@2026-05-01-previewcurrent · affected-existing-version | succeeded / succeeded | succeeded / succeeded |
Pull request: Not available for this local pre-PR assessment.
Guidance fetched
Guidance coverage and retrieval evidence
{
"status": "failed",
"coverage": {
"semanticIntentCount": 3,
"assessedIntentCount": 3,
"selectedDocumentCount": 4,
"unassessedIntentIds": []
},
"sharedSearch": {
"catalogRanking": [
{
"rank": 1,
"catalogOrder": 16,
"title": "ARM long-running operations",
"canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/arm/long-running-operations/",
"score": {
"exactSymbol": 4,
"patternCategory": 3,
"servicePlane": 2,
"changeContext": 1,
"total": 10
},
"selectionRationale": "Matches the changed Location-based ARM LRO behavior and headers."
},
{
"rank": 2,
"catalogOrder": 31,
"title": "Azure Core `no-openapi` rule",
"canonicalUrl": "https://azure.github.io/typespec-azure/docs/libraries/azure-core/rules/no-openapi/",
"score": {
"exactSymbol": 4,
"patternCategory": 3,
"servicePlane": 2,
"changeContext": 1,
"total": 10
},
"selectionRationale": "Matches the removed no-openapi suppressions and raw OpenAPI extensions."
},
{
"rank": 3,
"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": "Governs behavior-changing modifications to an existing versioned ARM API."
},
{
"rank": 4,
"catalogOrder": 7,
"title": "ARM resource types and modeling",
"canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/arm/resource-type/",
"score": {
"exactSymbol": 0,
"patternCategory": 3,
"servicePlane": 2,
"changeContext": 1,
"total": 6
},
"selectionRationale": "Matches ARM resource identifiers, models, and properties."
},
{
"rank": 5,
"catalogOrder": 12,
"title": "ARM resource operations",
"canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/arm/resource-operations/",
"score": {
"exactSymbol": 0,
"patternCategory": 3,
"servicePlane": 2,
"changeContext": 1,
"total": 6
},
"selectionRationale": "Matches modified ARM operations and LRO actions."
},
{
"rank": 6,
"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": 3,
"servicePlane": 2,
"changeContext": 1,
"total": 6
},
"selectionRationale": "Matches ARM operation interfaces."
},
{
"rank": 7,
"catalogOrder": 14,
"title": "TypeSpec.Rest decorators",
"canonicalUrl": "https://typespec.io/docs/libraries/rest/reference/decorators/",
"score": {
"exactSymbol": 0,
"patternCategory": 3,
"servicePlane": 2,
"changeContext": 1,
"total": 6
},
"selectionRationale": "Matches operation decorator semantics."
},
{
"rank": 8,
"catalogOrder": 15,
"title": "Azure.ResourceManager decorators",
"canonicalUrl": "https://azure.github.io/typespec-azure/docs/libraries/azure-resource-manager/reference/decorators/",
"score": {
"exactSymbol": 0,
"patternCategory": 3,
"servicePlane": 2,
"changeContext": 1,
"total": 6
},
"selectionRationale": "Matches ARM decorator semantics."
},
{
"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": 3,
"servicePlane": 2,
"changeContext": 1,
"total": 6
},
"selectionRationale": "Matches generic Azure LRO patterns."
},
{
"rank": 10,
"catalogOrder": 20,
"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": 1,
"total": 6
},
"selectionRationale": "Matches ARM model and identifier usage."
},
{
"rank": 11,
"catalogOrder": 21,
"title": "Models",
"canonicalUrl": "https://typespec.io/docs/language-basics/models/",
"score": {
"exactSymbol": 0,
"patternCategory": 3,
"servicePlane": 2,
"changeContext": 1,
"total": 6
},
"selectionRationale": "Matches the model and property changes."
},
{
"rank": 12,
"catalogOrder": 24,
"title": "Decorators",
"canonicalUrl": "https://typespec.io/docs/language-basics/decorators/",
"score": {
"exactSymbol": 0,
"patternCategory": 3,
"servicePlane": 2,
"changeContext": 1,
"total": 6
},
"selectionRationale": "Matches customization and LRO decorator changes."
},
{
"rank": 13,
"catalogOrder": 25,
"title": "Built-in decorators",
"canonicalUrl": "https://typespec.io/docs/standard-library/built-in-decorators/",
"score": {
"exactSymbol": 0,
"patternCategory": 3,
"servicePlane": 2,
"changeContext": 1,
"total": 6
},
"selectionRationale": "Matches standard decorator usage."
},
{
"rank": 14,
"catalogOrder": 26,
"title": "OpenAPI decorators",
"canonicalUrl": "https://typespec.io/docs/libraries/openapi/reference/decorators/",
"score": {
"exactSymbol": 0,
"patternCategory": 3,
"servicePlane": 2,
"changeContext": 1,
"total": 6
},
"selectionRationale": "Matches the removed OpenAPI-specific decorators."
},
{
"rank": 15,
"catalogOrder": 27,
"title": "Change provider namespace",
"canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/arm/change-provider-namespace/",
"score": {
"exactSymbol": 0,
"patternCategory": 3,
"servicePlane": 2,
"changeContext": 1,
"total": 6
},
"selectionRationale": "Matches ARM decorators but not a namespace change."
},
{
"rank": 16,
"catalogOrder": 28,
"title": "Azure Portal default experiences",
"canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/azure-portal/default-experiences/",
"score": {
"exactSymbol": 0,
"patternCategory": 3,
"servicePlane": 2,
"changeContext": 1,
"total": 6
},
"selectionRationale": "Matches ARM decorators but not portal behavior."
},
{
"rank": 17,
"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": 3,
"servicePlane": 2,
"changeContext": 0,
"total": 5
},
"selectionRationale": "Matches preview versioning generally, but no version was added."
},
{
"rank": 18,
"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": 0,
"total": 5
},
"selectionRationale": "Matches versioning generally, but no stable version was added."
},
{
"rank": 19,
"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": 3,
"servicePlane": 2,
"changeContext": 0,
"total": 5
},
"selectionRationale": "Matches versioning generally, but no preview version was added."
},
{
"rank": 20,
"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": 3,
"servicePlane": 2,
"changeContext": 0,
"total": 5
},
"selectionRationale": "Matches versioning generally, but no stable version was added."
},
{
"rank": 21,
"catalogOrder": 29,
"title": "Content negotiation",
"canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/azure-core/content-negotiation/",
"score": {
"exactSymbol": 0,
"patternCategory": 3,
"servicePlane": 0,
"changeContext": 1,
"total": 4
},
"selectionRationale": "Matches decorators and operations but not content negotiation."
},
{
"rank": 22,
"catalogOrder": 2,
"title": "Versioning overview",
"canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/versioning/01-about-versioning/",
"score": {
"exactSymbol": 0,
"patternCategory": 0,
"servicePlane": 2,
"changeContext": 1,
"total": 3
},
"selectionRationale": "Provides general versioning context but no change-specific construct."
},
{
"rank": 23,
"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": 2,
"changeContext": 0,
"total": 2
},
"selectionRationale": "ARM guidance without a matching extension-resource change."
},
{
"rank": 24,
"catalogOrder": 9,
"title": "Private endpoints",
"canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/arm/private-endpoints/",
"score": {
"exactSymbol": 0,
"patternCategory": 0,
"servicePlane": 2,
"changeContext": 0,
"total": 2
},
"selectionRationale": "ARM guidance without a private-endpoint change."
},
{
"rank": 25,
"catalogOrder": 10,
"title": "Private links",
"canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/arm/private-links/",
"score": {
"exactSymbol": 0,
"patternCategory": 0,
"servicePlane": 2,
"changeContext": 0,
"total": 2
},
"selectionRationale": "ARM guidance without a private-link change."
},
{
"rank": 26,
"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": 2,
"changeContext": 0,
"total": 2
},
"selectionRationale": "ARM guidance without a perimeter change."
},
{
"rank": 27,
"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": 2,
"changeContext": 0,
"total": 2
},
"selectionRationale": "ARM guidance without a paging-parameter change."
},
{
"rank": 28,
"catalogOrder": 22,
"title": "Enums",
"canonicalUrl": "https://typespec.io/docs/language-basics/enums/",
"score": {
"exactSymbol": 0,
"patternCategory": 0,
"servicePlane": 2,
"changeContext": 0,
"total": 2
},
"selectionRationale": "General ARM-applicable guidance; no enum declaration changed."
},
{
"rank": 29,
"catalogOrder": 23,
"title": "Scalars",
"canonicalUrl": "https://typespec.io/docs/language-basics/scalars/",
"score": {
"exactSymbol": 0,
"patternCategory": 0,
"servicePlane": 2,
"changeContext": 0,
"total": 2
},
"selectionRationale": "General ARM-applicable scalar guidance."
},
{
"rank": 30,
"catalogOrder": 30,
"title": "Directives",
"canonicalUrl": "https://typespec.io/docs/language-basics/directives/",
"score": {
"exactSymbol": 0,
"patternCategory": 0,
"servicePlane": 2,
"changeContext": 0,
"total": 2
},
"selectionRationale": "General ARM-applicable guidance; the suppression was removed."
},
{
"rank": 31,
"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": "No data-plane paging construct changed."
}
],
"documents": [
{
"rank": 1,
"catalogOrder": 16,
"title": "ARM long-running operations",
"canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/arm/long-running-operations/",
"score": {
"exactSymbol": 4,
"patternCategory": 3,
"servicePlane": 2,
"changeContext": 1,
"total": 10
},
"selectionRationale": "Matches the changed Location-based ARM LRO behavior and headers.",
"guidance": [
{
"section": "ARM long-running operation templates",
"excerpt": "ARM long-running (asynchronous) operation templates allow you to customize the LRO headers returned in the initial response, while retaining the correct `finalResult` value that matches the result of the operation.",
"queryTerms": [
"LRO",
"Location",
"finalResult"
],
"examples": [],
"applicableDeclarationIds": [
"declaration-2caa7e8c582fa254",
"declaration-342190062fe21bef",
"declaration-42d22d744dbadac0",
"declaration-462b286c48e80b14",
"declaration-4e6785e3fd6c14b6",
"declaration-51f8321feaf63705",
"declaration-6772621d58825c99",
"declaration-6ed9fe17dabb3ec4",
"declaration-7223dd2c6f662e8e",
"declaration-76f31b8a81dcb8e5",
"declaration-99e7eb4caeecae4f",
"declaration-a6040788c889759b",
"declaration-b724ffb86d553126",
"declaration-b83be927db86cf01",
"declaration-bb6863688e9f4caf",
"declaration-d4a1b51bd36bdcc3",
"declaration-d7d34ee7cb83cb00",
"declaration-f449301f3ea800f9"
]
}
],
"noRelevantGuidance": false,
"retrievedAt": "2026-09-17T11:24:44.6744090Z",
"contentHash": "sha256:42a192158c0c8d74ae55c56fc6a7651f5e6a05b51f93fad4d0191da1b0156a09"
},
{
"rank": 2,
"catalogOrder": 31,
"title": "Azure Core `no-openapi` rule",
"canonicalUrl": "https://azure.github.io/typespec-azure/docs/libraries/azure-core/rules/no-openapi/",
"score": {
"exactSymbol": 4,
"patternCategory": 3,
"servicePlane": 2,
"changeContext": 1,
"total": 10
},
"selectionRationale": "Matches the removed no-openapi suppressions and raw OpenAPI extensions.",
"guidance": [
{
"section": "Azure Core no-openapi rule",
"excerpt": "Raw OpenAPI decorators change the OpenAPI output without informing other emitters such as SDKs, so SDKs can misrepresent the wire API.",
"queryTerms": [
"no-openapi",
"@extension",
"SDK"
],
"examples": [],
"applicableDeclarationIds": [
"declaration-2caa7e8c582fa254",
"declaration-342190062fe21bef",
"declaration-42d22d744dbadac0",
"declaration-462b286c48e80b14",
"declaration-4e6785e3fd6c14b6",
"declaration-51f8321feaf63705",
"declaration-6772621d58825c99",
"declaration-6ed9fe17dabb3ec4",
"declaration-7223dd2c6f662e8e",
"declaration-76f31b8a81dcb8e5",
"declaration-99e7eb4caeecae4f",
"declaration-a6040788c889759b",
"declaration-b724ffb86d553126",
"declaration-b83be927db86cf01",
"declaration-bb6863688e9f4caf",
"declaration-d4a1b51bd36bdcc3",
"declaration-d7d34ee7cb83cb00",
"declaration-f449301f3ea800f9"
]
}
],
"noRelevantGuidance": false,
"retrievedAt": "2026-09-17T11:24:44.6744090Z",
"contentHash": "sha256:18cd1660fb248b4b76429a36b980f82e61e9e2631e28856e18c5c49ff49eac2e"
},
{
"rank": 3,
"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": "Governs behavior-changing modifications to an existing versioned ARM API.",
"guidance": [
{
"section": "Evolving APIs",
"excerpt": "Versioning allows you to evolve your API without breaking existing clients. By using versioning decorators, you can specify when resources, operations, or properties are added, removed, or changed.",
"queryTerms": [
"versioning",
"operations",
"existing clients"
],
"examples": [],
"applicableDeclarationIds": [
"declaration-2caa7e8c582fa254",
"declaration-342190062fe21bef",
"declaration-42d22d744dbadac0",
"declaration-462b286c48e80b14",
"declaration-4e6785e3fd6c14b6",
"declaration-51f8321feaf63705",
"declaration-6772621d58825c99",
"declaration-6ed9fe17dabb3ec4",
"declaration-7223dd2c6f662e8e",
"declaration-76f31b8a81dcb8e5",
"declaration-99e7eb4caeecae4f",
"declaration-a6040788c889759b",
"declaration-b724ffb86d553126",
"declaration-b83be927db86cf01",
"declaration-bb6863688e9f4caf",
"declaration-d4a1b51bd36bdcc3",
"declaration-d7d34ee7cb83cb00",
"declaration-f449301f3ea800f9"
]
}
],
"noRelevantGuidance": false,
"retrievedAt": "2026-09-17T11:24:44.6744090Z",
"contentHash": "sha256:5faf5fd80807690729c00dab44ebcfa1d698166dfb0caefc516bdf325fcfd630"
},
{
"rank": 4,
"catalogOrder": 7,
"title": "ARM resource types and modeling",
"canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/arm/resource-type/",
"score": {
"exactSymbol": 0,
"patternCategory": 3,
"servicePlane": 2,
"changeContext": 1,
"total": 6
},
"selectionRationale": "Matches ARM resource identifiers, models, and properties.",
"guidance": [
{
"section": "Resource modeling",
"excerpt": "Resources are modeled in TypeSpec by choosing a base resource type, defining rp-specific properties, and optionally mixing in standard envelope properties.",
"queryTerms": [
"resource",
"model",
"properties"
],
"examples": [],
"applicableDeclarationIds": [
"declaration-093010d621963a62",
"declaration-2e1900676b35bd4f",
"declaration-456c2aa54f019a46",
"declaration-4cc91b5c06fd7a4d",
"declaration-60ebf3b787a982bd",
"declaration-75b41b9222358fbd",
"declaration-8ce42704b5b649ae",
"declaration-c7e26d0e1780a407",
"declaration-f1e636e2050f7207"
]
}
],
"noRelevantGuidance": false,
"retrievedAt": "2026-09-17T11:24:44.6744090Z",
"contentHash": "sha256:ef06cc8c4ff5460ec25618308b77dd9e6185723b60b3ab2badaccdffce78baca"
}
]
},
"intentAssessments": [
{
"semanticIntentId": "semantic-60ce39fe11fc0e5e",
"decision": "no-applicable-guidance",
"blockers": []
},
{
"semanticIntentId": "semantic-817ce31481ec83c7",
"decision": "no-applicable-guidance",
"blockers": []
},
{
"semanticIntentId": "semantic-f390441d62829acb",
"decision": "applicable-fail",
"blockers": []
}
],
"retrievalFailures": [],
"blockers": []
}Changed files
specification/chaos/resource-manager/Microsoft.Chaos/Chaos/client.tsp(committed)specification/chaos/resource-manager/Microsoft.Chaos/Chaos/lro-helpers.tsp(committed)specification/chaos/resource-manager/Microsoft.Chaos/Chaos/scenarioConfiguration.models.tsp(committed)specification/chaos/resource-manager/Microsoft.Chaos/Chaos/scenarioConfiguration.tsp(committed)specification/chaos/resource-manager/Microsoft.Chaos/Chaos/scenarioRun.models.tsp(committed)specification/chaos/resource-manager/Microsoft.Chaos/Chaos/scenarioRun.tsp(committed)specification/chaos/resource-manager/Microsoft.Chaos/Chaos/workspace.tsp(committed)specification/chaos/resource-manager/Microsoft.Chaos/Chaos/workspaceEvaluation.models.tsp(committed)
Timing and model input
{
"timings": {
"metadataMs": 929,
"fetchMs": 141,
"scopeDiscoveryMs": 70,
"setupExcludingFetchMs": 5715,
"comparisonMs": 123,
"changeDiscoveryMs": 78,
"workspacePreparationMs": 4248,
"projectDiscoveryMs": 67,
"totalMs": 102650,
"semanticAnalysisMs": 2669,
"restAnalysisMs": 37,
"downstreamAnalysisMs": 27,
"documentQualityAnalysisMs": 1
},
"inputAccounting": {
"budgetTier": "small",
"budgetBytes": 131072,
"bytes": 83874,
"estimatedTokens": 20969,
"retained": {
"evidenceSets": 17,
"facts": 26,
"semanticReviewUnits": 3,
"restCandidates": 0,
"downstreamCandidates": 16,
"downstreamRootCauses": 12,
"complianceSearchRequests": 3,
"inferenceRequests": 2
},
"omittedRedundant": {
"rawEmitterArtifacts": true,
"compilerLogs": true,
"unchangedInventories": true,
"unreferencedFacts": true,
"unreferencedDeterministicFacts": true,
"sourceChanges": true,
"repeatedDeclarationIds": true,
"repeatedReviewUnitEvidence": true
},
"inference": {
"requestCount": 2,
"inferredCandidateCount": 15,
"noImpactCount": 0,
"blockedCount": 0
},
"compliance": {
"catalogEntriesScored": 31,
"documentsFetched": 4,
"documentBytesFetched": 700,
"guidanceExcerptsRetained": 4,
"guidanceExcerptBytesRetained": 700
}
}
}
Provenance: model-input.json, dimensions/document-quality-input.json, inference.json, compliance-search-evidence.json, assessment-judgment.json, preparation-manifest.json