Skip to content

Add resource-manager-suppression-required ruleset#4654

Open
markcowl wants to merge 1 commit into
mainfrom
markcowl/add-resource-manager-suppression-required-ruleset
Open

Add resource-manager-suppression-required ruleset#4654
markcowl wants to merge 1 commit into
mainfrom
markcowl/add-resource-manager-suppression-required-ruleset

Conversation

@markcowl

Copy link
Copy Markdown
Member

Summary

Adds a new
esource-manager-suppression-required\ ruleset to @azure-tools/typespec-azure-rulesets. This ruleset is based on the existing
esource-manager\ ruleset but disables rules that require explicit suppression rather than being enforced by default.

Disabled rules in the new ruleset:

  • @azure-tools/typespec-azure-core/operation-missing-api-version\
  • @azure-tools/typespec-azure-core/auth-required\
  • @azure-tools/typespec-azure-resource-manager/arm-no-record\
  • @azure-tools/typespec-azure-resource-manager/arm-delete-operation-response-codes\
  • @azure-tools/typespec-azure-resource-manager/arm-put-operation-response-codes\
  • @azure-tools/typespec-azure-resource-manager/arm-post-operation-response-codes\
  • @azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property\
  • @azure-tools/typespec-azure-resource-manager/arm-resource-name-pattern\
  • @azure-tools/typespec-azure-resource-manager/arm-resource-provisioning-state\
  • @azure-tools/typespec-azure-resource-manager/beyond-nesting-levels\
  • @azure-tools/typespec-azure-resource-manager/lro-location-header\
  • @azure-tools/typespec-azure-resource-manager/missing-x-ms-identifiers\
  • @azure-tools/typespec-azure-resource-manager/no-resource-delete-operation\
  • @azure-tools/typespec-azure-resource-manager/patch-envelope\
  • @azure-tools/typespec-azure-resource-manager/arm-resource-interface-requires-decorator\
  • @azure-tools/typespec-azure-resource-manager/improper-subscription-list-operation\
  • @azure-tools/typespec-azure-resource-manager/missing-operations-endpoint\
  • @azure-tools/typespec-azure-resource-manager/retry-after\
  • @azure-tools/typespec-azure-resource-manager/secret-prop\

Changes:

  • New file: \src/rulesets/resource-manager-suppression-required.ts\
  • Updated \src/index.ts\ to register the new ruleset
  • Updated tests to validate the new ruleset
  • Regenerated docs (README.md, linter reference)
  • Added changeset

Add a new ruleset based on resource-manager that disables rules which
require explicit suppression rather than being enforced by default.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@azure-sdk-automation

Copy link
Copy Markdown
Contributor

All changed packages have been documented.

  • @azure-tools/typespec-azure-rulesets
Show changes

@azure-tools/typespec-azure-rulesets - feature ✏️

Add new resource-manager-suppression-required ruleset based on the resource-manager ruleset with select rules disabled that require explicit suppression.

@pkg-pr-new

pkg-pr-new Bot commented Jun 18, 2026

Copy link
Copy Markdown

Open in StackBlitz

npm i https://pkg.pr.new/@azure-tools/typespec-azure-rulesets@4654

commit: 551f1b6

@github-actions

Copy link
Copy Markdown
Contributor

⚡ Benchmark Results

⚠️ 3 metric(s) regressed above the +5% threshold:

Metric Baseline Current Change
loader 🟢 155.8ms 🟢 187.4ms +20.3% 🔴
 ↳ emit/@typespec/http-client-js 🔴 1.11s 🔴 1.19s +7.3% 🔴
 ↳ emit/@typespec/openapi3/write 🟢 18.3ms 🟢 19.8ms +8.2% 🔴
Full details – comparing 5ab0eb3 vs baseline 40aa6fc
Metric Baseline Current Change
total 🔴 587.5ms 🔴 558.3ms -5.0%
loader 🟢 155.8ms 🟢 187.4ms +20.3% 🔴
resolver 🟢 18.5ms 🟢 18.5ms +0.3%
checker 🟢 181.7ms 🟢 181.5ms -0.1%
validation 🟢 41.5ms 🟢 43.1ms +4.0%
 ↳ validation/@azure-tools/typespec-azure-core 🟢 5.9ms 🟢 6.4ms +8.3%
 ↳ validation/@typespec/http 🟢 5.0ms 🟢 5.4ms +6.6%
 ↳ validation/@typespec/rest 🟢 0.6ms 🟢 0.6ms +8.4%
 ↳ validation/@typespec/versioning 🔴 28.0ms 🔴 28.7ms +2.8%
 ↳ validation/compiler 🟢 1.5ms 🟢 1.6ms +6.2%
linter 🟢 131.7ms 🟢 128.3ms -2.6%
 ↳ linter/@azure-tools/typespec-azure-core/auth-required 🟢 0.0ms 🟢 0.0ms -2.6%
 ↳ linter/@azure-tools/typespec-azure-core/bad-record-type 🟢 0.2ms 🟢 0.2ms -2.9%
 ↳ linter/@azure-tools/typespec-azure-core/byos 🟢 5.9ms 🟢 5.4ms -8.7%
 ↳ linter/@azure-tools/typespec-azure-core/casing-style 🟢 0.6ms 🟢 0.6ms +1.7%
 ↳ linter/@azure-tools/typespec-azure-core/composition-over-inheritance 🟢 0.1ms 🟢 0.1ms -5.1%
 ↳ linter/@azure-tools/typespec-azure-core/documentation-required 🟢 0.8ms 🟢 0.8ms +1.5%
 ↳ linter/@azure-tools/typespec-azure-core/friendly-name 🟢 0.6ms 🟢 0.6ms -5.2%
 ↳ linter/@azure-tools/typespec-azure-core/key-visibility-required 🟢 0.2ms 🟢 0.2ms -3.9%
 ↳ linter/@azure-tools/typespec-azure-core/known-encoding 🟢 0.3ms 🟢 0.3ms -0.9%
 ↳ linter/@azure-tools/typespec-azure-core/long-running-polling-operation-required 🟢 0.3ms 🟢 0.3ms +2.7%
 ↳ linter/@azure-tools/typespec-azure-core/no-case-mismatch 🟢 0.2ms 🟢 0.2ms -8.9%
 ↳ linter/@azure-tools/typespec-azure-core/no-closed-literal-union 🟢 0.2ms 🟢 0.3ms +0.5%
 ↳ linter/@azure-tools/typespec-azure-core/no-enum 🟢 0.1ms 🟢 0.0ms -20.8%
 ↳ linter/@azure-tools/typespec-azure-core/no-error-status-codes 🟢 0.1ms 🟢 0.1ms +3.1%
 ↳ linter/@azure-tools/typespec-azure-core/no-explicit-routes-resource-ops 🟢 0.1ms 🟢 0.1ms -1.4%
 ↳ linter/@azure-tools/typespec-azure-core/no-format 🟢 0.6ms 🟢 0.6ms +1.2%
 ↳ linter/@azure-tools/typespec-azure-core/no-generic-numeric 🟢 0.4ms 🟢 0.4ms -2.5%
 ↳ linter/@azure-tools/typespec-azure-core/no-header-explode 🟡 18.2ms 🟡 18.9ms +4.3%
 ↳ linter/@azure-tools/typespec-azure-core/no-legacy-usage 🟢 1.1ms 🟢 1.1ms -2.9%
 ↳ linter/@azure-tools/typespec-azure-core/no-multiple-discriminator 🟢 0.1ms 🟢 0.1ms -7.7%
 ↳ linter/@azure-tools/typespec-azure-core/no-nullable 🟢 0.2ms 🟢 0.2ms -3.5%
 ↳ linter/@azure-tools/typespec-azure-core/no-offsetdatetime 🟢 1.2ms 🟢 1.1ms -3.7%
 ↳ linter/@azure-tools/typespec-azure-core/no-openapi 🟢 2.0ms 🟢 1.9ms -2.3%
 ↳ linter/@azure-tools/typespec-azure-core/no-private-usage 🟢 1.9ms 🟢 1.9ms -2.8%
 ↳ linter/@azure-tools/typespec-azure-core/no-query-explode 🟡 19.4ms 🟡 18.1ms -6.8% 🟢
 ↳ linter/@azure-tools/typespec-azure-core/no-response-body 🔴 23.0ms 🔴 22.8ms -0.8%
 ↳ linter/@azure-tools/typespec-azure-core/no-rest-library-interfaces 🟢 0.0ms 🟢 0.0ms +1.5%
 ↳ linter/@azure-tools/typespec-azure-core/no-route-parameter-name-mismatch 🟢 4.6ms 🟢 4.5ms -2.6%
 ↳ linter/@azure-tools/typespec-azure-core/no-rpc-path-params 🟢 0.2ms 🟢 0.2ms -6.3%
 ↳ linter/@azure-tools/typespec-azure-core/no-string-discriminator 🟢 0.0ms 🟢 0.0ms -7.0%
 ↳ linter/@azure-tools/typespec-azure-core/no-unknown 🟢 0.2ms 🟢 0.2ms +0.8%
 ↳ linter/@azure-tools/typespec-azure-core/no-unnamed-union 🟢 0.3ms 🟢 0.3ms +1.8%
 ↳ linter/@azure-tools/typespec-azure-core/operation-missing-api-version 🟢 0.2ms 🟢 0.2ms +1.5%
 ↳ linter/@azure-tools/typespec-azure-core/request-body-problem 🟢 0.3ms 🟢 0.3ms +3.0%
 ↳ linter/@azure-tools/typespec-azure-core/require-versioned 🟢 0.0ms 🟢 0.0ms +6.1%
 ↳ linter/@azure-tools/typespec-azure-core/response-schema-problem 🔴 21.4ms 🔴 21.6ms +0.7%
 ↳ linter/@azure-tools/typespec-azure-core/rpc-operation-request-body 🟢 0.3ms 🟢 0.3ms -2.0%
 ↳ linter/@azure-tools/typespec-azure-core/spread-discriminated-model 🟢 0.3ms 🟢 0.3ms +1.7%
 ↳ linter/@azure-tools/typespec-azure-core/use-standard-names 🟢 4.7ms 🟢 4.9ms +4.9%
 ↳ linter/@azure-tools/typespec-azure-core/use-standard-operations 🟢 0.1ms 🟢 0.1ms -5.1%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-agent-base-type-child-resources 🟢 3.9ms 🟢 3.9ms -1.0%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-agent-base-type-lifecycle-operations 🟢 0.0ms 🟢 0.0ms -8.0%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-common-types-version 🟢 3.7ms 🟢 3.7ms -0.9%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-custom-resource-no-key 🟢 0.1ms 🟢 0.1ms -13.9%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-custom-resource-usage-discourage 🟢 0.1ms 🟢 0.1ms -2.2%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-delete-operation-response-codes 🟢 1.0ms 🟢 1.0ms -6.2%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-no-path-casing-conflicts 🟢 4.1ms 🟢 4.0ms -3.7%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-no-record 🟢 0.4ms 🟢 0.3ms -5.0%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-post-operation-response-codes 🟢 0.4ms 🟢 0.4ms -6.5%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-put-operation-response-codes 🟢 0.0ms 🟢 0.0ms +2.1%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-action-no-segment 🟢 0.2ms 🟢 0.2ms +4.3%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-duplicate-property 🟢 0.1ms 🟢 0.1ms -11.8%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-interface-requires-decorator 🟢 0.0ms 🟢 0.0ms -15.8%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-action-verb 🟢 0.1ms 🟢 0.1ms -5.7%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property 🟢 0.1ms 🟢 0.1ms -0.3%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-version-format 🟢 0.0ms 🟢 0.0ms +1.7%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-key-invalid-chars 🟢 0.2ms 🟢 0.2ms +1.4%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-name-pattern 🟢 0.0ms 🟢 0.0ms -8.5%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-operation 🟢 0.2ms 🟢 0.2ms -4.9%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-operation-response 🟢 4.3ms 🟢 4.2ms -1.2%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-patch 🟢 0.3ms 🟢 0.3ms -1.6%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-path-segment-invalid-chars 🟢 0.2ms 🟢 0.2ms -3.3%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-provisioning-state 🟢 0.1ms 🟢 0.1ms -4.2%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/beyond-nesting-levels 🟢 0.1ms 🟢 0.1ms -10.0%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/empty-updateable-properties 🟢 0.2ms 🟢 0.1ms -12.9%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/improper-subscription-list-operation 🟢 0.0ms 🟢 0.0ms +6.8%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/lro-location-header 🟡 12.8ms 🟡 12.4ms -3.3%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/missing-operations-endpoint 🟢 0.0ms 🟢 0.0ms -4.8%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/missing-x-ms-identifiers 🟢 0.3ms 🟢 0.3ms -5.1%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/no-empty-model 🟢 0.1ms 🟢 0.1ms -4.1%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/no-override-props 🟢 0.1ms 🟢 0.1ms -4.6%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/no-resource-delete-operation 🟢 0.2ms 🟢 0.2ms -8.4%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/no-response-body 🔴 22.2ms 🔴 20.4ms -7.9% 🟢
 ↳ linter/@azure-tools/typespec-azure-resource-manager/patch-envelope 🟢 0.1ms 🟢 0.1ms -4.4%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/resource-name 🟢 0.1ms 🟢 0.1ms -3.7%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/secret-prop 🟢 2.4ms 🟢 2.3ms -5.6%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/unsupported-type 🟢 0.3ms 🟢 0.4ms +6.0%
 ↳ linter/@azure-tools/typespec-azure-resource-manager/version-progression 🟢 0.0ms 🟢 0.0ms -2.1%
 ↳ linter/@azure-tools/typespec-client-generator-core/property-name-conflict 🟢 1.0ms 🟢 1.0ms -1.6%
 ↳ linter/@azure-tools/typespec-client-generator-core/require-client-suffix 🟢 0.2ms 🟢 0.2ms -3.5%
emit 🔴 5.66s 🔴 5.69s +0.5%
 ↳ emit/@azure-tools/typespec-autorest 🟢 156.3ms 🟢 158.6ms +1.5%
 ↳ emit/@azure-tools/typespec-python 🔴 4.16s 🔴 4.07s -2.1%
 ↳ emit/@typespec/http-client-js 🔴 1.11s 🔴 1.19s +7.3% 🔴
 ↳ emit/@typespec/openapi3 🟢 139.5ms 🟢 144.3ms +3.4%
 ↳ emit/@typespec/openapi3/compute 🟢 121.4ms 🟢 125.0ms +3.0%
 ↳ emit/@typespec/openapi3/write 🟢 18.3ms 🟢 19.8ms +8.2% 🔴

Averaged across 3 specs (azure-arm-resource-manager, azure-core-dataplane, azure-full).
Threshold: changes > ±5% are highlighted.
🟢 Fast · 🟡 Moderate (stages >200ms, rules >10ms) · 🔴 Slow (stages >400ms, rules >20ms)

@azure-sdk-automation

Copy link
Copy Markdown
Contributor

You can try these changes here

🛝 Playground 🌐 Website

@microsoft-github-policy-service microsoft-github-policy-service Bot added the stale Mark a PR that hasn't been recently updated and will be closed. label Jul 16, 2026
@microsoft-github-policy-service

Copy link
Copy Markdown

Hi @@markcowl. Your PR has had no update for 14 days and it is marked as a stale PR. If it is not updated within 14 days, the PR will automatically be closed. If you want to refresh the PR, please remove the stale label.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

meta:website TypeSpec.io updates stale Mark a PR that hasn't been recently updated and will be closed.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants