Skip to content

Curate Vale to Std + Temporal rules only (drop Google/Microsoft/alex) - #5299

Merged
Duncanma merged 2 commits into
mainfrom
vale-update-phase2
Sep 10, 2026
Merged

Curate Vale to Std + Temporal rules only (drop Google/Microsoft/alex)#5299
Duncanma merged 2 commits into
mainfrom
vale-update-phase2

Conversation

@Duncanma

Copy link
Copy Markdown
Contributor

Summary

  • .vale.ini (the full/advisory config) ran ~77 rules from Google, Microsoft, alex, Temporal — none of them individually chosen to reflect Temporal's writing style, just whatever came bundled when those packages were first vendored in 2023. .vale-ci.ini (what actually gates PRs) only ever enabled 3 of them (Temporal.Headings, Temporal.RelativeLinks, Google.Latin).
  • Replaces the full set with Std (Vale's shared prose-rule library, vendored in Vendor Vale's new Std package (groundwork, no rule changes) #5291) plus Temporal's own 8 custom rules, and nothing else. BasedOnStyles is now Vale, Std, Temporal.
  • Tunes Std.Readability.SentenceLength[max] = 30 to match the old Microsoft.SentenceLength threshold exactly, rather than adopting Std's stricter 25-word default.
  • Swaps .vale-ci.ini's Google.Latin for its direct Std equivalent (Std.Abbreviations.Latin), removing the last Google/Microsoft/alex reference from the CI gate.
  • Deletes the now fully-unreferenced vendored vale/styles/Google, vale/styles/Microsoft, vale/styles/alex packages (74 files).
  • Rewords readme/STYLE.md's opening paragraph — the philosophical lineage (modeled on Google's style guide) stays, but it no longer implies Vale enforces the Google/Microsoft packages directly.

Known, deliberate tradeoff: alex was the only package checking inclusive language and profanity (ableist terms, race/LGBTQ terminology, profanity blocklists, condescension). Std has no equivalent (only two narrow rules for gendered pronouns/terms). This coverage is dropped without replacement — documented in a .vale.ini comment so it reads as a decision, not an oversight.

Verification

  • CI-scoped lint (vale --config .vale-ci.ini docs/): Std.Abbreviations.Latin reproduces every Google.Latin finding (91 "e.g.", 3 "i.e." — identical) plus 38 new legitimate ones ("etc.", "vs.", which Google.Latin didn't cover). 430 → 468 total findings.
  • Full advisory lint (yarn lint's two commands), before/after by rule:
    • Exact-count matches: Std.Grammar.PassiveVoice (22,382, was Google.Passive), Std.Readability.SentenceLength (4,308, was Microsoft.SentenceLength — confirms the threshold tuning worked), Std.Usage.FirstPersonPlural (1,947, was Google.We), Std.Usage.FirstPersonSingular (1,071, was Microsoft.FirstPerson).
    • Std.Abbreviations.Acronyms (8,100) replaces what were two near-duplicate rules firing separately (Google.Acronyms 8,099 + Microsoft.Acronyms 8,099) — real de-duplication, not a loss of coverage.
    • Some drift on rules with more complex matching logic: Std.Punctuation.OxfordComma fires more (767 vs. 295 combined) — spot-checked, catching real missed-comma cases the old simpler rule didn't. Std.Punctuation.Spacing fires less (689 vs. 1,526) — narrower detection than the old rule.
    • Total findings dropped 157,515 → 99,848 (~37%), mostly from removing low-signal rules with no history of being individually valued (Google.Parens "use parentheses judiciously" alone was 10,851 hits; Google.Headings was 8,333, mostly redundant with/false-positiving against Temporal.Headings's curated exception list).
    • 934 alex.* findings (Ablist, Condescending, Race, LGBTQ, ProfanityMaybe/Likely, Suicide) are gone with no replacement — the known tradeoff above.
  • vale/test/*.md fixtures re-run: bad.md/good.md still exercise Temporal.terms/badwords/complexwords and Vale's core spelling check correctly; headings-*.md and relative-links-*.md (pure Temporal-rule fixtures, untouched by this change) behave identically to main.
  • git diff --stat: 3 files modified (.vale.ini, .vale-ci.ini, readme/STYLE.md), 74 files deleted, nothing else touched.

The full .vale.ini ran ~77 rules from Google/Microsoft/alex, none of
them individually chosen to reflect Temporal's writing style -- just
whatever came bundled when those packages were first vendored in
2023. .vale-ci.ini, the config that actually gates PRs, only ever
enabled 3 of them. Replace the full set with Std (Vale's shared
prose-rule library, already vendored as inert groundwork) plus
Temporal's own 8 custom rules, and nothing else.

Also swaps .vale-ci.ini's Google.Latin for its Std equivalent, and
deletes the now fully-unreferenced vendored Google/Microsoft/alex
packages.

alex was the only package covering inclusive-language and profanity
checks; Std has no equivalent. That coverage is dropped without
replacement, a deliberate tradeoff rather than an oversight (see the
comment in .vale.ini).
@Duncanma
Duncanma requested a review from a team as a code owner September 10, 2026 16:27
@vercel

vercel Bot commented Sep 10, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
temporal-documentation Ready Ready Preview Sep 10, 2026 9:59pm UTC

Request Review

@github-actions

Copy link
Copy Markdown
Contributor

📖 Docs PR preview links

This PR does not change any pages in /docs. If you make updates, links to the modified pages will appear here.

@Duncanma
Duncanma merged commit bc5c548 into main Sep 10, 2026
12 checks passed
@Duncanma
Duncanma deleted the vale-update-phase2 branch September 10, 2026 22:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant