Add missing proper nouns to the Temporal.Headings exception list - #5140
Open
DABH wants to merge 3 commits into
Open
Add missing proper nouns to the Temporal.Headings exception list#5140DABH wants to merge 3 commits into
DABH wants to merge 3 commits into
Conversation
Temporal.Headings flags 407 headings across 190 files. A sample showed a mix of genuine sentence-case violations and false positives on words the repo does treat as proper nouns. This adds only the exceptions backed by evidence elsewhere in the repo: - Command, Commands: glossary defines Command as a primitive; used capitalized in encyclopedia prose. - Events: plural parity with the existing Event entry. - Application, Applications: "Temporal Application" is a core term and Application is already in the accept vocabulary. - Metric: singular parity with the existing Metrics entry. - Plugin, Plugins: "Plugin system" and "Plugins guide" are capitalized in prose and the Plugins guide is a real page. - Audit Log, Audit Logs, Audit Logging: terms.yml canonicalizes "audit logging" to "Audit Logging". Added as exact phrases so bare Log and Logs stay flagged elsewhere. - Amazon: cloud provider proper noun; AWS, GCP, Azure, and Google were already present. - CA: acronym. - Private Service Connect, Cloud Ops API: product names, matching the existing exact-phrase entries such as Azure Key Vault. Measured on docs/: 407 -> 366 violations, 190 -> 176 files, zero newly flagged headings. The rule still fires on genuine title case.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Contributor
📖 Docs PR preview linksThis PR does not change any pages in /docs. If you make updates, links to the modified pages will appear here. |
Contributor
There was a problem hiding this comment.
Pull request overview
Expands the Vale heading-rule exceptions to avoid false positives for Temporal terminology and product names.
Changes:
- Adds Temporal concepts and plural variants.
- Adds exact product phrases, provider names, and acronyms.
- Preserves narrow matching for Audit Log terminology.
💡 Configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
vale-ci.yml only triggered on docs/**, so a PR that changed the Vale styles themselves never ran Vale. This PR was an example: nothing in CI exercised the exception-list change. A malformed style file makes Vale exit 2 and skip linting entirely, so the gap also meant a broken ruleset could land and silently fail open on every later PR.
Metric is a common noun here, not a Temporal term: the OpenMetrics API reference defines "A metric is a numeric attribute..." in lowercase at docs/cloud/metrics/openmetrics/api-reference.mdx:67, and metric is absent from Temporal/terms.yml. The entry also suppressed exactly one heading, and it was a genuine violation: "Namespace/Metric filtering" should be "Namespace/metric filtering". That belongs in the content cleanup, not here. The plural Metrics entry stays. Unlike the singular it guards compound product names such as Cloud Metrics, SDK Metrics, and Workflow Metrics, so singular/plural parity was not a good reason to add Metric.
DABH
marked this pull request as ready for review
August 19, 2026 15:53
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Draft — the additions below are backed by repo evidence, but the open questions at the end need a docs-team call before this should merge.
Context
Temporal.Headingscurrently flags 407 headings across 190 files (allsuggestionlevel). It doesn't drown CI only becausevale-ci.ymlusesfilter_mode: diff_contextandfail_on_error: false, so violations surface only when someone touches those lines.Sampling that backlog showed it's a mix of genuine sentence-case violations and false positives on words this repo does treat as proper nouns. This PR fixes only the false-positive half — the config side. It deliberately does not touch content.
Additions, and the evidence for each
Command,Commandsdocs/glossary.md:135defines[Command](/workflow-execution#command); used capitalized indocs/encyclopedia/architecture/temporal-sdks.mdxproseEventsEventwas already presentApplication,ApplicationsApplicationis already invocabularies/Temporal/accept.txtPlugin,Plugins/develop/plugins-guideis a real pageAudit Log,Audit Logs,Audit LoggingTemporal/terms.yml:21canonicalizesaudit logging→Audit Logging. Added as exact phrases so bareLog/Logsstay flagged elsewhereAmazonAWS,GCP,Azure,Googlewere already presentCACA certificateswas flagged)Private Service Connect,Cloud Ops APIAzure Key Vault,GCP Workload Identity)Multi-word entries were verified to actually work:
## Configure Azure Key Vault accesspasses while## Configure Key Vault accessis flagged.Measured impact
Temporal.Headingsviolations40 false positives cleared, no regressions. Verified the rule still fires on genuine title case (
## This Is Clearly Title Case Here→ flagged).Config alone is necessary but not sufficient. Most flagged headings contain several stray capitals, so clearing one word often leaves the heading flagged — correctly, since the rest is a real violation. The remaining 366 are content work, not config work.
Deliberately NOT added
Connected,Community— genuine violations. The 7## Get Connected with the Temporal <X> Communityheadings should be sentence-cased instead: the repo's own prose uses lowercase "the Temporal community" 10 times,Communityis absent fromterms.ymlandaccept.txt, and STYLE.md says only proper nouns are capitalized. Separate content PR.Continue-as-New— looks like a casing mismatch, butterms.ymlcanonicalizes toContinue-As-New, which is already in the list. The headingHow to test Continue-as-New using the .NET SDKis the thing that's wrong. Content fix.Overview,Steps("Next Steps"),Section,Hello,World,Test,Your,Installation,Success,Code,Maps,Map,Provides,Verify,Options,When,Saved,View— ordinary words, genuine violations.Open questions for reviewers
Summary/Details(29 violations, the single biggest chunk).docs/web-ui.mdx:229describes "User Metadata including static Workflow Summary and Details and dynamic Current Details" — these are real Web UI field names. Are they proper nouns (add exceptions) or should headings like## Adding Summary and Details to Workflowsbe sentence-cased? I left them out pending a call.Handler/Handlers(9),Message(6) — "Message Handlers", "Update Handlers" read like Temporal concepts, but neither appears interms.yml. Term or not?Replay(6) — "Replay Testing", "History Replay". Concept name or ordinary verb?A note on the rule itself
Worth knowing when interpreting its output:
Temporal.Headingstolerates one stray non-exception capital and only flags at two or more. Probed:Get Connected with the Temporal Python CommunityGet Connected with the Temporal Python communityGet connected with the Temporal Python CommunitySo passing this rule does not mean a heading is correctly sentence-cased, and the 407 count under-reports the real backlog. Style decisions should come from STYLE.md, with Vale as a coarse net rather than the source of truth.
┆Attachments: EDU-6987 Add missing proper nouns to the Temporal.Headings exception list
Update: also runs Vale CI on ruleset changes
Second commit (
fce5fd0) fixes a gap this PR itself exposed.vale-ci.ymltriggered onpaths: docs/**only, so a PR touching justvale/styles/**never ran Vale — the "Lint prose" check did not run on the first commit of this PR at all. A ruleset change was the one change Vale CI most needed to exercise, and the one case it skipped.Audited every workflow's path filter to confirm nothing else covered it:
vale/**-only change?vale-ci.ymldocs/**onlybuild-check.ymldocs/**,src/**,static/**, …check-orphan-pages.ymldocs/**,sidebars.js, …mermaid-ci.ymldocs/**, …check-redirects.yml,docs-preview-links.ymlAdded
vale/**,.vale-ci.ini, and.github/workflows/vale-ci.ymlto the trigger.What this catches: a malformed style file. Verified locally — corrupting
Headings.ymlmakes Vale exit 2 withExecution stopped, linting nothing. Without this trigger, such a change could merge and then fail open on every subsequent PR with nothing having flagged it.What it does not catch: because the action uses
filter_mode: diff_context, avale/**-only PR has nodocs/lines in its diff, so no heading alerts get reported. The job proves the ruleset loads; it does not show the ruleset's impact. The before/after numbers above came from running Vale locally acrossdocs/, and that remains the evidence for the exception list itself.Update: dropped the
Metricexception (Copilot review)Copilot flagged
Metricand was right on every point. Verified each claim:metricis absent fromTemporal/terms.yml.docs/cloud/metrics/openmetrics/api-reference.mdx:67reads "A metric is a numeric attribute measured at a specific point in time" — lowercase, as a common noun.Namespace/Metric filtering(migration-guide.mdx:337), which is a genuine violation that should becomeNamespace/metric filteringin the content cleanup.My justification had been "singular parity with the existing
Metrics," which was reasoning from symmetry rather than evidence. Isolating the plural entry shows why the parity doesn't hold —Metricsguards 11 compound product names:The plural appears inside product names; the singular appears as a common noun. Different cases, so the plural staying does not imply the singular should be added.
Removed in
9ee4882.Namespace/Metric filteringis flagged again, as it should be. Revised totals are in the table above (407 → 367, one fewer than before).