From ef9ea6f60cc0d53281646ffaeab34d47be2906a5 Mon Sep 17 00:00:00 2001 From: DABH Date: Wed, 19 Aug 2026 00:58:06 -0500 Subject: [PATCH 1/4] Add missing proper nouns to the Temporal.Headings exception list 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. --- vale/styles/Temporal/Headings.yml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/vale/styles/Temporal/Headings.yml b/vale/styles/Temporal/Headings.yml index db201054d8..c86374a88a 100644 --- a/vale/styles/Temporal/Headings.yml +++ b/vale/styles/Temporal/Headings.yml @@ -33,14 +33,19 @@ exceptions: # Temporal primitives and proper nouns - Activity - Activities + - Application + - Applications - Archival - Cloud - Codec + - Command + - Commands - Converter - Cron - Data - Durable - Event + - Events - Execution - Executions - Failure @@ -158,12 +163,21 @@ exceptions: - Versioning - Patching - Endpoint + - Metric - Metrics - Account - Capacity - Connectivity - Continue-As-New + - Plugin + - Plugins + # Exact phrases; "Audit Logging" is the canonical term in Temporal/terms.yml, + # so keep "Log"/"Logs" out of the single-word list above. + - Audit Log + - Audit Logs + - Audit Logging # Cloud provider / networking / industry acronyms + - Amazon - AWS - GCP - DNS @@ -183,10 +197,13 @@ exceptions: - TRUs - PrivateLink - KMS + - CA # Cloud provider product names (exact phrase, not the individual words) - Azure Key Vault - Azure Workload Identity - GCP Workload Identity + - Private Service Connect + - Cloud Ops API - Terraform - Prometheus - Grafana From 849939ba179736fda0091d336875cc913bd8d86a Mon Sep 17 00:00:00 2001 From: DABH Date: Wed, 19 Aug 2026 01:04:27 -0500 Subject: [PATCH 2/4] Run Vale CI on ruleset changes 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. --- .github/workflows/vale-ci.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/vale-ci.yml b/.github/workflows/vale-ci.yml index f7025784c0..dad39ff0b3 100644 --- a/.github/workflows/vale-ci.yml +++ b/.github/workflows/vale-ci.yml @@ -4,6 +4,12 @@ on: pull_request: paths: - "docs/**" + # Lint the ruleset changes too. A malformed style file makes Vale exit 2 + # and skip linting entirely, which would otherwise fail open on every + # later PR without anything having flagged it here. + - "vale/**" + - ".vale-ci.ini" + - ".github/workflows/vale-ci.yml" permissions: contents: read From cecc000829ef1735d59a65e62a1f0d476a92782a Mon Sep 17 00:00:00 2001 From: DABH Date: Wed, 19 Aug 2026 10:52:12 -0500 Subject: [PATCH 3/4] Drop the Metric exception 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. --- vale/styles/Temporal/Headings.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/vale/styles/Temporal/Headings.yml b/vale/styles/Temporal/Headings.yml index c86374a88a..88c254a76b 100644 --- a/vale/styles/Temporal/Headings.yml +++ b/vale/styles/Temporal/Headings.yml @@ -163,7 +163,6 @@ exceptions: - Versioning - Patching - Endpoint - - Metric - Metrics - Account - Capacity From 2faca012ab4fe7332b15dd7dc09d831f81c90cde Mon Sep 17 00:00:00 2001 From: DABH Date: Tue, 25 Aug 2026 01:20:14 -0500 Subject: [PATCH 4/4] Add NET to the heading exceptions Vale tokenizes the leading dot away, so the ".NET" entry never matches the word it actually sees. Every sentence-case heading naming the SDK was therefore flagged: "Temporal .NET technical resources" is reported while the identical Go heading is not. Clears 8 false positives (367 -> 359) without weakening the rule -- "Temporal .NET Technical Resources" is still flagged, as is any other real title-case heading. Surfaced by reviewdog on #5179, where the pre-existing hit on docs/develop/dotnet/index.mdx moved into diff context. --- vale/styles/Temporal/Headings.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/vale/styles/Temporal/Headings.yml b/vale/styles/Temporal/Headings.yml index 88c254a76b..176427e4d2 100644 --- a/vale/styles/Temporal/Headings.yml +++ b/vale/styles/Temporal/Headings.yml @@ -157,6 +157,11 @@ exceptions: - PHP - Rust - .NET + # Vale tokenizes the leading dot away, so ".NET" above never matches the + # word it actually sees. Without this, every sentence-case heading naming + # the SDK is flagged — "Temporal .NET technical resources" is reported + # while the identical Go heading is not. + - NET # Identifier casing per this repo's style guide (Id, not ID) - Id # Temporal feature / primitive names