Skip to content

Commit 65040b3

Browse files
authored
Merge branch 'main' into fix-tcld-command-reference-grammar
2 parents 7e2867a + bad0c7a commit 65040b3

21 files changed

Lines changed: 1075 additions & 117 deletions

File tree

Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
---
2+
name: code-review
3+
description: >-
4+
Review pull requests in the Temporal documentation repository against AGENTS.md
5+
and docs style conventions. Use when reviewing docs, MDX, sidebar, redirect, or
6+
Docusaurus changes in temporalio/documentation.
7+
---
8+
9+
# Temporal documentation code review
10+
11+
Review this PR as a Temporal docs change. Prefer concrete, actionable comments.
12+
Cite paths when asking for a fix. Do not nitpick optional style that Vale does not
13+
enforce in CI unless it hurts clarity or correctness.
14+
15+
## Read these first (when relevant to the diff)
16+
17+
| Topic | File |
18+
| ----- | ---- |
19+
| Agent / repo guidance | [AGENTS.md](../../../AGENTS.md) |
20+
| Where content belongs | [readme/INFORMATION-ARCHITECTURE.md](../../../readme/INFORMATION-ARCHITECTURE.md) |
21+
| Style | [readme/STYLE.md](../../../readme/STYLE.md) |
22+
| React components in MDX | [readme/COMPONENTS.md](../../../readme/COMPONENTS.md) |
23+
| Component → Markdown mapping | [readme/COMPONENT_REGISTRY.md](../../../readme/COMPONENT_REGISTRY.md) |
24+
| Mermaid | [readme/MERMAID.md](../../../readme/MERMAID.md) |
25+
| LLM Markdown pipeline | [MARKDOWN_PIPELINE.md](../../../MARKDOWN_PIPELINE.md) |
26+
| CI / automations | [readme/AUTOMATIONS.md](../../../readme/AUTOMATIONS.md) |
27+
28+
## Must-check for every docs PR
29+
30+
### Correctness and scope
31+
32+
- Claims match current product behavior (no future promises unless tied to a version or release stage).
33+
- New or moved pages land in the right IA section.
34+
- Changing `id` or `slug` includes a `vercel.json` redirect plan.
35+
- Adding or moving pages updates `sidebars.js` and fixes inbound links when needed.
36+
- Draft PRs are appropriate when blocked on upstream/SDK/other-team work (see AGENTS.md Pull requests).
37+
38+
### Temporal terminology (flag these)
39+
40+
- Capitalize Temporal core terms as proper nouns (Workflow, Activity, Worker, Namespace, etc.).
41+
- Prefer **Temporal Service** over **Cluster** / **Temporal Cluster** in body prose (exceptions: Multi-Cluster Replication, code/config identifiers, CLI names).
42+
- Outside core terms, spell out "identifier." For core terms use `Id` (not `ID` / `id`), e.g. Workflow Id.
43+
- Prefer **use** over utilize/leverage; avoid filler and vague intensifiers (powerful, robust, seamless, unlock, streamline).
44+
45+
### Headings and frontmatter
46+
47+
- Headings: sentence case; prefer infinitive or questions; Develop pages use task-oriented headings.
48+
- Frontmatter: clear one-sentence `description`; match `tags` to siblings; do **not** add unused `keywords`.
49+
- Do not invent new tags/keywords unless this is a genuinely new feature area.
50+
51+
### MDX and components
52+
53+
- Prefer shared imports from `@site/src/components`.
54+
- Reuse existing components (`Tabs`, `SdkTabs`, `CaptionedImage`, etc.) instead of one-off HTML.
55+
- New public components should be exported from `src/components/index.js` when needed.
56+
- Check COMPONENTS.md / COMPONENT_REGISTRY.md before blessing a new pattern.
57+
58+
### Code samples
59+
60+
- Prefer Snipsync from CI-enabled sample repos when a matching snippet exists.
61+
- Snip edits belong in the **source** sample repo, then `yarn snipsync`.
62+
63+
### Style / CI bar
64+
65+
- CI-scoped Vale is the merge bar: `vale --config .vale-ci.ini` on touched files (Headings + RelativeLinks).
66+
- Do not require fixing the full Vale suggestion set unless the author opted into it.
67+
- Relative internal links preferred where Vale RelativeLinks applies.
68+
69+
## Diff-type checklists
70+
71+
### New or heavily rewritten MDX page
72+
73+
- [ ] IA placement and sidebar entry
74+
- [ ] Redirects if URL changed
75+
- [ ] Terminology + headings + description
76+
- [ ] Components reused appropriately
77+
- [ ] Samples: Snipsync or justified docs-owned code
78+
79+
### `sidebars.js` / navigation only
80+
81+
- [ ] IDs resolve to real pages
82+
- [ ] Nesting and labels match section conventions
83+
84+
### `vercel.json` redirects
85+
86+
- [ ] Old public paths covered
87+
- [ ] Destinations are current canonical URLs
88+
89+
### UI / React (`src/components`, theme, CSS)
90+
91+
- [ ] Fits existing design system; no one-off layout inventions without need
92+
- [ ] Accessibility basics (labels, contrast) when relevant
93+
- [ ] Public exports updated if a new shared component is introduced
94+
95+
### Config / build (`docusaurus.config.js`, plugins)
96+
97+
- [ ] Internal footer/`to:` links are real routes (plugin-generated files like `/llms.txt` need absolute URLs or they break `onBrokenLinks: 'throw'`)
98+
99+
## How to leave comments
100+
101+
- Group related nits; lead with blockers (wrong term, broken URL, missing redirect/sidebar).
102+
- Separate **blocking** vs **suggestion**.
103+
- If unsure about product behavior, ask rather than inventing.
104+
105+
## Out of scope for this skill
106+
107+
- Rewriting the entire PR in review comments
108+
- Enforcing full Vale / Google style beyond AGENTS.md and CI-scoped rules

docs/best-practices/security-controls.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ Temporal Cloud Namespace has a [Retention Period](/temporal-service/temporal-ser
118118

119119
### Availability and Disaster Recovery
120120

121-
Temporal Cloud’s platform is engineered for fault-tolerance out of the box, but you determine which Namespaces merit the very highest availability guarantees. Use the table below to decide when to turn on different High Availability models and how to operationalise them.
121+
Temporal Cloud’s platform is engineered for fault-tolerance out of the box, but you determine which Namespaces merit the very highest availability guarantees. Use the table below to decide when to turn on different High Availability models and how to operationalize them.
122122

123123
| Namespace scope | Use Case | Uptime SLA | Recovery Time Objective (RTO) | Recovery Point Objective (RPO) |
124124
|-----------------|----------|------------|--------------------------------|--------------------------------|

docs/cloud/audit-logs.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,7 @@ An Audit Log can be viewed in the Temporal Cloud UI.
197197
1. In the Temporal Cloud UI, select **Settings**.
198198
1. On the **Settings** page, select **Audit Logs**.
199199

200-
Up to 1000 events can be downloaded from the Audit Log UI to a local file.
200+
Up to 1,000 events can be downloaded from the Audit Log UI to a local file.
201201

202202
## Access an Audit Log via API {/* #audit-log-api */}
203203

docs/cloud/manage-access/custom-roles.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -313,7 +313,7 @@ temporal cloud custom-role create --spec @role.json
313313

314314
Once you have created a Custom Role, it is available on the Identities page to assign to a user or group, the same as
315315
the pre-defined Temporal permissions. See
316-
[How to update an account-level role in Temporal Cloud](/cloud/manage-access/users#update-roles) for more inforamtion.
316+
[How to update an account-level role in Temporal Cloud](/cloud/manage-access/users#update-roles) for more information.
317317

318318
## Modifying a Custom Role
319319

docs/cloud/projects.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ In Temporal Cloud UI:
114114
</TabItem>
115115
<TabItem value="cloud-api" label="Cloud Operations API">
116116

117-
The process for createing a [Namespace](/cloud/namespaces#create-a-namespace), [Nexus Endpoint](/nexus/registry#view-and-manage-nexus-endpoints), or [Connectivity Rule](/cloud/connectivity#creating-a-connectivity-rule) with the Cloud Operations API is the same as the standard process for creating those resources, with the addition of the `projectId` for the Project in which you're creating the resource.
117+
The process for creating a [Namespace](/cloud/namespaces#create-a-namespace), [Nexus Endpoint](/nexus/registry#view-and-manage-nexus-endpoints), or [Connectivity Rule](/cloud/connectivity#creating-a-connectivity-rule) with the Cloud Operations API is the same as the standard process for creating those resources, with the addition of the `projectId` for the Project in which you're creating the resource.
118118

119119

120120
Use the

docs/design-patterns/continue-as-new.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -359,7 +359,7 @@ This approach is more reliable than a fixed iteration count because it accounts
359359

360360
The Continue-As-New pattern is a good fit for periodic Workflows running indefinitely (cron-like behavior), processing unbounded data streams, long-running Workflows with repetitive patterns, Workflows that accumulate state over many iterations, and preventing event history from growing too large.
361361

362-
It is not a good fit for short-lived Workflows (under 1000 events), Workflows that naturally complete, one-time batch processing, or Workflows that require full history for audit purposes.
362+
It is not a good fit for short-lived Workflows (under 1,000 events), Workflows that naturally complete, one-time batch processing, or Workflows that require full history for audit purposes.
363363

364364
## Benefits and trade-offs
365365

docs/design-patterns/entity-workflow.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -552,7 +552,7 @@ Trade-offs:
552552
- [Safe Message Handlers](https://github.com/temporalio/samples-go/tree/main/safe_message_handler) — Entity Workflow with Updates, Signals, and Continue-As-New.
553553

554554
**Java:**
555-
- [Safe Message Handlers](https://github.com/temporalio/samples-java/tree/main/core/src/main/java/io/temporal/samples/safemessagehandler) — Entity Workflow with Updates, Signals, and Continue-As-New.
555+
- [Safe Message Handlers](https://github.com/temporalio/samples-java/tree/main/core/src/main/java/io/temporal/samples/safemessagepassing) — Entity Workflow with Updates, Signals, and Continue-As-New.
556556

557557
**TypeScript:**
558558
- [Safe Message Handlers](https://github.com/temporalio/samples-typescript/tree/main/message-passing/safe-message-handlers) — Entity Workflow with Updates, Signals, and Continue-As-New.

docs/develop/dotnet/workflows/message-passing.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ This page introduces these features for the Temporal .NET SDK.
3030
## Write message handlers {/* #writing-message-handlers */}
3131

3232
:::info
33-
The code that follows is part of a [working solution](https://github.com/temporalio/samples-dotnet/tree/main/src/MessagePassing).
33+
The code that follows is part of a [working solution](https://github.com/temporalio/samples-dotnet/tree/main/src/SafeMessageHandlers).
3434
:::
3535

3636
Follow these guidelines when writing your message handlers:

docs/develop/go/best-practices/data-handling/external-storage.mdx

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -108,9 +108,7 @@ follow. Only the driver setup differs between the two. Everything after that is
108108
[Application Default Credentials](https://cloud.google.com/docs/authentication/application-default-credentials).
109109

110110
<!--SNIPSTART go-gcs-driver-create-->
111-
112111
[features/snippets/external_storage/gcs_setup/gcs_driver_create.go](https://github.com/temporalio/features/blob/main/features/snippets/external_storage/gcs_setup/gcs_driver_create.go)
113-
114112
```go
115113
gcsClient, err := storage.NewClient(context.Background())
116114
if err != nil {
@@ -125,7 +123,6 @@ follow. Only the driver setup differs between the two. Everything after that is
125123
log.Fatalf("create GCS driver: %v", err)
126124
}
127125
```
128-
129126
<!--SNIPEND-->
130127

131128
</TabItem>
@@ -139,9 +136,7 @@ follow. Only the driver setup differs between the two. Everything after that is
139136
driver:
140137

141138
<!--SNIPSTART go-s3-external-storage-setup-->
142-
143139
[features/snippets/external_storage/s3_setup/s3_external_storage_setup.go](https://github.com/temporalio/features/blob/main/features/snippets/external_storage/s3_setup/s3_external_storage_setup.go)
144-
145140
```go
146141
c, err := client.Dial(client.Options{
147142
HostPort: "localhost:7233",
@@ -156,7 +151,6 @@ follow. Only the driver setup differs between the two. Everything after that is
156151

157152
w := worker.New(c, "my-task-queue", worker.Options{})
158153
```
159-
160154
<!--SNIPEND-->
161155

162156
A Worker inherits this configuration from the Client it is created with. When your Workers run in their own process,
@@ -189,9 +183,7 @@ The following example shows a custom driver that uses local disk as the backing
189183
development and testing only. In production, use a durable storage system that is accessible to all Workers:
190184

191185
<!--SNIPSTART go-custom-storage-driver-->
192-
193186
[features/snippets/external_storage/custom_driver/custom_storage_driver.go](https://github.com/temporalio/features/blob/main/features/snippets/external_storage/custom_driver/custom_storage_driver.go)
194-
195187
```go
196188
type LocalDiskStorageDriver struct {
197189
storeDir string
@@ -270,7 +262,6 @@ func (d *LocalDiskStorageDriver) Retrieve(
270262
return payloads, nil
271263
}
272264
```
273-
274265
<!--SNIPEND-->
275266

276267
The following sections walk through the key parts of the driver implementation.
@@ -332,9 +323,7 @@ the threshold stay inline in Event History. The size compared against the thresh
332323
which includes its metadata, not just your data.
333324

334325
<!--SNIPSTART go-external-storage-threshold-->
335-
336326
[features/snippets/external_storage/threshold/threshold_config.go](https://github.com/temporalio/features/blob/main/features/snippets/external_storage/threshold/threshold_config.go)
337-
338327
```go
339328
c, err := client.Dial(client.Options{
340329
ExternalStorage: converter.ExternalStorage{
@@ -343,7 +332,6 @@ c, err := client.Dial(client.Options{
343332
},
344333
})
345334
```
346-
347335
<!--SNIPEND-->
348336

349337
## Use multiple storage drivers
@@ -370,9 +358,7 @@ The following example registers two drivers but always selects `preferredDriver`
370358
only registered so the Worker can retrieve payloads that were previously stored with it:
371359

372360
<!--SNIPSTART go-external-storage-multiple-drivers-->
373-
374361
[features/snippets/external_storage/multiple_drivers/multiple_drivers.go](https://github.com/temporalio/features/blob/main/features/snippets/external_storage/multiple_drivers/multiple_drivers.go)
375-
376362
```go
377363
type PreferredSelector struct {
378364
preferred converter.StorageDriver
@@ -392,7 +378,6 @@ func MultipleDriversSetup(preferredDriver, legacyDriver converter.StorageDriver)
392378
}
393379
}
394380
```
395-
396381
<!--SNIPEND-->
397382

398383
## Multi-region durability with Amazon S3

docs/develop/php/activities/asynchronous-activity.mdx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ There are two parts to implementing an asynchronously completed Activity:
8585
The following example demonstrates the first part:
8686

8787
<!--SNIPSTART samples-php-async-activity-completion-activity-class-->
88-
[app/src/AsyncActivityCompletion/GreetingActivity.php](https://github.com/temporalio/samples-php/blob/main/app/src/AsyncActivityCompletion/GreetingActivity.php)
88+
[app/src/AsyncActivityCompletion/GreetingActivity.php](https://github.com/temporalio/samples-php/blob/master/app/src/AsyncActivityCompletion/GreetingActivity.php)
8989
```php
9090
class GreetingActivity implements GreetingActivityInterface
9191
{
@@ -118,7 +118,7 @@ class GreetingActivity implements GreetingActivityInterface
118118
The following code demonstrates how to complete the Activity successfully using `WorkflowClient`:
119119

120120
<!--SNIPSTART samples-php-async-activity-completion-completebytoken-->
121-
[app/src/AsyncActivityCompletion/CompleteCommand.php](https://github.com/temporalio/samples-php/blob/main/app/src/AsyncActivityCompletion/CompleteCommand.php)
121+
[app/src/AsyncActivityCompletion/CompleteCommand.php](https://github.com/temporalio/samples-php/blob/master/app/src/AsyncActivityCompletion/CompleteCommand.php)
122122
```php
123123
$client = $this->workflowClient->newActivityCompletionClient();
124124
// Complete the Activity.

0 commit comments

Comments
 (0)