Skip to content

Use cases under guides#4893

Draft
Duncanma wants to merge 23 commits into
mainfrom
use-cases-under-guides
Draft

Use cases under guides#4893
Duncanma wants to merge 23 commits into
mainfrom
use-cases-under-guides

Conversation

@Duncanma

@Duncanma Duncanma commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

What does this PR do?

Notes to reviewers

┆Attachments: EDU-6726 Use cases under guides

@vercel

vercel Bot commented Jul 15, 2026

Copy link
Copy Markdown

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

Project Deployment Actions Updated (UTC)
temporal-documentation Ready Ready Preview, Comment Jul 15, 2026 8:10pm

Request Review

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remaining comments which cannot be posted as a review comment to avoid GitHub Rate Limit

vale

docs/guides/entity-pattern-loyalty-points.mdx|1131 col 23| [Temporal.RelativeLinks] Use a relative path instead of the absolute docs.temporal.io URL 'https://docs.temporal.io/production-deployment/worker-deployments/worker-versioning'.
docs/guides/entity-pattern-loyalty-points.mdx|1132 col 77| [Temporal.RelativeLinks] Use a relative path instead of the absolute docs.temporal.io URL 'https://docs.temporal.io/develop/python/failure-detection'.
docs/guides/route-specialized-workloads.mdx|110 col 5| [Temporal.Headings] 'Resource-Based routing architecture' should use sentence-style capitalization.
docs/guides/route-specialized-workloads.mdx|667 col 43| [Temporal.RelativeLinks] Use a relative path instead of the absolute docs.temporal.io URL 'https://docs.temporal.io/task-routing'.
docs/guides/route-specialized-workloads.mdx|668 col 52| [Temporal.RelativeLinks] Use a relative path instead of the absolute docs.temporal.io URL 'https://docs.temporal.io/best-practices/worker#separate-task-queues-logically'.
docs/guides/use-cases.mdx|62 col 4| [Temporal.Headings] 'Data pipelines & ETL' should use sentence-style capitalization.
docs/guides/temporary-rate-limit-increases.mdx|38 col 132| [Temporal.RelativeLinks] Use a relative path instead of the absolute docs.temporal.io URL 'https://docs.temporal.io/sending-messages#update-with-start'.
docs/guides/temporary-rate-limit-increases.mdx|724 col 4| [Temporal.Headings] 'Related Resources' should use sentence-style capitalization.
docs/guides/temporary-rate-limit-increases.mdx|726 col 29| [Temporal.RelativeLinks] Use a relative path instead of the absolute docs.temporal.io URL 'https://docs.temporal.io/cloud/capacity-modes'.
docs/guides/temporary-rate-limit-increases.mdx|727 col 29| [Temporal.RelativeLinks] Use a relative path instead of the absolute docs.temporal.io URL 'https://docs.temporal.io/best-practices'.
docs/guides/reliable-document-approvals.mdx|55 col 98| [Temporal.RelativeLinks] Use a relative path instead of the absolute docs.temporal.io URL 'https://docs.temporal.io/workflow-execution/limits'.
docs/guides/reliable-document-approvals.mdx|104 col 57| [Temporal.RelativeLinks] Use a relative path instead of the absolute docs.temporal.io URL 'https://docs.temporal.io/cli'.
docs/guides/reliable-document-approvals.mdx|115 col 13| [Temporal.RelativeLinks] Use a relative path instead of the absolute docs.temporal.io URL 'https://docs.temporal.io/signals'.
docs/guides/reliable-document-approvals.mdx|116 col 13| [Temporal.RelativeLinks] Use a relative path instead of the absolute docs.temporal.io URL 'https://docs.temporal.io/queries'.
docs/guides/reliable-document-approvals.mdx|117 col 13| [Temporal.RelativeLinks] Use a relative path instead of the absolute docs.temporal.io URL 'https://docs.temporal.io/workers'.
docs/guides/reliable-document-approvals.mdx|118 col 17| [Temporal.RelativeLinks] Use a relative path instead of the absolute docs.temporal.io URL 'https://docs.temporal.io/task-queues'.
docs/guides/reliable-document-approvals.mdx|1357 col 39| [Temporal.RelativeLinks] Use a relative path instead of the absolute docs.temporal.io URL 'https://docs.temporal.io/develop/python'.
docs/guides/reliable-document-approvals.mdx|1358 col 49| [Temporal.RelativeLinks] Use a relative path instead of the absolute docs.temporal.io URL 'https://docs.temporal.io/develop/python/message-passing'.
docs/guides/reliable-document-approvals.mdx|1359 col 21| [Temporal.RelativeLinks] Use a relative path instead of the absolute docs.temporal.io URL 'https://docs.temporal.io/develop/python/continue-as-new'.
docs/guides/reliable-document-approvals.mdx|1360 col 77| [Temporal.RelativeLinks] Use a relative path instead of the absolute docs.temporal.io URL 'https://docs.temporal.io/develop/python/failure-detection'.
docs/guides/reliable-document-approvals.mdx|1361 col 21| [Temporal.RelativeLinks] Use a relative path instead of the absolute docs.temporal.io URL 'https://docs.temporal.io/develop/python/child-workflows'.
docs/guides/reliable-document-approvals.mdx|1362 col 23| [Temporal.RelativeLinks] Use a relative path instead of the absolute docs.temporal.io URL 'https://docs.temporal.io/production-deployment/worker-deployments/worker-versioning'.
docs/guides/saga-pattern.mdx|67 col 68| [Temporal.RelativeLinks] Use a relative path instead of the absolute docs.temporal.io URL 'https://docs.temporal.io/references/failures#application-failure'.
docs/guides/saga-pattern.mdx|68 col 160| [Temporal.RelativeLinks] Use a relative path instead of the absolute docs.temporal.io URL 'https://docs.temporal.io/develop/typescript/message-passing#signals'.
docs/guides/saga-pattern.mdx|70 col 28| [Temporal.RelativeLinks] Use a relative path instead of the absolute docs.temporal.io URL 'https://docs.temporal.io/visibility#search-attribute'.
docs/guides/saga-pattern.mdx|75 col 20| [Temporal.RelativeLinks] Use a relative path instead of the absolute docs.temporal.io URL 'https://docs.temporal.io/develop/typescript/message-passing#queries'.
docs/guides/saga-pattern.mdx|223 col 173| [Temporal.RelativeLinks] Use a relative path instead of the absolute docs.temporal.io URL 'https://docs.temporal.io/encyclopedia/retry-policies'.
docs/guides/saga-pattern.mdx|223 col 252| [Temporal.RelativeLinks] Use a relative path instead of the absolute docs.temporal.io URL 'https://docs.temporal.io/develop/typescript/failure-detection#activity-timeouts'.
docs/guides/saga-pattern.mdx|526 col 20| [Temporal.RelativeLinks] Use a relative path instead of the absolute docs.temporal.io URL 'https://docs.temporal.io/encyclopedia/workflow-message-passing#updates'.
docs/guides/saga-pattern.mdx|1058 col 43| [Temporal.RelativeLinks] Use a relative path instead of the absolute docs.temporal.io URL 'https://docs.temporal.io/develop/typescript'.
docs/guides/saga-pattern.mdx|1059 col 22| [Temporal.RelativeLinks] Use a relative path instead of the absolute docs.temporal.io URL 'https://docs.temporal.io/develop/typescript/message-passing#signals'.
docs/guides/saga-pattern.mdx|1060 col 22| [Temporal.RelativeLinks] Use a relative path instead of the absolute docs.temporal.io URL 'https://docs.temporal.io/develop/typescript/message-passing#queries'.
docs/guides/saga-pattern.mdx|1061 col 32| [Temporal.RelativeLinks] Use a relative path instead of the absolute docs.temporal.io URL 'https://docs.temporal.io/visibility#search-attribute'.
docs/guides/saga-pattern.mdx|1062 col 25| [Temporal.RelativeLinks] Use a relative path instead of the absolute docs.temporal.io URL 'https://docs.temporal.io/visibility'.
docs/guides/saga-pattern.mdx|1063 col 34| [Temporal.RelativeLinks] Use a relative path instead of the absolute docs.temporal.io URL 'https://docs.temporal.io/references/failures#application-failure'.
docs/guides/worker-execution-affinity.mdx|58 col 51| [Temporal.RelativeLinks] Use a relative path instead of the absolute docs.temporal.io URL 'https://docs.temporal.io/develop/go/sessions'.
docs/guides/worker-execution-affinity.mdx|80 col 109| [Temporal.RelativeLinks] Use a relative path instead of the absolute docs.temporal.io URL 'https://docs.temporal.io/encyclopedia/workers/worker-shutdown'.
docs/guides/worker-execution-affinity.mdx|486 col 43| [Temporal.RelativeLinks] Use a relative path instead of the absolute docs.temporal.io URL 'https://docs.temporal.io/task-routing'.
docs/guides/worker-execution-affinity.mdx|487 col 55| [Temporal.RelativeLinks] Use a relative path instead of the absolute docs.temporal.io URL 'https://docs.temporal.io/develop/go/sessions'.

- Python 3.12 or later ([download](https://www.python.org/downloads/))
- Temporal Python SDK 1.7 or later ([github](https://github.com/temporalio/sdk-python))
- `uv` 0.9.18 for Python dependency management ([install](https://docs.astral.sh/uv/))
- Temporal CLI 1.6.2 for the local development server ([install](https://docs.temporal.io/cli))

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ [vale] reported by reviewdog 🐶
[Temporal.RelativeLinks] Use a relative path instead of the absolute docs.temporal.io URL 'https://docs.temporal.io/cli'.

- A Temporal Namespace where you can register Workers and start Workflows.
- For Temporal Cloud: an API key with the Namespace Admin role for the target Namespace.
- **Required concepts**:
- Familiarity with Temporal Workflows and Activities ([docs](https://docs.temporal.io/workflows)).

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ [vale] reported by reviewdog 🐶
[Temporal.RelativeLinks] Use a relative path instead of the absolute docs.temporal.io URL 'https://docs.temporal.io/workflows'.

- For Temporal Cloud: an API key with the Namespace Admin role for the target Namespace.
- **Required concepts**:
- Familiarity with Temporal Workflows and Activities ([docs](https://docs.temporal.io/workflows)).
- Child Workflows and parent close policies ([docs](https://docs.temporal.io/encyclopedia/child-workflows)).

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ [vale] reported by reviewdog 🐶
[Temporal.RelativeLinks] Use a relative path instead of the absolute docs.temporal.io URL 'https://docs.temporal.io/encyclopedia/child-workflows'.

- **Required concepts**:
- Familiarity with Temporal Workflows and Activities ([docs](https://docs.temporal.io/workflows)).
- Child Workflows and parent close policies ([docs](https://docs.temporal.io/encyclopedia/child-workflows)).
- Signals and Queries ([docs](https://docs.temporal.io/encyclopedia/workflow-message-passing)).

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ [vale] reported by reviewdog 🐶
[Temporal.RelativeLinks] Use a relative path instead of the absolute docs.temporal.io URL 'https://docs.temporal.io/encyclopedia/workflow-message-passing'.

- Familiarity with Temporal Workflows and Activities ([docs](https://docs.temporal.io/workflows)).
- Child Workflows and parent close policies ([docs](https://docs.temporal.io/encyclopedia/child-workflows)).
- Signals and Queries ([docs](https://docs.temporal.io/encyclopedia/workflow-message-passing)).
- Workflow determinism ([docs](https://docs.temporal.io/workflows#workflow-determinism)).

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ [vale] reported by reviewdog 🐶
[Temporal.RelativeLinks] Use a relative path instead of the absolute docs.temporal.io URL 'https://docs.temporal.io/workflows#workflow-determinism'.


Run this test as part of your continuous integration pipeline before deploying Workflow code changes. If the replay fails with a `NondeterminismError`, the code change is not backward-compatible. Use Worker Versioning (see Phase 8) to deploy the change safely.

### (Optional) Phase 8: Manage Workflow evolution with Worker Versioning

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📝 [vale] reported by reviewdog 🐶
[Temporal.Headings] '(Optional) Phase 8: Manage Workflow evolution with Worker Versioning' should use sentence-style capitalization.


Entity Workflows are the hardest case for code evolution: a loyalty account can span years and dozens of deployments. Any change that alters the sequence of Commands the Workflow generates causes a `NondeterminismError` during replay for in-progress Executions.

[Worker Versioning](https://docs.temporal.io/production-deployment/worker-deployments/worker-versioning) is the recommended solution: run multiple builds simultaneously, route each Execution to the build it started on, and drain old builds without any code-level branching.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ [vale] reported by reviewdog 🐶
[Temporal.RelativeLinks] Use a relative path instead of the absolute docs.temporal.io URL 'https://docs.temporal.io/production-deployment/worker-deployments/worker-versioning'.


## Related resources

- [Temporal Python SDK documentation](https://docs.temporal.io/develop/python)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ [vale] reported by reviewdog 🐶
[Temporal.RelativeLinks] Use a relative path instead of the absolute docs.temporal.io URL 'https://docs.temporal.io/develop/python'.


- [Temporal Python SDK documentation](https://docs.temporal.io/develop/python)
- [Temporal Python SDK API Reference](https://python.temporal.io)
- [Message Passing — Signals, Queries, Updates](https://docs.temporal.io/develop/python/message-passing)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ [vale] reported by reviewdog 🐶
[Temporal.RelativeLinks] Use a relative path instead of the absolute docs.temporal.io URL 'https://docs.temporal.io/develop/python/message-passing'.

- [Temporal Python SDK documentation](https://docs.temporal.io/develop/python)
- [Temporal Python SDK API Reference](https://python.temporal.io)
- [Message Passing — Signals, Queries, Updates](https://docs.temporal.io/develop/python/message-passing)
- [Continue-As-New](https://docs.temporal.io/develop/python/continue-as-new)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ [vale] reported by reviewdog 🐶
[Temporal.RelativeLinks] Use a relative path instead of the absolute docs.temporal.io URL 'https://docs.temporal.io/develop/python/continue-as-new'.

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remaining comments which cannot be posted as a review comment to avoid GitHub Rate Limit

vale

docs/guides/saga-pattern.mdx|223 col 173| [Temporal.RelativeLinks] Use a relative path instead of the absolute docs.temporal.io URL 'https://docs.temporal.io/encyclopedia/retry-policies'.
docs/guides/saga-pattern.mdx|223 col 252| [Temporal.RelativeLinks] Use a relative path instead of the absolute docs.temporal.io URL 'https://docs.temporal.io/develop/typescript/failure-detection#activity-timeouts'.
docs/guides/saga-pattern.mdx|526 col 20| [Temporal.RelativeLinks] Use a relative path instead of the absolute docs.temporal.io URL 'https://docs.temporal.io/encyclopedia/workflow-message-passing#updates'.
docs/guides/saga-pattern.mdx|1058 col 43| [Temporal.RelativeLinks] Use a relative path instead of the absolute docs.temporal.io URL 'https://docs.temporal.io/develop/typescript'.
docs/guides/saga-pattern.mdx|1059 col 22| [Temporal.RelativeLinks] Use a relative path instead of the absolute docs.temporal.io URL 'https://docs.temporal.io/develop/typescript/message-passing#signals'.
docs/guides/saga-pattern.mdx|1060 col 22| [Temporal.RelativeLinks] Use a relative path instead of the absolute docs.temporal.io URL 'https://docs.temporal.io/develop/typescript/message-passing#queries'.
docs/guides/saga-pattern.mdx|1061 col 32| [Temporal.RelativeLinks] Use a relative path instead of the absolute docs.temporal.io URL 'https://docs.temporal.io/visibility#search-attribute'.
docs/guides/saga-pattern.mdx|1062 col 25| [Temporal.RelativeLinks] Use a relative path instead of the absolute docs.temporal.io URL 'https://docs.temporal.io/visibility'.
docs/guides/saga-pattern.mdx|1063 col 34| [Temporal.RelativeLinks] Use a relative path instead of the absolute docs.temporal.io URL 'https://docs.temporal.io/references/failures#application-failure'.

- [Temporal Python SDK API Reference](https://python.temporal.io)
- [Message Passing — Signals, Queries, Updates](https://docs.temporal.io/develop/python/message-passing)
- [Continue-As-New](https://docs.temporal.io/develop/python/continue-as-new)
- [Worker Versioning](https://docs.temporal.io/production-deployment/worker-deployments/worker-versioning)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ [vale] reported by reviewdog 🐶
[Temporal.RelativeLinks] Use a relative path instead of the absolute docs.temporal.io URL 'https://docs.temporal.io/production-deployment/worker-deployments/worker-versioning'.

- [Message Passing — Signals, Queries, Updates](https://docs.temporal.io/develop/python/message-passing)
- [Continue-As-New](https://docs.temporal.io/develop/python/continue-as-new)
- [Worker Versioning](https://docs.temporal.io/production-deployment/worker-deployments/worker-versioning)
- [Failure Detection — Timeouts, Activity Heartbeating, and Retry Policies](https://docs.temporal.io/develop/python/failure-detection)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ [vale] reported by reviewdog 🐶
[Temporal.RelativeLinks] Use a relative path instead of the absolute docs.temporal.io URL 'https://docs.temporal.io/develop/python/failure-detection'.

Comment thread docs/guides/use-cases.mdx
- **[Fixed Wall-Time Retries](/design-patterns/fixed-wall-time-retries)** — Bound the total elapsed time across all retry attempts to enforce a business SLA, regardless of how many individual attempts occur.
- **[Retry Alerting via Metrics](/design-patterns/retry-metrics)** — Emit a custom metric from inside the Activity when the attempt count crosses a threshold, surfacing silent persistent failures to on-call teams before an SLA breach.

## Data pipelines & ETL

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📝 [vale] reported by reviewdog 🐶
[Temporal.Headings] 'Data pipelines & ETL' should use sentence-style capitalization.


## Architecture diagram(s)

### Resource-Based routing architecture

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📝 [vale] reported by reviewdog 🐶
[Temporal.Headings] 'Resource-Based routing architecture' should use sentence-style capitalization.

## Related resources

### Official documentation
- [Temporal Documentation - Task Routing](https://docs.temporal.io/task-routing)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ [vale] reported by reviewdog 🐶
[Temporal.RelativeLinks] Use a relative path instead of the absolute docs.temporal.io URL 'https://docs.temporal.io/task-routing'.

- [Continue-As-New](https://docs.temporal.io/develop/python/continue-as-new)
- [Failure Detection — Timeouts, Activity Heartbeating, and Retry Policies](https://docs.temporal.io/develop/python/failure-detection)
- [Child Workflows](https://docs.temporal.io/develop/python/child-workflows)
- [Worker Versioning](https://docs.temporal.io/production-deployment/worker-deployments/worker-versioning)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ [vale] reported by reviewdog 🐶
[Temporal.RelativeLinks] Use a relative path instead of the absolute docs.temporal.io URL 'https://docs.temporal.io/production-deployment/worker-deployments/worker-versioning'.

This means thousands of loan applications can sit in a `PENDING_FIX` state simultaneously without consuming Worker capacity.

The primary architectural challenge is distinguishing between transient failures that automated retries can resolve and permanent failures that require human intervention.
Temporal addresses this with [`ApplicationFailure.nonRetryable()`](https://docs.temporal.io/references/failures#application-failure), which instructs the SDK to skip the Retry Policy and propagate the error to the Workflow code without delay.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ [vale] reported by reviewdog 🐶
[Temporal.RelativeLinks] Use a relative path instead of the absolute docs.temporal.io URL 'https://docs.temporal.io/references/failures#application-failure'.


The primary architectural challenge is distinguishing between transient failures that automated retries can resolve and permanent failures that require human intervention.
Temporal addresses this with [`ApplicationFailure.nonRetryable()`](https://docs.temporal.io/references/failures#application-failure), which instructs the SDK to skip the Retry Policy and propagate the error to the Workflow code without delay.
The Workflow then has full control over how to handle the failure: it can log the error, update Search Attributes for visibility, and suspend until a [Signal](https://docs.temporal.io/develop/typescript/message-passing#signals) arrives.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ [vale] reported by reviewdog 🐶
[Temporal.RelativeLinks] Use a relative path instead of the absolute docs.temporal.io URL 'https://docs.temporal.io/develop/typescript/message-passing#signals'.

Temporal addresses this with [`ApplicationFailure.nonRetryable()`](https://docs.temporal.io/references/failures#application-failure), which instructs the SDK to skip the Retry Policy and propagate the error to the Workflow code without delay.
The Workflow then has full control over how to handle the failure: it can log the error, update Search Attributes for visibility, and suspend until a [Signal](https://docs.temporal.io/develop/typescript/message-passing#signals) arrives.

Custom [Search Attributes](https://docs.temporal.io/visibility#search-attribute) provide the mechanism for routing blocked Workflows to the correct resolution resource.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ [vale] reported by reviewdog 🐶
[Temporal.RelativeLinks] Use a relative path instead of the absolute docs.temporal.io URL 'https://docs.temporal.io/visibility#search-attribute'.

An operations dashboard can filter for `LoanStatus = 'PENDING_FIX' AND FailedActivity = 'runCreditCheck'` to show which applications need a credit-related data correction.
This same query interface supports automated agents that poll for specific failure categories and apply corrections programmatically.

Temporal [Queries](https://docs.temporal.io/develop/typescript/message-passing#queries) provide synchronous read access to the current state of any running Workflow.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ [vale] reported by reviewdog 🐶
[Temporal.RelativeLinks] Use a relative path instead of the absolute docs.temporal.io URL 'https://docs.temporal.io/develop/typescript/message-passing#queries'.

### Define the Activities

Create functions that validate loan application data at each pipeline stage.
Temporal Activities automatically recover from transient failures — network timeouts, temporary service unavailability, rate limits — through their built-in [Retry Policy](https://docs.temporal.io/encyclopedia/retry-policies) and [timeout management](https://docs.temporal.io/develop/typescript/failure-detection#activity-timeouts).

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ [vale] reported by reviewdog 🐶
[Temporal.RelativeLinks] Use a relative path instead of the absolute docs.temporal.io URL 'https://docs.temporal.io/encyclopedia/retry-policies'.

### Define the Activities

Create functions that validate loan application data at each pipeline stage.
Temporal Activities automatically recover from transient failures — network timeouts, temporary service unavailability, rate limits — through their built-in [Retry Policy](https://docs.temporal.io/encyclopedia/retry-policies) and [timeout management](https://docs.temporal.io/develop/typescript/failure-detection#activity-timeouts).

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ [vale] reported by reviewdog 🐶
[Temporal.RelativeLinks] Use a relative path instead of the absolute docs.temporal.io URL 'https://docs.temporal.io/develop/typescript/failure-detection#activity-timeouts'.

Without protection, the second delivery would overwrite the field again — usually a no-op, but harmful when the operator has since sent a different value, and always noisy in `fixHistory`.
The handler defends against this by checking the caller-supplied `id` against the audit trail and dropping anything it has already applied.
The client (the dashboard, CLI script, or upstream agent) is responsible for generating a stable `id` per logical correction — typically a UUID minted when the operator clicks **Patch and Retry**, reused across any retries of that same submission.
[Workflow Updates](https://docs.temporal.io/encyclopedia/workflow-message-passing#updates) would give you this deduplication for free via the SDK's built-in `updateId` handling, along with a synchronous result to the caller; this pattern sticks with Signals because the dashboard is fire-and-forget and the audit trail already provides the dedup index.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ [vale] reported by reviewdog 🐶
[Temporal.RelativeLinks] Use a relative path instead of the absolute docs.temporal.io URL 'https://docs.temporal.io/encyclopedia/workflow-message-passing#updates'.


## Related resources
- [Source code](https://github.com/temporal-sa/validated-pattern-keep-business-moving)
- [Temporal TypeScript SDK Documentation](https://docs.temporal.io/develop/typescript) — Complete reference for building Workflows, Activities, and Workers with the TypeScript SDK.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ [vale] reported by reviewdog 🐶
[Temporal.RelativeLinks] Use a relative path instead of the absolute docs.temporal.io URL 'https://docs.temporal.io/develop/typescript'.

## Related resources
- [Source code](https://github.com/temporal-sa/validated-pattern-keep-business-moving)
- [Temporal TypeScript SDK Documentation](https://docs.temporal.io/develop/typescript) — Complete reference for building Workflows, Activities, and Workers with the TypeScript SDK.
- [Temporal Signals](https://docs.temporal.io/develop/typescript/message-passing#signals) — Guide to defining and sending Signals to running Workflow Executions.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ [vale] reported by reviewdog 🐶
[Temporal.RelativeLinks] Use a relative path instead of the absolute docs.temporal.io URL 'https://docs.temporal.io/develop/typescript/message-passing#signals'.

- [Source code](https://github.com/temporal-sa/validated-pattern-keep-business-moving)
- [Temporal TypeScript SDK Documentation](https://docs.temporal.io/develop/typescript) — Complete reference for building Workflows, Activities, and Workers with the TypeScript SDK.
- [Temporal Signals](https://docs.temporal.io/develop/typescript/message-passing#signals) — Guide to defining and sending Signals to running Workflow Executions.
- [Temporal Queries](https://docs.temporal.io/develop/typescript/message-passing#queries) — Guide to defining and handling synchronous read-only Queries on Workflows.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ [vale] reported by reviewdog 🐶
[Temporal.RelativeLinks] Use a relative path instead of the absolute docs.temporal.io URL 'https://docs.temporal.io/develop/typescript/message-passing#queries'.

- [Temporal TypeScript SDK Documentation](https://docs.temporal.io/develop/typescript) — Complete reference for building Workflows, Activities, and Workers with the TypeScript SDK.
- [Temporal Signals](https://docs.temporal.io/develop/typescript/message-passing#signals) — Guide to defining and sending Signals to running Workflow Executions.
- [Temporal Queries](https://docs.temporal.io/develop/typescript/message-passing#queries) — Guide to defining and handling synchronous read-only Queries on Workflows.
- [Temporal Search Attributes](https://docs.temporal.io/visibility#search-attribute) — Reference for creating and using custom Search Attributes for Workflow visibility.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ [vale] reported by reviewdog 🐶
[Temporal.RelativeLinks] Use a relative path instead of the absolute docs.temporal.io URL 'https://docs.temporal.io/visibility#search-attribute'.

- [Temporal Signals](https://docs.temporal.io/develop/typescript/message-passing#signals) — Guide to defining and sending Signals to running Workflow Executions.
- [Temporal Queries](https://docs.temporal.io/develop/typescript/message-passing#queries) — Guide to defining and handling synchronous read-only Queries on Workflows.
- [Temporal Search Attributes](https://docs.temporal.io/visibility#search-attribute) — Reference for creating and using custom Search Attributes for Workflow visibility.
- [Temporal Visibility](https://docs.temporal.io/visibility) — Overview of the Visibility subsystem and List Filter Query syntax.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ [vale] reported by reviewdog 🐶
[Temporal.RelativeLinks] Use a relative path instead of the absolute docs.temporal.io URL 'https://docs.temporal.io/visibility'.

- [Temporal Queries](https://docs.temporal.io/develop/typescript/message-passing#queries) — Guide to defining and handling synchronous read-only Queries on Workflows.
- [Temporal Search Attributes](https://docs.temporal.io/visibility#search-attribute) — Reference for creating and using custom Search Attributes for Workflow visibility.
- [Temporal Visibility](https://docs.temporal.io/visibility) — Overview of the Visibility subsystem and List Filter Query syntax.
- [ApplicationFailure Reference](https://docs.temporal.io/references/failures#application-failure) — API reference for `ApplicationFailure` including retryable and non-retryable error handling. No newline at end of file

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ [vale] reported by reviewdog 🐶
[Temporal.RelativeLinks] Use a relative path instead of the absolute docs.temporal.io URL 'https://docs.temporal.io/references/failures#application-failure'.

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.

2 participants