Skip to content

fix(core): respect off severity in intermediate rulesets#2890

Merged
tomek-tursa-sb merged 4 commits into
stoplightio:developfrom
jurijat:fix/respect-off-severity-in-intermediate-rulesets
Mar 11, 2026
Merged

fix(core): respect off severity in intermediate rulesets#2890
tomek-tursa-sb merged 4 commits into
stoplightio:developfrom
jurijat:fix/respect-off-severity-in-intermediate-rulesets

Conversation

@jurijat

@jurijat jurijat commented Feb 12, 2026

Copy link
Copy Markdown
Contributor

Fixes #2889.

Checklist

  • Tests added / updated
  • Docs added / updated

Does this PR introduce a breaking change?

  • Yes
  • No

If indicated yes above, please describe the breaking change(s).

Before the fix:

const parent = {
  extends: [[oas, 'off']],
  rules: { 'some-rule': true }  // Re-enables rule
};

const child = {
  extends: [[parent, 'off']]  // BUG: 'some-rule' stayed enabled
};

After the fix: Same code, but now some-rule is correctly disabled

Additional context

  • Fixed bug where extends: [[ruleset, "off"]] did not disable rules that were explicitly re-enabled in intermediate rulesets
  • Added severity filtering for inherited rules when explicit severity modifier is used
  • Documentation was not edited, as it was already correct.

Test plan

  • Added 6 new test cases covering:
    • Deep nesting (4 levels with 'off')
    • Mixed severity modifiers followed by 'off'
    • Object rule modifications followed by 'off'
    • Non-recommended rules enabled then disabled by 'off'
    • Child re-enabling rules after extending with 'off'
    • Original bug scenario with intermediate rule enable

@jurijat jurijat requested a review from a team as a code owner February 12, 2026 16:50
@pavelkornev

Copy link
Copy Markdown
Contributor

@tomek-tursa-sb could you please review and merge? This bug is critical for us.

@tomek-tursa-sb

Copy link
Copy Markdown
Contributor

@jurijat good job on this one. Thank you for this cntribution! 💪

@tomek-tursa-sb tomek-tursa-sb merged commit 5b99b99 into stoplightio:develop Mar 11, 2026
8 checks passed
@pavelkornev

Copy link
Copy Markdown
Contributor

@tomek-tursa-sb when do you plan to release this fix?

@barryadk

Copy link
Copy Markdown

@pavelkornev - we plan to create a release next week that will include this fix.

stoplight-bot pushed a commit that referenced this pull request Apr 13, 2026
## [6.15.1](https://github.com/stoplightio/spectral/compare/@stoplight/spectral-cli-6.15.0...@stoplight/spectral-cli-6.15.1) (2026-04-13)

### Bug Fixes

* **cli:** fix bug where output gets truncated when too long ([#2862](#2862)) ([0e6fd33](0e6fd33))
* **cli:** throw error if no file found to lint ([#2778](#2778)) ([3e20072](3e20072))
* **core:** fix security issue of simple-eval package  ([#2886](#2886)) ([8120a76](8120a76))
* **core:** respect off severity in intermediate rulesets ([#2890](#2890)) ([5b99b99](5b99b99))
* **formatters:** Fix rendering of github actions documentationUrl ([#2895](#2895)) ([df27b06](df27b06))
* **formatters:** markdown formatter with invalid-ref crashes spectral ([#2905](#2905)) ([59728e4](59728e4))
* **functions:** export or function ([#2812](#2812)) ([03532a5](03532a5))
* **repo:** release step marking repo as save for git ([#2884](#2884)) ([87147a6](87147a6))
* **repo:** remove acceptance step on release ([#2882](#2882)) ([73496c6](73496c6))
* **ruleset-migrator:** fix ruleset migrator output when a rule name contains '/' ([#2859](#2859)) ([115d1d0](115d1d0))
* **rulesets:** use uri-reference for openIdConnectUrl ([#2796](#2796)) ([c57eb59](c57eb59))

### Features

* **core:** allow extending rulesets with aliases ([#2870](#2870)) ([8db9718](8db9718))
* **core:** further adjustments for extending rulesets with aliases ([#2939](#2939)) ([26144bc](26144bc))
* **repo:** circleci migration to GHA (OP-35885) ([#2867](#2867)) ([884f079](884f079))
* **repo:** npm release workflow as gha ([#2880](#2880)) ([0147d6e](0147d6e))
* **repo:** post develop merge workflow ([#2877](#2877)) ([9420713](9420713))
* **repo:** replace skypack usage with esm cdn ([#2940](#2940)) ([0d6a910](0d6a910))
stoplight-bot pushed a commit that referenced this pull request Apr 13, 2026
# [1.22.0](https://github.com/stoplightio/spectral/compare/@stoplight/spectral-core-1.21.0...@stoplight/spectral-core-1.22.0) (2026-04-13)

### Bug Fixes

* **cli:** fix bug where output gets truncated when too long ([#2862](#2862)) ([0e6fd33](0e6fd33))
* **cli:** throw error if no file found to lint ([#2778](#2778)) ([3e20072](3e20072))
* **core:** fix security issue of simple-eval package  ([#2886](#2886)) ([8120a76](8120a76))
* **core:** respect off severity in intermediate rulesets ([#2890](#2890)) ([5b99b99](5b99b99))
* **formatters:** Fix rendering of github actions documentationUrl ([#2895](#2895)) ([df27b06](df27b06))
* **formatters:** markdown formatter with invalid-ref crashes spectral ([#2905](#2905)) ([59728e4](59728e4))
* **rulesets:** use uri-reference for openIdConnectUrl ([#2796](#2796)) ([c57eb59](c57eb59))

### Features

* **core:** further adjustments for extending rulesets with aliases ([#2939](#2939)) ([26144bc](26144bc))
* **repo:** replace skypack usage with esm cdn ([#2940](#2940)) ([0d6a910](0d6a910))
stoplight-bot pushed a commit that referenced this pull request Apr 13, 2026
## [1.5.1](https://github.com/stoplightio/spectral/compare/@stoplight/spectral-formatters-1.5.0...@stoplight/spectral-formatters-1.5.1) (2026-04-13)

### Bug Fixes

* **cli:** fix bug where output gets truncated when too long ([#2862](#2862)) ([0e6fd33](0e6fd33))
* **cli:** throw error if no file found to lint ([#2778](#2778)) ([3e20072](3e20072))
* **core:** fix security issue of simple-eval package  ([#2886](#2886)) ([8120a76](8120a76))
* **core:** respect off severity in intermediate rulesets ([#2890](#2890)) ([5b99b99](5b99b99))
* **formatters:** Fix rendering of github actions documentationUrl ([#2895](#2895)) ([df27b06](df27b06))
* **formatters:** markdown formatter with invalid-ref crashes spectral ([#2905](#2905)) ([59728e4](59728e4))
* **functions:** export or function ([#2812](#2812)) ([03532a5](03532a5))
* **repo:** release step marking repo as save for git ([#2884](#2884)) ([87147a6](87147a6))
* **repo:** remove acceptance step on release ([#2882](#2882)) ([73496c6](73496c6))
* **ruleset-migrator:** fix ruleset migrator output when a rule name contains '/' ([#2859](#2859)) ([115d1d0](115d1d0))
* **rulesets:** use uri-reference for openIdConnectUrl ([#2796](#2796)) ([c57eb59](c57eb59))

### Features

* **core:** allow extending rulesets with aliases ([#2870](#2870)) ([8db9718](8db9718))
* **core:** further adjustments for extending rulesets with aliases ([#2939](#2939)) ([26144bc](26144bc))
* **repo:** circleci migration to GHA (OP-35885) ([#2867](#2867)) ([884f079](884f079))
* **repo:** npm release workflow as gha ([#2880](#2880)) ([0147d6e](0147d6e))
* **repo:** post develop merge workflow ([#2877](#2877)) ([9420713](9420713))
* **repo:** replace skypack usage with esm cdn ([#2940](#2940)) ([0d6a910](0d6a910))
stoplight-bot pushed a commit that referenced this pull request Apr 13, 2026
# [1.12.0](https://github.com/stoplightio/spectral/compare/@stoplight/spectral-ruleset-migrator-1.11.3...@stoplight/spectral-ruleset-migrator-1.12.0) (2026-04-13)

### Bug Fixes

* **cli:** fix bug where output gets truncated when too long ([#2862](#2862)) ([0e6fd33](0e6fd33))
* **cli:** throw error if no file found to lint ([#2778](#2778)) ([3e20072](3e20072))
* **core:** fix security issue of simple-eval package  ([#2886](#2886)) ([8120a76](8120a76))
* **core:** respect off severity in intermediate rulesets ([#2890](#2890)) ([5b99b99](5b99b99))
* **formatters:** Fix rendering of github actions documentationUrl ([#2895](#2895)) ([df27b06](df27b06))
* **formatters:** markdown formatter with invalid-ref crashes spectral ([#2905](#2905)) ([59728e4](59728e4))
* **repo:** release step marking repo as save for git ([#2884](#2884)) ([87147a6](87147a6))
* **repo:** remove acceptance step on release ([#2882](#2882)) ([73496c6](73496c6))
* **rulesets:** use uri-reference for openIdConnectUrl ([#2796](#2796)) ([c57eb59](c57eb59))

### Features

* **core:** allow extending rulesets with aliases ([#2870](#2870)) ([8db9718](8db9718))
* **core:** further adjustments for extending rulesets with aliases ([#2939](#2939)) ([26144bc](26144bc))
* **repo:** circleci migration to GHA (OP-35885) ([#2867](#2867)) ([884f079](884f079))
* **repo:** npm release workflow as gha ([#2880](#2880)) ([0147d6e](0147d6e))
* **repo:** post develop merge workflow ([#2877](#2877)) ([9420713](9420713))
* **repo:** replace skypack usage with esm cdn ([#2940](#2940)) ([0d6a910](0d6a910))
stoplight-bot pushed a commit that referenced this pull request Apr 13, 2026
## [1.22.1](https://github.com/stoplightio/spectral/compare/@stoplight/spectral-rulesets-1.22.0...@stoplight/spectral-rulesets-1.22.1) (2026-04-13)

### Bug Fixes

* **cli:** fix bug where output gets truncated when too long ([#2862](#2862)) ([0e6fd33](0e6fd33))
* **cli:** throw error if no file found to lint ([#2778](#2778)) ([3e20072](3e20072))
* **core:** fix security issue of simple-eval package  ([#2886](#2886)) ([8120a76](8120a76))
* **core:** respect off severity in intermediate rulesets ([#2890](#2890)) ([5b99b99](5b99b99))
* **formatters:** Fix rendering of github actions documentationUrl ([#2895](#2895)) ([df27b06](df27b06))
* **formatters:** markdown formatter with invalid-ref crashes spectral ([#2905](#2905)) ([59728e4](59728e4))
* **functions:** export or function ([#2812](#2812)) ([03532a5](03532a5))
* **repo:** release step marking repo as save for git ([#2884](#2884)) ([87147a6](87147a6))
* **repo:** remove acceptance step on release ([#2882](#2882)) ([73496c6](73496c6))
* **ruleset-migrator:** fix ruleset migrator output when a rule name contains '/' ([#2859](#2859)) ([115d1d0](115d1d0))
* **rulesets:** use uri-reference for openIdConnectUrl ([#2796](#2796)) ([c57eb59](c57eb59))

### Features

* **core:** allow extending rulesets with aliases ([#2870](#2870)) ([8db9718](8db9718))
* **core:** further adjustments for extending rulesets with aliases ([#2939](#2939)) ([26144bc](26144bc))
* **repo:** circleci migration to GHA (OP-35885) ([#2867](#2867)) ([884f079](884f079))
* **repo:** npm release workflow as gha ([#2880](#2880)) ([0147d6e](0147d6e))
* **repo:** post develop merge workflow ([#2877](#2877)) ([9420713](9420713))
* **repo:** replace skypack usage with esm cdn ([#2940](#2940)) ([0d6a910](0d6a910))
@stoplight-bot

Copy link
Copy Markdown
Collaborator

🎉 This PR is included in version 1.22.0 🎉

The release is available on @stoplight/spectral-core-1.22.0

Your semantic-release bot 📦🚀

stoplight-bot pushed a commit that referenced this pull request Apr 14, 2026
## [1.1.5](https://github.com/stoplightio/spectral/compare/@stoplight/spectral-runtime-1.1.4...@stoplight/spectral-runtime-1.1.5) (2026-04-14)

### Bug Fixes

* **cli:** fix bug where output gets truncated when too long ([#2862](#2862)) ([0e6fd33](0e6fd33))
* **cli:** throw error if no file found to lint ([#2778](#2778)) ([3e20072](3e20072))
* **core:** fix security issue of simple-eval package  ([#2886](#2886)) ([8120a76](8120a76))
* **core:** respect off severity in intermediate rulesets ([#2890](#2890)) ([5b99b99](5b99b99))
* **deps:** bump elliptic from 6.6.0 to 6.6.1 ([#2782](#2782)) ([5ff9602](5ff9602))
* **deps:** fix yarn lockfile ([e6c3b9d](e6c3b9d))
* **deps:** post lodash update changes for semantic release ([#2942](#2942)) ([bf530dd](bf530dd))
* **deps:** update spectral-core in cli ([35687cd](35687cd))
* **formatters:** Fix rendering of github actions documentationUrl ([#2895](#2895)) ([df27b06](df27b06))
* **formatters:** markdown formatter with invalid-ref crashes spectral ([#2905](#2905)) ([59728e4](59728e4))
* **functions:** export or function ([#2812](#2812)) ([03532a5](03532a5))
* **repo:** release step marking repo as save for git ([#2884](#2884)) ([87147a6](87147a6))
* **repo:** remove acceptance step on release ([#2882](#2882)) ([73496c6](73496c6))
* **repo:** replace discord link with forum link ([#2793](#2793)) ([6229442](6229442))
* **ruleset-migrator:** fix ruleset migrator output when a rule name contains '/' ([#2859](#2859)) ([115d1d0](115d1d0))
* **rulesets:** use uri-reference for openIdConnectUrl ([#2796](#2796)) ([c57eb59](c57eb59))

### Features

* **core:** add documentUrl to JS api and cli formatters ([#2443](#2443)) ([e787728](e787728))
* **core:** allow extending rulesets with aliases ([#2870](#2870)) ([8db9718](8db9718))
* **core:** further adjustments for extending rulesets with aliases ([#2939](#2939)) ([26144bc](26144bc))
* **functions:** add or function ([#2798](#2798)) ([d9ef27f](d9ef27f))
* **repo:** circleci migration to GHA (OP-35885) ([#2867](#2867)) ([884f079](884f079))
* **repo:** npm release workflow as gha ([#2880](#2880)) ([0147d6e](0147d6e))
* **repo:** post develop merge workflow ([#2877](#2877)) ([9420713](9420713))
* **repo:** replace skypack usage with esm cdn ([#2940](#2940)) ([0d6a910](0d6a910))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Using extends with property off does not work as expected

5 participants