chore(deps): update dependency errata-ai/vale to v3.20.0 #178

Open
botaniker wants to merge 1 commit from renovate/errata-ai-vale-3.x into main
Member

This PR contains the following updates:

Package Update Change OpenSSF
errata-ai/vale minor v3.18.0v3.20.0 OpenSSF Scorecard

⚠️ Warning

Some dependencies could not be looked up. Check the Dependency Dashboard for more information.


Release Notes

errata-ai/vale (errata-ai/vale)

v3.20.0

Compare Source

Vale 3.20.0 ships a set of features aimed at style authoring at library scale. Std, the new standard library, is built on all three and walks through each; Voices is the first package to consume them.

A rule can extend another rule

An extends value containing a dot names a rule rather than a check: the new rule starts from that rule's full definition and lays its own keys on top. Two styles can share one carefully built pattern and disagree only about message, level, or a handful of entries:


# styles/House/OxfordComma.yml
extends: Std.Punctuation.OxfordComma
message: 'Serial comma, always.'
level: error

Three lines, your name on the alert, the parent's machinery underneath — including every false-positive guard it ever gains. The parent has to be present on the StylesPath, not enabled: inheritance is a file reference, and vale sync is what puts the file there. A child can itself be extended, up to ten rules deep. The one thing you can't extend is a Vale.* built-in, which is generated at runtime and has no file.

A bare key replaces the parent's value outright. Lists and maps also take overlay edits:

extends: Direct.Hedging
message: "We don't hedge."
tokens+:
  - perhaps the best answer is
tokens-:
  - one could argue

key+ appends to a parent list, or merges into a parent map with the child's entries winning; key- removes entries by their source text, or the named keys from a map. Removing something the parent doesn't have is a compile error, on purpose: if upstream renames an entry your child was removing, you hear about it when the rule compiles instead of diverging silently. Writing both key and key+ in one file is refused.

A directory whose name starts with _ or . is skipped at load time but stays visible to extends, so a pattern shared by several rules can live in one file without itself becoming a rule. A fragment is validated as the chain's root, so it must carry a message — even one no alert will show.

Docs: Extending another rule

Nested rule directories

A style can organize its rules in subdirectories, and the path joins the name: Std/Grammar/PassiveVoice.yml is Std.Grammar.PassiveVoice everywhere a rule name goes — alerts, configuration, in-text comments, filters, and extends. There is no depth limit, and directories prefixed with . or _ are inert, so drafts and shared fragments can sit inside a style without loading.

Docs: Nested directories

Tune a rule's scalars from configuration

A bracketed key overrides one scalar on a rule you have enabled, keeping the rule's identity:

[*.md]
BasedOnStyles = Std

Std.Readability.SentenceLength = error
Std.Readability.SentenceLength[max] = 30

The word in brackets is the key as it appears in the rule's YAML, so any scalar a rule declares is a dial. Values coerce at compile time, and an unknown parameter fails the rule's compilation rather than being silently dropped. Structural fields — tokens, swap, message — are refused with a pointer at extending the rule in a style, which is what authoring is for; [level] is refused because the classic Style.Rule = error syntax already says that.

Docs: Parameters

Changelog
  • fdc4cc7 fix: report an occurrence shortfall at the scope that fell short
  • d978056 feat: add an apply mode to vale fix
  • 58392ff fix: honor comment directives at any indent
  • fcd23e6 feat: report per-check alert counts under --counts
  • 2545b00 docs: add contributor license agreement and PR comments
  • 9972e93 docs: add AI-Assisted Contributions
  • 33f473d ix: mask an inline element in SkippedScopes instead of dropping it
  • 03e45ee feat(spell): honor Hunspell BREAK rules
  • 29e67d2 fix(config): keep escaped commas in TokenIgnores and BlockIgnores
  • 71b13ca fix(spell): narrow COMPOUNDMIN inside its range check
  • 8bd83b5 chore: bump golang.org/x/crypto to v0.55.0
  • af123f4 feat: tune a rule's scalars from configuration
  • 05875a9 feat: a rule can extend another rule
  • 6d97c2d feat: nested rule directories, and test cases in-source
  • 5d33823 feat: satisfy negated sequence tokens at boundaries; add region exceptions
  • e9caf5f Satisfy negated sequence tokens at sentence boundaries
  • c62d75f fix: parse a compound stanza at a fixed width, not the target's (#​1159)
  • 6d22b96 refactor: other org refs
  • 3f26c98 refactor: migrate org
  • b8560d8 fix: read a self-closing tag as the boundary it is (#​1157)

v3.19.0

Compare Source

MDX: JSX children are now linted

Vale now reads a JSX element's children as the Markdown they are — matching MDX's own grammar, where only tags, attributes, and {...} expressions are JavaScript. The prose inside wrapping components like <Steps>, <Tabs>, or <Aside> is linted at its exact source position, as is the text of inline elements (<abbr>HTML</abbr> — "HTML" is read as part of its sentence). For documentation built on component-heavy frameworks like Astro Starlight, this can mean a quarter of your prose is now covered.

Children carry the element's name as a class scope, the same way MyST and Quarto directives work — so a rule can target one component's content (scope: text.class.Aside), and a component whose content shouldn't be linted can be excluded by name:

IgnoredClasses = RawOutput

That's also the escape hatch if you preferred the old skip-everything behavior. Attribute values, expressions, self-closing elements, and elements opened and closed on a single standalone line are still treated as code.

Changelog
  • 405a7da fix: strip a comment's delimiters, not its prose's (#​1151)
  • 7766415 feat(code): add Elixir comment and doc-attribute extraction (#​1151)
  • 055db43 feat: let a sequence token ask for repeated occurrences (#​899)
  • 9ba5dea feat: lint a JSX element's children as the Markdown they are (#​1155)
  • 8702043 fix: lint a block title as written, without its generated label (#​1152)
  • d0e65f4 docs: update contributing for native MDX and Typst

Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Renovate Bot. The local configuration can be found in the SI Renovate Bot repository.

This PR contains the following updates: | Package | Update | Change | OpenSSF | |---|---|---|---| | [errata-ai/vale](https://github.com/errata-ai/vale) | minor | `v3.18.0` → `v3.20.0` | [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/errata-ai/vale/badge)](https://securityscorecards.dev/viewer/?uri=github.com/errata-ai/vale) | --- > ⚠️ **Warning** > > Some dependencies could not be looked up. Check the [Dependency Dashboard](issues/30) for more information. --- ### Release Notes <details> <summary>errata-ai/vale (errata-ai/vale)</summary> ### [`v3.20.0`](https://github.com/vale-cli/vale/releases/tag/v3.20.0) [Compare Source](https://github.com/errata-ai/vale/compare/v3.19.0...v3.20.0) Vale 3.20.0 ships a set of features aimed at style *authoring* at library scale. [Std](https://vale.sh/blog/std), the new standard library, is built on all three and walks through each; [Voices](https://vale.sh/blog/voices) is the first package to consume them. ##### A rule can extend another rule An `extends` value containing a dot names a rule rather than a check: the new rule starts from that rule's full definition and lays its own keys on top. Two styles can share one carefully built pattern and disagree only about message, level, or a handful of entries: ```yaml # styles/House/OxfordComma.yml extends: Std.Punctuation.OxfordComma message: 'Serial comma, always.' level: error ``` Three lines, your name on the alert, the parent's machinery underneath — including every false-positive guard it ever gains. The parent has to be present on the `StylesPath`, not enabled: inheritance is a file reference, and `vale sync` is what puts the file there. A child can itself be extended, up to ten rules deep. The one thing you can't extend is a `Vale.*` built-in, which is generated at runtime and has no file. A bare key replaces the parent's value outright. Lists and maps also take overlay edits: ```yaml extends: Direct.Hedging message: "We don't hedge." tokens+: - perhaps the best answer is tokens-: - one could argue ``` `key+` appends to a parent list, or merges into a parent map with the child's entries winning; `key-` removes entries by their source text, or the named keys from a map. Removing something the parent doesn't have is a compile error, on purpose: if upstream renames an entry your child was removing, you hear about it when the rule compiles instead of diverging silently. Writing both `key` and `key+` in one file is refused. A directory whose name starts with `_` or `.` is skipped at load time but stays visible to `extends`, so a pattern shared by several rules can live in one file without itself becoming a rule. A fragment is validated as the chain's root, so it must carry a `message` — even one no alert will show. Docs: [Extending another rule](https://docs.vale.sh/topics/styles#extending-another-rule) ##### Nested rule directories A style can organize its rules in subdirectories, and the path joins the name: `Std/Grammar/PassiveVoice.yml` is `Std.Grammar.PassiveVoice` everywhere a rule name goes — alerts, configuration, in-text comments, filters, and `extends`. There is no depth limit, and directories prefixed with `.` or `_` are inert, so drafts and shared fragments can sit inside a style without loading. Docs: [Nested directories](https://docs.vale.sh/topics/styles#nested-directories) ##### Tune a rule's scalars from configuration A bracketed key overrides one scalar on a rule you have enabled, keeping the rule's identity: ```ini [*.md] BasedOnStyles = Std Std.Readability.SentenceLength = error Std.Readability.SentenceLength[max] = 30 ``` The word in brackets is the key as it appears in the rule's YAML, so any scalar a rule declares is a dial. Values coerce at compile time, and an unknown parameter fails the rule's compilation rather than being silently dropped. Structural fields — `tokens`, `swap`, `message` — are refused with a pointer at extending the rule in a style, which is what authoring is for; `[level]` is refused because the classic `Style.Rule = error` syntax already says that. Docs: [Parameters](https://docs.vale.sh/keys/basedonstyles#parameters) ##### Changelog - [`fdc4cc7`](https://github.com/errata-ai/vale/commit/fdc4cc75) fix: report an occurrence shortfall at the scope that fell short - [`d978056`](https://github.com/errata-ai/vale/commit/d978056e) feat: add an apply mode to vale fix - [`58392ff`](https://github.com/errata-ai/vale/commit/58392ffd) fix: honor comment directives at any indent - [`fcd23e6`](https://github.com/errata-ai/vale/commit/fcd23e65) feat: report per-check alert counts under `--counts` - [`2545b00`](https://github.com/errata-ai/vale/commit/2545b006) docs: add contributor license agreement and PR comments - [`9972e93`](https://github.com/errata-ai/vale/commit/9972e93d) docs: add AI-Assisted Contributions - [`33f473d`](https://github.com/errata-ai/vale/commit/33f473d1) ix: mask an inline element in SkippedScopes instead of dropping it - [`03e45ee`](https://github.com/errata-ai/vale/commit/03e45ee9) feat(spell): honor Hunspell BREAK rules - [`29e67d2`](https://github.com/errata-ai/vale/commit/29e67d2e) fix(config): keep escaped commas in TokenIgnores and BlockIgnores - [`71b13ca`](https://github.com/errata-ai/vale/commit/71b13ca6) fix(spell): narrow COMPOUNDMIN inside its range check - [`8bd83b5`](https://github.com/errata-ai/vale/commit/8bd83b5b) chore: bump golang.org/x/crypto to v0.55.0 - [`af123f4`](https://github.com/errata-ai/vale/commit/af123f48) feat: tune a rule's scalars from configuration - [`05875a9`](https://github.com/errata-ai/vale/commit/05875a93) feat: a rule can extend another rule - [`6d97c2d`](https://github.com/errata-ai/vale/commit/6d97c2de) feat: nested rule directories, and test cases in-source - [`5d33823`](https://github.com/errata-ai/vale/commit/5d338235) feat: satisfy negated sequence tokens at boundaries; add region exceptions - [`e9caf5f`](https://github.com/errata-ai/vale/commit/e9caf5f1) Satisfy negated sequence tokens at sentence boundaries - [`c62d75f`](https://github.com/errata-ai/vale/commit/c62d75f6) fix: parse a compound stanza at a fixed width, not the target's ([#&#8203;1159](https://github.com/errata-ai/vale/issues/1159)) - [`6d22b96`](https://github.com/errata-ai/vale/commit/6d22b96f) refactor: other org refs - [`3f26c98`](https://github.com/errata-ai/vale/commit/3f26c989) refactor: migrate org - [`b8560d8`](https://github.com/errata-ai/vale/commit/b8560d8f) fix: read a self-closing tag as the boundary it is ([#&#8203;1157](https://github.com/errata-ai/vale/issues/1157)) ### [`v3.19.0`](https://github.com/vale-cli/vale/releases/tag/v3.19.0) [Compare Source](https://github.com/errata-ai/vale/compare/v3.18.0...v3.19.0) ##### MDX: JSX children are now linted Vale now reads a JSX element's children as the Markdown they are — matching MDX's own grammar, where only tags, attributes, and `{...}` expressions are JavaScript. The prose inside wrapping components like `<Steps>`, `<Tabs>`, or `<Aside>` is linted at its exact source position, as is the text of inline elements (`<abbr>HTML</abbr>` — "HTML" is read as part of its sentence). For documentation built on component-heavy frameworks like Astro Starlight, this can mean a quarter of your prose is now covered. Children carry the element's name as a [class scope](https://docs.vale.sh/topics/scopes), the same way MyST and Quarto directives work — so a rule can target one component's content (`scope: text.class.Aside`), and a component whose content shouldn't be linted can be excluded by name: ```ini IgnoredClasses = RawOutput ``` That's also the escape hatch if you preferred the old skip-everything behavior. Attribute values, expressions, self-closing elements, and elements opened and closed on a single standalone line are still treated as code. ##### Changelog - [`405a7da`](https://github.com/errata-ai/vale/commit/405a7dab) fix: strip a comment's delimiters, not its prose's ([#&#8203;1151](https://github.com/errata-ai/vale/issues/1151)) - [`7766415`](https://github.com/errata-ai/vale/commit/7766415d) feat(code): add Elixir comment and doc-attribute extraction ([#&#8203;1151](https://github.com/errata-ai/vale/issues/1151)) - [`055db43`](https://github.com/errata-ai/vale/commit/055db438) feat: let a sequence token ask for repeated occurrences ([#&#8203;899](https://github.com/errata-ai/vale/issues/899)) - [`9ba5dea`](https://github.com/errata-ai/vale/commit/9ba5dea6) feat: lint a JSX element's children as the Markdown they are ([#&#8203;1155](https://github.com/errata-ai/vale/issues/1155)) - [`8702043`](https://github.com/errata-ai/vale/commit/87020434) fix: lint a block title as written, without its generated label ([#&#8203;1152](https://github.com/errata-ai/vale/issues/1152)) - [`d0e65f4`](https://github.com/errata-ai/vale/commit/d0e65f41) docs: update contributing for native MDX and Typst </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). The local configuration can be found in the [SI Renovate Bot repository](https://git.shivering-isles.com/shivering-isles/infrastructure-gitops/src/branch/main/apps/k8s01/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC40NS40IiwidXBkYXRlZEluVmVyIjoiNDQuNTAuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->
chore(deps): update dependency errata-ai/vale to v3.19.0
Some checks failed
gitops-pr-validation Pipeline failed
gitops-images Pipeline failed
317c436a52
botaniker force-pushed renovate/errata-ai-vale-3.x from 317c436a52
Some checks failed
gitops-pr-validation Pipeline failed
gitops-images Pipeline failed
to c7667b633a
All checks were successful
gitops-pr-validation Pipeline completed successfully
gitops-images Pipeline completed successfully
2026-08-30 06:05:48 +00:00
Compare
botaniker force-pushed renovate/errata-ai-vale-3.x from c7667b633a
All checks were successful
gitops-pr-validation Pipeline completed successfully
gitops-images Pipeline completed successfully
to 4126487071
Some checks failed
gitops-images Image build started
gitops-pr-validation Pipeline failed
2026-09-02 06:09:08 +00:00
Compare
botaniker force-pushed renovate/errata-ai-vale-3.x from 4126487071
Some checks failed
gitops-images Image build started
gitops-pr-validation Pipeline failed
to 5f34b8e4e7
Some checks are pending
gitops-images Image build started
gitops-pr-validation Pipeline started
2026-09-03 06:06:33 +00:00
Compare
botaniker changed title from chore(deps): update dependency errata-ai/vale to v3.19.0 to chore(deps): update dependency errata-ai/vale to v3.20.0 2026-09-03 06:06:35 +00:00
Some checks are pending
gitops-images Image build started
Required
Details
gitops-pr-validation Pipeline started
Required
Details
Some required checks are missing.
This branch is out-of-date with the base branch
You are not authorized to merge this pull request.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin renovate/errata-ai-vale-3.x:renovate/errata-ai-vale-3.x
git switch renovate/errata-ai-vale-3.x
Sign in to join this conversation.
No reviewers
No labels
No milestone
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
shivering-isles/infrastructure-gitops!178
No description provided.