[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-temporal-temporal-ops":3,"mdc-98j9jn-key":33,"related-org-temporal-temporal-ops":3734,"related-repo-temporal-temporal-ops":3845},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":24,"repoUrl":25,"updatedAt":26,"license":27,"forks":24,"topics":28,"repo":29,"sourceUrl":25,"mdContent":32},"temporal-ops","administer Temporal server environments","Administer and diagnose running Temporal Cloud or self-hosted Temporal Server environments via CLI (temporal, tcld) — not SDK code. Operations: namespace CRUD, Cloud capacity\u002FAPS, API-key rotation, mTLS cert rotation, workflow health, batch cancel\u002Fterminate\u002Freset, export, search attributes, Ops API, billing, audit logs, Terraform, SAML\u002FSCIM, migration. Diagnosis: bottom-up triage of stuck workflows, non-determinism, worker-health, task-queue problems, HA failover, payload size limits, performance bottlenecks, missed schedules. Do NOT trigger for generic TLS\u002FgRPC errors unrelated to Temporal, writing application code (temporal-developer), or worker tuning\u002Fsizing (temporal-workertuning).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"temporal","Temporal","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Ftemporal.png","temporalio",[13,17,20,21],{"name":14,"slug":15,"type":16},"Operations","operations","tag",{"name":18,"slug":19,"type":16},"CLI","cli",{"name":9,"slug":8,"type":16},{"name":22,"slug":23,"type":16},"Cloud","cloud",0,"https:\u002F\u002Fgithub.com\u002Ftemporalio\u002Fskill-temporal-ops","2026-08-15T03:47:47.048467",null,[],{"repoUrl":25,"stars":24,"forks":24,"topics":30,"description":31},[],"A skill to help troubleshoot Temporal connectivity, authentication, and configuration issues.","---\nname: temporal-ops\ndescription: 'Administer and diagnose running Temporal Cloud or self-hosted Temporal Server environments via CLI (temporal, tcld) — not SDK code. Operations: namespace CRUD, Cloud capacity\u002FAPS, API-key rotation, mTLS cert rotation, workflow health, batch cancel\u002Fterminate\u002Freset, export, search attributes, Ops API, billing, audit logs, Terraform, SAML\u002FSCIM, migration. Diagnosis: bottom-up triage of stuck workflows, non-determinism, worker-health, task-queue problems, HA failover, payload size limits, performance bottlenecks, missed schedules. Do NOT trigger for generic TLS\u002FgRPC errors unrelated to Temporal, writing application code (temporal-developer), or worker tuning\u002Fsizing (temporal-workertuning).'\nversion: 0.2.0\n---\n\n# Skill: temporal-ops\n\n## Overview\n\nThis skill operates and diagnoses Temporal environments. It has two modes:\n\n- **Operations:** the user wants to do something — create a namespace, rotate a key, check capacity, find unhealthy workflows, cancel a batch, set up export. The skill executes the right commands and interprets the output.\n- **Diagnosis:** the user arrives with a symptom — a stuck workflow, a cert error, a connection timeout, a non-determinism panic. The skill routes the investigation through a layered, bottom-up diagnosis until a root cause is identified with a confidence score.\n\nIt does not teach how to write workflows or activities (use `skill-temporal-developer` for that), and it does not reproduce exhaustive CLI flag tables — run `temporal \u003Ccmd> --help` for those, and see [cli-conventions.md](references\u002Fops\u002Fcli-conventions.md) for cross-command CLI conventions. The boundary is: if the user needs to administer or troubleshoot a running Temporal environment, this skill applies.\n\n## Out of scope\n\n- **Writing workflows, activities, or SDK code** → `skill-temporal-developer`.\n- **Exhaustive CLI flags \u002F command reference** → run `temporal \u003Ccmd> --help`; **cross-command CLI conventions** → [cli-conventions.md](references\u002Fops\u002Fcli-conventions.md).\n- **Worker performance tuning, sizing, capacity planning** → `skill-temporal-workertuning`.\n- **Helm, Kubernetes, database admin, monitoring stack config** for self-hosted — beyond the CLI surface.\n\nIf the conversation drifts into one of these areas, hand off to the relevant sibling skill rather than improvising.\n\n## Philosophy\n\n### Operator discipline\n\nWhen the user wants to perform an operational task:\n\n1. **Identify the intent and backend.** Is this a Cloud operation (`tcld`) or a self-hosted operation (`temporal operator`)? Data-plane operations (`temporal workflow`, `temporal batch`, etc.) work on both. **If the backend is ambiguous, ask before proceeding — do not assume Cloud or self-hosted and do not output environment-specific commands until you know.**\n2. **Execute commands and interpret output.** Run the documented command, read the result, and report what it means — or act on it if the user asked for an action. Read-only commands (`get`, `list`, `describe`, `count`, `show`) run freely. Anything listed under [Destructive operations](#destructive-operations) is proposed to the user first.\n3. **Verify the result.** After a mutating operation, confirm the new state matches the user's intent.\n\n### Destructive operations\n\nAn operation belongs to this tier if it is **irreversible** (`tcld namespace\ndelete`), **revokes access for a live identity** (`tcld apikey delete`), **moves\nproduction traffic** (`tcld namespace failover`), or **fans out to every match**\n(any `--query` form). Apply the test to the operation in front of you — this is a\nrule, not a list, and a command's absence from any list in this skill does not\nplace it outside the tier.\n\nFor anything in the tier: gather the evidence and **propose**. Do not run it on\nyour own initiative, and do not run one to find out what it would do. The\nreference file for each command states its specific blast radius; read that\nbefore proposing, not after.\n\n1. **Blast radius as a number, not a description.** For any `--query` form, run\n   `temporal workflow count --query '\u003Cquery>'` with the byte-identical query\n   first and carry the result into the proposal. A filter with no narrowing\n   predicate beyond `ExecutionStatus=\"Running\"` matches every open Execution in\n   the Namespace.\n2. **Name the target.** State the exact command, the target, and the Namespace it\n   resolves to. Connection settings can come from `TEMPORAL_*` env vars or a\n   config-file profile, so the target is frequently not visible in the command\n   text. If the backend or Namespace was inferred from context rather than stated\n   by the user, say so — a destructive command aimed at the wrong Namespace is the\n   most common way this goes wrong.\n3. **Ask explicitly, then run it so it completes.** Put the command, the target,\n   and — for any `--query` form — the count from step 1 to the user as a direct\n   question, and wait for an answer. Once they approve, run it with `--yes` on the\n   `--query` batch forms; that flag is what lets an approved batch finish, since\n   the interactive prompt needs a terminal and without one the command reports\n   `user denied confirmation` and does nothing. `--yes` belongs in a command the\n   user approved, never in a retry of one that failed its prompt. Do not substitute\n   a loop over single-target `workflow terminate --workflow-id`. Approval covers one\n   command against one target; it does not carry to the next command, a widened\n   query, or a second Namespace.\n4. **Verify, and know the abort path.** Re-run the corresponding `get`,\n   `describe`, or `count`. A batch job drains asynchronously:\n   `temporal batch describe --job-id \u003Cid>` shows how far it has gotten and\n   `temporal batch terminate --job-id \u003Cid>` stops it before it reaches the rest\n   of its matches.\n\nWhen a reversible sibling reaches the same goal, propose it alongside: `cancel`\nlets Workflow cleanup code run where `terminate` does not; `apikey disable` is\nreversible where `delete` is not; `accepted-client-ca add` appends where `set`\nreplaces.\n\nAssume nothing in the environment will stop a destructive command on your behalf.\nCredential scope, command denylists, and confirmation prompts may or may not be\nconfigured, and their possible presence is not a reason to skip any step above —\nyou are the safeguard the user is relying on.\n\n### Diagnostic discipline\n\nWhen the user arrives with a failure or anomaly:\n\n1. **Bottom-up diagnosis.** Verify the lower layer before blaming the upper one. The layers, from bottom to top:\n   1. DNS \u002F network path\n   2. TCP \u002F port reachability\n   3. TLS handshake\n   4. Authentication (API key or mTLS client cert)\n   5. gRPC health and Temporal frontend reachability\n   6. Temporal namespace, task queues, workers\n   7. Workflow code (determinism, signals, timers, child workflows)\n\n   The full ladder lives in [diagnostic-ladder.md](references\u002Ftriage\u002Fdiagnostic-ladder.md).\n\n2. **Always verify the next layer up** rather than prescribing a speculative fix. If TLS works, prove auth works before blaming the workflow. If pollers are present, prove the workflow's last event before blaming the worker.\n\n3. **Attach a confidence score** (1-10) to every proposed diagnosis:\n   - 9-10: symptoms, operation, and confirming signals line up cleanly.\n   - 6-8: evidence is good but at least one alternative remains plausible.\n   - 1-5: the issue is still ambiguous; the \"fix\" is the next discriminating check, not a root cause.\n\n4. **Name ambiguity explicitly.** Errors like `context deadline exceeded` are not self-describing, and a single code such as `RESOURCE_EXHAUSTED` can mean more than one condition (account-limit throttling vs. per-Workflow lock contention). Surface that, gather more context, and scope the next step narrowly.\n\nThese are skill conventions, not docs-derived facts.\n\n## Intent routing\n\n### Operations\n\nFind the row that matches the user's intent. The reference file contains the commands and procedures.\n\n| Intent | Category | Reference |\n|---|---|---|\n| Create, get, list, delete a Cloud namespace | Cloud namespace admin | [cloud-namespace-admin.md](references\u002Fops\u002Fcloud-namespace-admin.md) |\n| Add\u002Fremove region, failover, HA config | Cloud namespace admin | [cloud-namespace-admin.md](references\u002Fops\u002Fcloud-namespace-admin.md) |\n| Set retention, tags, codec-server, connectivity rules | Cloud namespace admin | [cloud-namespace-admin.md](references\u002Fops\u002Fcloud-namespace-admin.md) |\n| Add or rename Cloud search attributes | Cloud namespace admin | [cloud-namespace-admin.md](references\u002Fops\u002Fcloud-namespace-admin.md) |\n| Check current APS \u002F capacity mode | Cloud capacity | [cloud-capacity.md](references\u002Fops\u002Fcloud-capacity.md) |\n| Switch On-Demand ↔ Provisioned, set TRUs | Cloud capacity | [cloud-capacity.md](references\u002Fops\u002Fcloud-capacity.md) |\n| Understand APS \u002F RPS \u002F OPS limits and throttling | Cloud capacity | [cloud-capacity.md](references\u002Fops\u002Fcloud-capacity.md) |\n| Create, disable, enable, delete an API key | Cloud IAM | [cloud-iam.md](references\u002Fops\u002Fcloud-iam.md) |\n| Invite, list, remove users; set roles\u002Fpermissions | Cloud IAM | [cloud-iam.md](references\u002Fops\u002Fcloud-iam.md) |\n| Manage user groups and service accounts | Cloud IAM | [cloud-iam.md](references\u002Fops\u002Fcloud-iam.md) |\n| Generate mTLS certs, upload CA, set cert filters | Cloud certs | [cloud-certs.md](references\u002Fops\u002Fcloud-certs.md) |\n| Rotate mTLS certificates | Cloud certs | [cloud-certs.md](references\u002Fops\u002Fcloud-certs.md) |\n| Set up Workflow History Export (S3 \u002F GCS) | Cloud namespace admin | [cloud-namespace-admin.md](references\u002Fops\u002Fcloud-namespace-admin.md) |\n| Set up PrivateLink \u002F PSC, manage connectivity rules | Cloud connectivity | [cloud-connectivity.md](references\u002Fops\u002Fcloud-connectivity.md) |\n| Self-hosted cluster health, describe, namespace CRUD | Self-hosted admin | [self-hosted-admin.md](references\u002Fops\u002Fself-hosted-admin.md) |\n| Self-hosted search attributes, Nexus endpoints | Self-hosted admin | [self-hosted-admin.md](references\u002Fops\u002Fself-hosted-admin.md) |\n| Check or manage a Cloud Nexus Endpoint's caller-Namespace allowlist; the 1,000-caller default | Cloud namespace admin | [cloud-namespace-admin.md#tcld-nexus-endpoint-allowed-namespace](references\u002Fops\u002Fcloud-namespace-admin.md#tcld-nexus-endpoint-allowed-namespace) |\n| Find stuck\u002Fhung\u002Funhealthy workflows via list queries | Workflow health | [workflow-health.md](references\u002Fops\u002Fworkflow-health.md) |\n| Task queue poller status, workflow counts | Workflow health | [workflow-health.md](references\u002Fops\u002Fworkflow-health.md) |\n| Cancel, terminate, or reset workflows | Workflow recovery | [workflow-stuck.md#recovery-commands](references\u002Ftriage\u002Fworkflow-stuck.md#recovery-commands) |\n| Bulk \u002F batch operations on workflows (`--query`) | CLI conventions | [cli-conventions.md](references\u002Fops\u002Fcli-conventions.md#the---query--batch-job-bridge) |\n| Schedule CRUD, time-spec, and operations | CLI conventions | [cli-conventions.md](references\u002Fops\u002Fcli-conventions.md#schedule-time-spec-forms) |\n| Complete or fail an activity externally | CLI conventions | [cli-conventions.md](references\u002Fops\u002Fcli-conventions.md#operation--command-index) |\n| Cloud Ops API access, rate limits, Go SDK | Cloud Ops API | [cloud-ops-api.md](references\u002Fops\u002Fcloud-ops-api.md) |\n| View billing, generate billing report, cost attribution | Cloud billing | [cloud-billing.md](references\u002Fops\u002Fcloud-billing.md) |\n| Audit Logs: view, query via API, configure sink (AWS\u002FGCP) | Cloud audit logs | [cloud-audit-logs.md](references\u002Fops\u002Fcloud-audit-logs.md) |\n| Terraform provider: Namespace\u002FUser\u002FSA\u002FAPI Key\u002FNexus CRUD | Cloud Terraform | [cloud-terraform.md](references\u002Fops\u002Fcloud-terraform.md) |\n| Expiry alerts (cert, API key, credit), status page | Cloud notifications | [cloud-notifications.md](references\u002Fops\u002Fcloud-notifications.md) |\n| SAML SSO, SCIM provisioning, IdP integration | Cloud SAML\u002FSCIM | [cloud-saml-scim.md](references\u002Fops\u002Fcloud-saml-scim.md) |\n| Migrate self-hosted to Cloud (automated or manual), migrate between Cloud regions | Cloud migration | [cloud-migration.md](references\u002Fops\u002Fcloud-migration.md) |\n| End-to-end ops playbook (setup, rotation, audit, billing, Terraform) | Ops recipes | [ops\u002Frecipes.md](references\u002Fops\u002Frecipes.md) |\n\n### Diagnosis\n\nFind the row that matches the user's symptom. Start the investigation at the first check, then read the linked reference.\n\n| Symptom | Category | First check | Reference |\n|---|---|---|---|\n| `connection refused`, cannot reach frontend | Connectivity | `nc -zvw10 \u003Chost> 7233` | [connectivity.md#connection-refused](references\u002Ftriage\u002Fconnectivity.md#connection-refused) |\n| `no such host`, DNS resolution fails | Connectivity | `dig +short \u003Chost>` or `nslookup \u003Chost>` | [connectivity.md#dns](references\u002Ftriage\u002Fconnectivity.md#dns) |\n| `tls: handshake failure`, server rejects handshake | Certificates | `openssl s_client -connect \u003Chost>:7233 -servername \u003Chost> \u003C\u002Fdev\u002Fnull` | [certificates.md#handshake-failure](references\u002Ftriage\u002Fcertificates.md#handshake-failure) |\n| `x509: certificate has expired` or `not yet valid` | Certificates | `openssl x509 -enddate -noout -in cert.pem` | [certificates.md#expired-or-not-yet-valid](references\u002Ftriage\u002Fcertificates.md#expired-or-not-yet-valid) |\n| `x509: certificate signed by unknown authority` | Certificates | `openssl verify -CAfile ca.pem client.pem` | [certificates.md#unknown-authority](references\u002Ftriage\u002Fcertificates.md#unknown-authority) |\n| `tcld` session \u002F auth fails, Cloud role unclear | Authentication | `tcld account get` | [authentication.md#cloud-role-and-permission-model](references\u002Ftriage\u002Fauthentication.md#cloud-role-and-permission-model) |\n| `UNAUTHENTICATED`, API key rejected | Authentication | `env \\| grep -i TEMPORAL_API_KEY`, then `tcld apikey get --id \u003Capikey_id>` | [authentication.md#things-to-check-when-unauthenticated-is-returned-with-an-api-key](references\u002Ftriage\u002Fauthentication.md#things-to-check-when-unauthenticated-is-returned-with-an-api-key) |\n| `namespace not found` \u002F wrong namespace string with an API key | Authentication | Confirm Regional Endpoint form `\u003Cregion>.\u003Ccloud_provider>.api.temporal.io:7233` | [authentication.md#address-form-for-api-key-connections](references\u002Ftriage\u002Fauthentication.md#address-form-for-api-key-connections) |\n| `RESOURCE_EXHAUSTED` gRPC status | Rate limits | Identify which limit fired: throttle metrics on Cloud v1, the `resource_exhausted_cause` label on v0 \u002F self-hosted | [rate-limits.md#identifying-which-limit-was-hit](references\u002Ftriage\u002Frate-limits.md#identifying-which-limit-was-hit) |\n| Task queue shows no pollers | Worker health | `temporal task-queue describe --task-queue \u003Cq>` | [worker-health.md#what-no-pollers-looks-like](references\u002Ftriage\u002Fworker-health.md#what-no-pollers-looks-like) |\n| Workflow stuck on a pending activity \u002F timer \u002F child \u002F signal | Workflow stuck | `temporal workflow describe --workflow-id \u003Cid>` | [workflow-stuck.md#the-primary-inspection-command-temporal-workflow-describe](references\u002Ftriage\u002Fworkflow-stuck.md#the-primary-inspection-command-temporal-workflow-describe) |\n| `NondeterminismError`, repeating `WorkflowTaskFailed` | Non-determinism | Identify the last `WorkflowTaskFailed` cause in the Event History | [non-determinism.md#the-wft-failure-signature-of-non-determinism](references\u002Ftriage\u002Fnon-determinism.md#the-wft-failure-signature-of-non-determinism) |\n| Replay fails locally but prod workflow was running | Non-determinism | Fetch the history and run the SDK replayer in one test | [replay.md#step-2--run-the-sdk-replayer-all-supported-sdks](references\u002Ftriage\u002Freplay.md#step-2--run-the-sdk-replayer-all-supported-sdks) |\n| HA failover did not route traffic to failover region | HA failover | `tcld namespace get --namespace \u003Cns>.\u003Cacct>` vs. DNS CNAME | [ha-failover.md#start-here-establish-ground-truth](references\u002Ftriage\u002Fha-failover.md#start-here-establish-ground-truth) |\n| Serverless Worker (AWS Lambda) stopped processing work after a Namespace failover | HA failover | Confirm a `FailoverNamespace` audit event, then compare the new active region against the Lambda ARN on the Worker Deployment Version | [ha-failover.md#symptom-serverless-workers-kept-running-in-the-old-region-after-failover](references\u002Ftriage\u002Fha-failover.md#symptom-serverless-workers-kept-running-in-the-old-region-after-failover) |\n| `context deadline exceeded` (unknown layer) | Runtime errors | Identify which operation and SDK emitted it | [runtime-errors.md#deadline-exceeded](references\u002Ftriage\u002Fruntime-errors.md#deadline-exceeded) |\n| `Workflow is busy` \u002F `ResourceExhausted` on signal\u002Fupdate\u002Fquery to one Workflow (BusyWorkflow) | Runtime errors | Rule out account-limit throttling, then split `temporal_cloud_v1_resource_exhausted_error_count` by `operation` | [runtime-errors.md#workflow-lock-contention-busyworkflow](references\u002Ftriage\u002Fruntime-errors.md#workflow-lock-contention-busyworkflow) |\n| `PAYLOADS_TOO_LARGE`, `exceeds size limit`, payload\u002FgRPC blob size error | Blob size limits | Check whether the issue is payload (2 MB) or gRPC message (4 MB) | [blob-size-limits.md](references\u002Ftriage\u002Fblob-size-limits.md) |\n| Workflow stuck in invisible retry loop (gRPC message too large) | Blob size limits | Check Worker logs for `ResourceExhausted`, reduce batch size | [blob-size-limits.md](references\u002Ftriage\u002Fblob-size-limits.md) |\n| High schedule-to-start latency, task slot depletion, slow Workflow Tasks | Performance bottlenecks | Check `temporal_workflow_task_schedule_to_start_latency` P95 | [performance-bottlenecks.md](references\u002Ftriage\u002Fperformance-bottlenecks.md) |\n| High replay latency, cache evictions, deadlock detected | Performance bottlenecks | Check `workflow_task_replay_latency` and sticky cache metrics | [performance-bottlenecks.md](references\u002Ftriage\u002Fperformance-bottlenecks.md) |\n| Schedule did not fire, missed catchup window | Missed Schedule Actions | Alert on `temporal_cloud_v1_schedule_missed_catchup_window_count` | [schedule-missed.md](references\u002Ftriage\u002Fschedule-missed.md) |\n\nIf a symptom does not map to a row, start at [diagnostic-ladder.md](references\u002Ftriage\u002Fdiagnostic-ladder.md) and work up from whichever layer was last known healthy.\n\n## The process\n\n### Operations path\n\n#### Step 1: Identify intent and backend\n\nDetermine what the user wants to do and whether it targets:\n- **Temporal Cloud** → use `tcld` commands (requires `tcld login`)\n- **Self-hosted cluster** → use `temporal operator` commands\n- **Data plane (either backend)** → use `temporal workflow`, `temporal batch`, `temporal schedule`, etc.\n\nIf the backend is unambiguous from context — `.tmprl.cloud` address, `tcld` command, Cloud namespace format `ns.account` → Cloud; Kubernetes\u002FHelm, `docker-compose`, self-hosted config files → self-hosted — proceed without asking. **Otherwise, stop and ask: \"Are you on Temporal Cloud or self-hosted?\" before outputting any environment-specific commands.** Do not default to either environment. Once known, save the answer to memory so you don't ask again in future conversations.\n\n#### Step 2: Execute and interpret\n\nLook up the intent in the Operations table above. Read the linked reference file for the exact commands, flags, and expected output. Run the command and interpret the result for the user.\n\n#### Step 3: Verify\n\nAfter a mutating operation (create, update, delete, rotate), confirm the new state:\n- Re-run the corresponding `get` or `describe` command\n- Confirm the output matches the user's intent\n- Report the result\n\n### Diagnosis path\n\n#### Step 1: Identify the symptom\n\nAsk the user for the exact, copy-pasted error text. Do not accept paraphrases — the exact string often encodes the layer (e.g., `x509:` prefix means TLS\u002Fcert layer, `RESOURCE_EXHAUSTED:` prefix means gRPC rate limit, `NondeterminismError` means workflow replay layer). Note that `RESOURCE_EXHAUSTED` alone does not tell you which condition fired — account-limit throttling and per-Workflow lock contention (`Workflow is busy`, i.e. BusyWorkflow) share the code. Split the resource-exhausted metric by its label (`operation` on the Cloud v1 family, `resource_exhausted_cause` on v0 and self-hosted) rather than parsing the free-text message.\n\nConfirm three things before continuing:\n- What command was run, or what SDK call produced the error?\n- What environment produced it (local dev server, self-hosted cluster, Temporal Cloud)? If clear from context (addresses, commands, namespace format), don't ask — **but if uncertain, ask now before proceeding with any diagnosis.** Save the answer to memory for future conversations.\n- What changed recently (new deploy, new certs, new namespace, new region)?\n\n#### Step 2: Gather context\n\nThe context the investigation needs depends on the category. At minimum:\n\n- **For any Cloud auth \u002F connectivity issue:** auth method (API key vs mTLS), exact address, exact namespace, SDK + version. The endpoint family differs by auth method — see [connectivity.md#endpoint-formats](references\u002Ftriage\u002Fconnectivity.md#endpoint-formats). For private connectivity (PrivateLink \u002F PSC), TLS server name overrides also vary by auth method — see [cloud-connectivity.md](references\u002Fops\u002Fcloud-connectivity.md).\n- **For a stuck workflow:** namespace, workflow ID, run ID, and the output of `temporal workflow describe --workflow-id \u003Cid>` (pending-operation state lives here, not in the Event History alone). Event History via `temporal workflow show` is the companion view.\n- **For a worker health issue:** worker logs (registration errors, auth errors, panics), the output of `temporal task-queue describe --task-queue \u003Cq>`, and `temporal worker describe --task-queue \u003Cq>` for per-worker details.\n- **For a non-determinism error:** the worker log line containing the error, the workflow type name, and access to the history JSON for replay.\n\n#### Step 3: Validate pasted SDK config (if any)\n\nIf the user has pasted SDK connection code — even just the address\u002Fnamespace\u002Fauth fields — review it against [sdk-snippet-review.md](references\u002Ftriage\u002Fsdk-snippet-review.md) **before** descending the ladder. Wrong endpoint family, short namespace, or mismatched auth method will make every network-layer probe below look broken when nothing lower actually is.\n\nSkip this step when the user has an established, previously-working config and the symptom is new — the snippet is not the culprit, the environment changed. Otherwise treat snippet validation as Layer 0.\n\n#### Step 4: Descend the ladder\n\nUse [diagnostic-ladder.md](references\u002Ftriage\u002Fdiagnostic-ladder.md) to pick the right starting layer. As a rule of thumb:\n\n- Auth \u002F connectivity \u002F cert symptom → start at layer 1 (DNS) and walk up.\n- Worker \u002F task-queue symptom → start at layer 6 (namespace + pollers).\n- Stuck workflow \u002F determinism symptom → start at layer 7 (workflow code), but confirm layer 6 (worker is actually polling) first.\n\nEach layer has a command that proves it healthy and a failure signature that tells you whether the problem lives at that layer or higher.\n\n#### Step 5: Fix and verify\n\nPrescribe the fix scoped to the root cause. Then verify by re-running the layer's healthy-check command and, if possible, the original user operation. Attach the confidence score to the diagnosis.\n\nIf the layer above the fix is still failing, return to step 4 and continue walking upward — the first broken layer is rarely the only one.\n\n## Prerequisites\n\n- **Temporal CLI** (`temporal`) — required for data-plane operations and self-hosted admin. Install: `brew install temporal` or see [Temporal CLI docs](https:\u002F\u002Fdocs.temporal.io\u002Fcli).\n- **tcld** — required for Cloud operations. Install: `brew install temporal-cloud-cli` or see [tcld docs](https:\u002F\u002Fdocs.temporal.io\u002Fcloud\u002Ftcld). Authenticate with `tcld login` before use.\n\n## Reference files\n\n### Operations\n\n- [cloud-namespace-admin.md](references\u002Fops\u002Fcloud-namespace-admin.md) — Cloud namespace lifecycle via `tcld`: create, get, list, delete, failover, add-region, retention, tags, codec-server, HA config, connectivity rules, search attributes, accepted-client-ca, certificate filters, export, and the `tcld nexus endpoint allowed-namespace` caller allowlist (1,000-caller Access Policy ceiling).\n- [cloud-capacity.md](references\u002Fops\u002Fcloud-capacity.md) — Capacity modes (On-Demand \u002F Provisioned), APS\u002FRPS\u002FOPS definitions, TRUs, `tcld namespace capacity update`, default limits, throttling, APS management best practices.\n- [cloud-iam.md](references\u002Fops\u002Fcloud-iam.md) — API key lifecycle (`tcld apikey`), users (`tcld user`), user groups (`tcld user-group`), service accounts, account operations (`tcld account`), roles, namespace permissions.\n- [cloud-certs.md](references\u002Fops\u002Fcloud-certs.md) — mTLS cert management: generating certs with `tcld generate-certificates`, uploading CAs, certificate filters, cert rotation, switching mTLS ↔ API keys.\n- [cloud-connectivity.md](references\u002Fops\u002Fcloud-connectivity.md) — Private connectivity (AWS PrivateLink \u002F GCP PSC), connectivity rules: setup, rule parameters, tcld commands, attaching rules to namespaces.\n- [cloud-migration.md](references\u002Fops\u002Fcloud-migration.md) — Migration paths: automated self-hosted→Cloud (S2S proxy, `tcld migration` commands, 5 phases), manual self-hosted→Cloud (client changes, workflow strategies), within-Cloud region-to-region (HA add-region\u002Ffailover).\n- [cloud-ops-api.md](references\u002Fops\u002Fcloud-ops-api.md) — Cloud Ops API: HTTP and gRPC endpoints (`saas-api.tmprl.cloud`), Go SDK, protobuf compilation, rate limits (160 RPS account, 40 user, 80 SA, 10 concurrent async), API version header, use cases.\n- [cloud-billing.md](references\u002Fops\u002Fcloud-billing.md) — Cloud billing: Billing Center (invoices, credits, plans, cost by namespace), Usage Dashboards, Billing API: async CSV report generation, FOCUS-friendly format, 27-column report schema, date range constraints.\n- [cloud-audit-logs.md](references\u002Fops\u002Fcloud-audit-logs.md) — Cloud Audit Logs: supported control plane events (Account, API Keys, Connectivity Rules, Namespace, Export, Nexus, Service Accounts, User, User Groups), JSON format, API access (30-day retention), AWS Kinesis and GCP Pub\u002FSub sink configuration.\n- [cloud-terraform.md](references\u002Fops\u002Fcloud-terraform.md) — Terraform provider: setup (`TEMPORAL_CLOUD_API_KEY`), `temporalcloud_namespace`\u002F`temporalcloud_user`\u002F`temporalcloud_service_account`\u002F`temporalcloud_apikey`\u002F`temporalcloud_nexus_endpoint` CRUD, import, data sources (regions, namespaces), limitations (API keys not importable, cannot manage Account Owner).\n- [cloud-notifications.md](references\u002Fops\u002Fcloud-notifications.md) — Cloud notifications: certificate expiry (15\u002F10\u002F5 days), API key expiry (30\u002F20\u002F10 days), credit consumption\u002Fexpiry alerts, plan changes, failover events, recipient roles, `noreply@temporal.io` sender.\n- [cloud-saml-scim.md](references\u002Fops\u002Fcloud-saml-scim.md) — SAML SSO (Entra ID, Okta): entity identifier (`urn:auth0:prod-tmprl:ACCOUNT_ID-saml`), callback URL (`login.tmprl.cloud`), IdP configuration steps, support ticket workflow. SCIM: supported vendors, prerequisites (SAML first), 10-minute sync window, group-to-role mapping.\n- [self-hosted-admin.md](references\u002Fops\u002Fself-hosted-admin.md) — Self-hosted control plane via `temporal operator`: cluster health\u002Fdescribe, namespace CRUD, search-attribute create\u002Flist\u002Fremove, Nexus endpoint CRUD.\n- [workflow-health.md](references\u002Fops\u002Fworkflow-health.md) — Data-plane health queries: `temporal workflow list` with List Filters, `temporal workflow describe`\u002F`show`\u002F`count`, `temporal task-queue describe` for poller status.\n- [cli-conventions.md](references\u002Fops\u002Fcli-conventions.md) — Cross-command `temporal` CLI conventions: connection\u002Fidentity (`TEMPORAL_*` env vars ↔ `--address`\u002F`--namespace`\u002F`--api-key`, `--identity`), output\u002Fformatting (`--output`, `--time-format`, payload shorthand), the `--query` ⇒ batch-job bridge (with `temporal batch describe\u002Flist\u002Fterminate`), and schedule time-spec forms. Ends with an operation→command index that routes each data-plane operation to its owner file. Delegates exhaustive flags to `temporal \u003Ccmd> --help`.\n- [ops\u002Frecipes.md](references\u002Fops\u002Frecipes.md) — End-to-end ops playbooks: set up new namespace, check APS, switch capacity mode, find hung workflows, rotate API key, audit access, rotate mTLS certs, check self-hosted health, view billing \u002F generate billing report, configure audit log sink, provision resources with Terraform, set up SAML SSO.\n\n### Diagnosis\n\n- [sdk-snippet-review.md](references\u002Ftriage\u002Fsdk-snippet-review.md) — Layer-0 config check for pasted SDK connection snippets: endpoint form per auth method, namespace format, auth \u002F TLS expectations, `TEMPORAL_*` env vars, common misconfigurations. Run before the diagnostic ladder.\n- [diagnostic-ladder.md](references\u002Ftriage\u002Fdiagnostic-ladder.md) — the seven-layer bottom-up model, with one canonical command per layer and cross-links into the topical leaves.\n- [connectivity.md](references\u002Ftriage\u002Fconnectivity.md) — DNS, TCP, endpoint families (Namespace Endpoint for mTLS vs. Regional Endpoint for API keys), firewall\u002Fproxy shapes, PrivateLink\u002FPSC, quick diagnostic scripts.\n- [certificates.md](references\u002Ftriage\u002Fcertificates.md) — x509 and TLS alert strings, expiry \u002F unknown-authority \u002F hostname-mismatch \u002F key-mismatch diagnosis, Cloud accepted-client-CA set via `tcld namespace accepted-client-ca`, Cloud mTLS certificate requirements, rotation and expiry notifications, openssl recipes.\n- [authentication.md](references\u002Ftriage\u002Fauthentication.md) — `UNAUTHENTICATED` vs `PERMISSION_DENIED`, API-key lifecycle (`tcld apikey` commands, env var propagation, required Regional Endpoint form), mTLS after TLS (certificate filters, identity-to-role mapping), Cloud account-level roles and namespace-level permissions.\n- [workflow-stuck.md](references\u002Ftriage\u002Fworkflow-stuck.md) — Workflow Execution Status values, `temporal workflow describe` as the primary inspection command, Event History via `temporal workflow show`, pending activities \u002F child workflows \u002F signals \u002F Nexus operations \u002F Workflow Tasks, WorkflowTaskFailed retry loops, recovery commands (signal, terminate, cancel, reset, pause\u002Funpause).\n- [non-determinism.md](references\u002Ftriage\u002Fnon-determinism.md) — determinism definition, WFT-failure signature, ND-inducing code patterns, per-SDK error shapes, identifying ND from Event History, local replay reproduction, remediation via Worker Versioning \u002F patching \u002F reset.\n- [worker-health.md](references\u002Ftriage\u002Fworker-health.md) — no-pollers runbook via `temporal task-queue describe`, reachability and versioning, worker-level describe, schedule-to-start latency, worker task slots, sticky execution and sticky cache, worker heartbeating, Cloud namespace-level poller limits, worker log signatures.\n- [rate-limits.md](references\u002Ftriage\u002Frate-limits.md) — what `RESOURCE_EXHAUSTED` means (and does not), Cloud APS \u002F RPS \u002F OPS under On-Demand and Provisioned capacity modes, self-hosted `frontend.rps` \u002F `frontend.namespaceRPS` dynamic config, identifying which limit fired via the throttle metrics (Cloud v1) or the `resource_exhausted_cause` label (v0 \u002F self-hosted), and separating account-limit throttling from single-resource exhaustion.\n- [ha-failover.md](references\u002Ftriage\u002Fha-failover.md) — Cloud HA routing via the Namespace Endpoint CNAME, verifying the active region (control-plane `tcld namespace get` vs. DNS view), clients that did not follow the failover, PrivateLink after failover, failover-not-executing, handover-window errors, platform limits, RPO\u002FRTO semantics, and Serverless Workers (AWS Lambda) not following a failover because compute-provider configuration is region-scoped.\n- [runtime-errors.md](references\u002Ftriage\u002Fruntime-errors.md) — deadline-exceeded disambiguated by operation and by where the call was made, Workflow lock contention (BusyWorkflow) separated from account-limit throttling and confirmed via the `operation` breakdown, routing for `no pollers` \u002F `INVALID_ARGUMENT` \u002F unspecified `UNAVAILABLE`.\n- [replay.md](references\u002Ftriage\u002Freplay.md) — fetching Event History with the SDK client (CLI export as fallback), running the SDK replayer in every supported SDK (Go, Python, TypeScript, Java, .NET, Ruby, PHP), `TEMPORAL_DEBUG` and the deadlock detector, interpreting divergent and successful replays, and the TypeScript-only VS Code extension.\n- [blob-size-limits.md](references\u002Ftriage\u002Fblob-size-limits.md) — Payload size limit (2 MB) and gRPC message size limit (4 MB): error messages, per-SDK behavior (Python 1.23.0+ vs. others), claim check pattern, External Storage (Pre-release), batch-size reduction.\n- [performance-bottlenecks.md](references\u002Ftriage\u002Fperformance-bottlenecks.md) — Latency and throughput diagnosis via SDK metrics: schedule-to-start latency, workflow task execution latency, replay latency, activity execution latency, task slot depletion, network request metrics, sticky cache metrics.\n- [schedule-missed.md](references\u002Ftriage\u002Fschedule-missed.md) — Missed Schedule Actions: alerting via `temporal_cloud_v1_schedule_missed_catchup_window_count` \u002F `schedule_missed_catchup_window`, investigation via `temporal schedule list` + `temporal schedule describe`, DescribeSchedule fields (`missedCatchupWindow`, `overlapSkipped`, `bufferDropped`), default catchup window (one year), root causes, overlap policies (6 values), backfill remediation.\n- [recipes.md](references\u002Ftriage\u002Frecipes.md) — four end-to-end triage walkthroughs: stuck workflow at 3am, cert expired with workers offline, task-queue backlog mystery, non-determinism caught in prod.\n\n## Feedback\n\n### Feedback prompt\n\nWhen you have **first** loaded this skill, output this message to the user:\n\n\"Thank you for trying out the public preview of the Temporal Ops skill! We would love to hear your feedback - positive or negative - over in the [Community Slack](https:\u002F\u002Ft.mp\u002Fslack), in the [#topic-ai channel](https:\u002F\u002Ftemporalio.slack.com\u002Farchives\u002FC0818FQPYKY).\"\n\nDo not output this message multiple times in the same conversation.\n\n### Reporting Issues in This Skill\n\nIf you (the AI) find this skill's explanations are unclear, misleading, or missing important information, draft a GitHub issue body describing the problem encountered and what would have helped, then ask the user to file it at https:\u002F\u002Fgithub.com\u002Ftemporalio\u002Fskill-temporal-ops\u002Fissues\u002Fnew. Do not file the issue autonomously.\n",{"data":34,"body":36},{"name":4,"description":6,"version":35},"0.2.0",{"type":37,"children":38},"root",[39,48,55,61,87,118,124,198,203,209,216,221,336,341,403,415,571,624,629,635,640,768,773,779,783,788,1471,1477,1482,2320,2331,2337,2343,2350,2355,2427,2470,2476,2481,2487,2492,2523,2529,2535,2591,2596,2621,2627,2632,2718,2724,2744,2749,2755,2766,2784,2789,2795,2800,2805,2811,2879,2885,2890,3305,3310,3663,3669,3675,3687,3710,3715,3721],{"type":40,"tag":41,"props":42,"children":44},"element","h1",{"id":43},"skill-temporal-ops",[45],{"type":46,"value":47},"text","Skill: temporal-ops",{"type":40,"tag":49,"props":50,"children":52},"h2",{"id":51},"overview",[53],{"type":46,"value":54},"Overview",{"type":40,"tag":56,"props":57,"children":58},"p",{},[59],{"type":46,"value":60},"This skill operates and diagnoses Temporal environments. It has two modes:",{"type":40,"tag":62,"props":63,"children":64},"ul",{},[65,77],{"type":40,"tag":66,"props":67,"children":68},"li",{},[69,75],{"type":40,"tag":70,"props":71,"children":72},"strong",{},[73],{"type":46,"value":74},"Operations:",{"type":46,"value":76}," the user wants to do something — create a namespace, rotate a key, check capacity, find unhealthy workflows, cancel a batch, set up export. The skill executes the right commands and interprets the output.",{"type":40,"tag":66,"props":78,"children":79},{},[80,85],{"type":40,"tag":70,"props":81,"children":82},{},[83],{"type":46,"value":84},"Diagnosis:",{"type":46,"value":86}," the user arrives with a symptom — a stuck workflow, a cert error, a connection timeout, a non-determinism panic. The skill routes the investigation through a layered, bottom-up diagnosis until a root cause is identified with a confidence score.",{"type":40,"tag":56,"props":88,"children":89},{},[90,92,99,101,107,109,116],{"type":46,"value":91},"It does not teach how to write workflows or activities (use ",{"type":40,"tag":93,"props":94,"children":96},"code",{"className":95},[],[97],{"type":46,"value":98},"skill-temporal-developer",{"type":46,"value":100}," for that), and it does not reproduce exhaustive CLI flag tables — run ",{"type":40,"tag":93,"props":102,"children":104},{"className":103},[],[105],{"type":46,"value":106},"temporal \u003Ccmd> --help",{"type":46,"value":108}," for those, and see ",{"type":40,"tag":110,"props":111,"children":113},"a",{"href":112},"references\u002Fops\u002Fcli-conventions.md",[114],{"type":46,"value":115},"cli-conventions.md",{"type":46,"value":117}," for cross-command CLI conventions. The boundary is: if the user needs to administer or troubleshoot a running Temporal environment, this skill applies.",{"type":40,"tag":49,"props":119,"children":121},{"id":120},"out-of-scope",[122],{"type":46,"value":123},"Out of scope",{"type":40,"tag":62,"props":125,"children":126},{},[127,144,172,188],{"type":40,"tag":66,"props":128,"children":129},{},[130,135,137,142],{"type":40,"tag":70,"props":131,"children":132},{},[133],{"type":46,"value":134},"Writing workflows, activities, or SDK code",{"type":46,"value":136}," → ",{"type":40,"tag":93,"props":138,"children":140},{"className":139},[],[141],{"type":46,"value":98},{"type":46,"value":143},".",{"type":40,"tag":66,"props":145,"children":146},{},[147,152,154,159,161,166,167,171],{"type":40,"tag":70,"props":148,"children":149},{},[150],{"type":46,"value":151},"Exhaustive CLI flags \u002F command reference",{"type":46,"value":153}," → run ",{"type":40,"tag":93,"props":155,"children":157},{"className":156},[],[158],{"type":46,"value":106},{"type":46,"value":160},"; ",{"type":40,"tag":70,"props":162,"children":163},{},[164],{"type":46,"value":165},"cross-command CLI conventions",{"type":46,"value":136},{"type":40,"tag":110,"props":168,"children":169},{"href":112},[170],{"type":46,"value":115},{"type":46,"value":143},{"type":40,"tag":66,"props":173,"children":174},{},[175,180,181,187],{"type":40,"tag":70,"props":176,"children":177},{},[178],{"type":46,"value":179},"Worker performance tuning, sizing, capacity planning",{"type":46,"value":136},{"type":40,"tag":93,"props":182,"children":184},{"className":183},[],[185],{"type":46,"value":186},"skill-temporal-workertuning",{"type":46,"value":143},{"type":40,"tag":66,"props":189,"children":190},{},[191,196],{"type":40,"tag":70,"props":192,"children":193},{},[194],{"type":46,"value":195},"Helm, Kubernetes, database admin, monitoring stack config",{"type":46,"value":197}," for self-hosted — beyond the CLI surface.",{"type":40,"tag":56,"props":199,"children":200},{},[201],{"type":46,"value":202},"If the conversation drifts into one of these areas, hand off to the relevant sibling skill rather than improvising.",{"type":40,"tag":49,"props":204,"children":206},{"id":205},"philosophy",[207],{"type":46,"value":208},"Philosophy",{"type":40,"tag":210,"props":211,"children":213},"h3",{"id":212},"operator-discipline",[214],{"type":46,"value":215},"Operator discipline",{"type":40,"tag":56,"props":217,"children":218},{},[219],{"type":46,"value":220},"When the user wants to perform an operational task:",{"type":40,"tag":222,"props":223,"children":224},"ol",{},[225,272,326],{"type":40,"tag":66,"props":226,"children":227},{},[228,233,235,241,243,249,251,257,259,265,267],{"type":40,"tag":70,"props":229,"children":230},{},[231],{"type":46,"value":232},"Identify the intent and backend.",{"type":46,"value":234}," Is this a Cloud operation (",{"type":40,"tag":93,"props":236,"children":238},{"className":237},[],[239],{"type":46,"value":240},"tcld",{"type":46,"value":242},") or a self-hosted operation (",{"type":40,"tag":93,"props":244,"children":246},{"className":245},[],[247],{"type":46,"value":248},"temporal operator",{"type":46,"value":250},")? Data-plane operations (",{"type":40,"tag":93,"props":252,"children":254},{"className":253},[],[255],{"type":46,"value":256},"temporal workflow",{"type":46,"value":258},", ",{"type":40,"tag":93,"props":260,"children":262},{"className":261},[],[263],{"type":46,"value":264},"temporal batch",{"type":46,"value":266},", etc.) work on both. ",{"type":40,"tag":70,"props":268,"children":269},{},[270],{"type":46,"value":271},"If the backend is ambiguous, ask before proceeding — do not assume Cloud or self-hosted and do not output environment-specific commands until you know.",{"type":40,"tag":66,"props":273,"children":274},{},[275,280,282,288,289,295,296,302,303,309,310,316,318,324],{"type":40,"tag":70,"props":276,"children":277},{},[278],{"type":46,"value":279},"Execute commands and interpret output.",{"type":46,"value":281}," Run the documented command, read the result, and report what it means — or act on it if the user asked for an action. Read-only commands (",{"type":40,"tag":93,"props":283,"children":285},{"className":284},[],[286],{"type":46,"value":287},"get",{"type":46,"value":258},{"type":40,"tag":93,"props":290,"children":292},{"className":291},[],[293],{"type":46,"value":294},"list",{"type":46,"value":258},{"type":40,"tag":93,"props":297,"children":299},{"className":298},[],[300],{"type":46,"value":301},"describe",{"type":46,"value":258},{"type":40,"tag":93,"props":304,"children":306},{"className":305},[],[307],{"type":46,"value":308},"count",{"type":46,"value":258},{"type":40,"tag":93,"props":311,"children":313},{"className":312},[],[314],{"type":46,"value":315},"show",{"type":46,"value":317},") run freely. Anything listed under ",{"type":40,"tag":110,"props":319,"children":321},{"href":320},"#destructive-operations",[322],{"type":46,"value":323},"Destructive operations",{"type":46,"value":325}," is proposed to the user first.",{"type":40,"tag":66,"props":327,"children":328},{},[329,334],{"type":40,"tag":70,"props":330,"children":331},{},[332],{"type":46,"value":333},"Verify the result.",{"type":46,"value":335}," After a mutating operation, confirm the new state matches the user's intent.",{"type":40,"tag":210,"props":337,"children":339},{"id":338},"destructive-operations",[340],{"type":46,"value":323},{"type":40,"tag":56,"props":342,"children":343},{},[344,346,351,353,359,361,366,367,373,374,379,380,386,388,393,395,401],{"type":46,"value":345},"An operation belongs to this tier if it is ",{"type":40,"tag":70,"props":347,"children":348},{},[349],{"type":46,"value":350},"irreversible",{"type":46,"value":352}," (",{"type":40,"tag":93,"props":354,"children":356},{"className":355},[],[357],{"type":46,"value":358},"tcld namespace delete",{"type":46,"value":360},"), ",{"type":40,"tag":70,"props":362,"children":363},{},[364],{"type":46,"value":365},"revokes access for a live identity",{"type":46,"value":352},{"type":40,"tag":93,"props":368,"children":370},{"className":369},[],[371],{"type":46,"value":372},"tcld apikey delete",{"type":46,"value":360},{"type":40,"tag":70,"props":375,"children":376},{},[377],{"type":46,"value":378},"moves\nproduction traffic",{"type":46,"value":352},{"type":40,"tag":93,"props":381,"children":383},{"className":382},[],[384],{"type":46,"value":385},"tcld namespace failover",{"type":46,"value":387},"), or ",{"type":40,"tag":70,"props":389,"children":390},{},[391],{"type":46,"value":392},"fans out to every match",{"type":46,"value":394},"\n(any ",{"type":40,"tag":93,"props":396,"children":398},{"className":397},[],[399],{"type":46,"value":400},"--query",{"type":46,"value":402}," form). Apply the test to the operation in front of you — this is a\nrule, not a list, and a command's absence from any list in this skill does not\nplace it outside the tier.",{"type":40,"tag":56,"props":404,"children":405},{},[406,408,413],{"type":46,"value":407},"For anything in the tier: gather the evidence and ",{"type":40,"tag":70,"props":409,"children":410},{},[411],{"type":46,"value":412},"propose",{"type":46,"value":414},". Do not run it on\nyour own initiative, and do not run one to find out what it would do. The\nreference file for each command states its specific blast radius; read that\nbefore proposing, not after.",{"type":40,"tag":222,"props":416,"children":417},{},[418,451,469,524],{"type":40,"tag":66,"props":419,"children":420},{},[421,426,428,433,435,441,443,449],{"type":40,"tag":70,"props":422,"children":423},{},[424],{"type":46,"value":425},"Blast radius as a number, not a description.",{"type":46,"value":427}," For any ",{"type":40,"tag":93,"props":429,"children":431},{"className":430},[],[432],{"type":46,"value":400},{"type":46,"value":434}," form, run\n",{"type":40,"tag":93,"props":436,"children":438},{"className":437},[],[439],{"type":46,"value":440},"temporal workflow count --query '\u003Cquery>'",{"type":46,"value":442}," with the byte-identical query\nfirst and carry the result into the proposal. A filter with no narrowing\npredicate beyond ",{"type":40,"tag":93,"props":444,"children":446},{"className":445},[],[447],{"type":46,"value":448},"ExecutionStatus=\"Running\"",{"type":46,"value":450}," matches every open Execution in\nthe Namespace.",{"type":40,"tag":66,"props":452,"children":453},{},[454,459,461,467],{"type":40,"tag":70,"props":455,"children":456},{},[457],{"type":46,"value":458},"Name the target.",{"type":46,"value":460}," State the exact command, the target, and the Namespace it\nresolves to. Connection settings can come from ",{"type":40,"tag":93,"props":462,"children":464},{"className":463},[],[465],{"type":46,"value":466},"TEMPORAL_*",{"type":46,"value":468}," env vars or a\nconfig-file profile, so the target is frequently not visible in the command\ntext. If the backend or Namespace was inferred from context rather than stated\nby the user, say so — a destructive command aimed at the wrong Namespace is the\nmost common way this goes wrong.",{"type":40,"tag":66,"props":470,"children":471},{},[472,477,479,484,486,492,494,499,501,507,509,514,516,522],{"type":40,"tag":70,"props":473,"children":474},{},[475],{"type":46,"value":476},"Ask explicitly, then run it so it completes.",{"type":46,"value":478}," Put the command, the target,\nand — for any ",{"type":40,"tag":93,"props":480,"children":482},{"className":481},[],[483],{"type":46,"value":400},{"type":46,"value":485}," form — the count from step 1 to the user as a direct\nquestion, and wait for an answer. Once they approve, run it with ",{"type":40,"tag":93,"props":487,"children":489},{"className":488},[],[490],{"type":46,"value":491},"--yes",{"type":46,"value":493}," on the\n",{"type":40,"tag":93,"props":495,"children":497},{"className":496},[],[498],{"type":46,"value":400},{"type":46,"value":500}," batch forms; that flag is what lets an approved batch finish, since\nthe interactive prompt needs a terminal and without one the command reports\n",{"type":40,"tag":93,"props":502,"children":504},{"className":503},[],[505],{"type":46,"value":506},"user denied confirmation",{"type":46,"value":508}," and does nothing. ",{"type":40,"tag":93,"props":510,"children":512},{"className":511},[],[513],{"type":46,"value":491},{"type":46,"value":515}," belongs in a command the\nuser approved, never in a retry of one that failed its prompt. Do not substitute\na loop over single-target ",{"type":40,"tag":93,"props":517,"children":519},{"className":518},[],[520],{"type":46,"value":521},"workflow terminate --workflow-id",{"type":46,"value":523},". Approval covers one\ncommand against one target; it does not carry to the next command, a widened\nquery, or a second Namespace.",{"type":40,"tag":66,"props":525,"children":526},{},[527,532,534,539,541,546,548,553,555,561,563,569],{"type":40,"tag":70,"props":528,"children":529},{},[530],{"type":46,"value":531},"Verify, and know the abort path.",{"type":46,"value":533}," Re-run the corresponding ",{"type":40,"tag":93,"props":535,"children":537},{"className":536},[],[538],{"type":46,"value":287},{"type":46,"value":540},",\n",{"type":40,"tag":93,"props":542,"children":544},{"className":543},[],[545],{"type":46,"value":301},{"type":46,"value":547},", or ",{"type":40,"tag":93,"props":549,"children":551},{"className":550},[],[552],{"type":46,"value":308},{"type":46,"value":554},". A batch job drains asynchronously:\n",{"type":40,"tag":93,"props":556,"children":558},{"className":557},[],[559],{"type":46,"value":560},"temporal batch describe --job-id \u003Cid>",{"type":46,"value":562}," shows how far it has gotten and\n",{"type":40,"tag":93,"props":564,"children":566},{"className":565},[],[567],{"type":46,"value":568},"temporal batch terminate --job-id \u003Cid>",{"type":46,"value":570}," stops it before it reaches the rest\nof its matches.",{"type":40,"tag":56,"props":572,"children":573},{},[574,576,582,584,590,592,598,600,606,608,614,616,622],{"type":46,"value":575},"When a reversible sibling reaches the same goal, propose it alongside: ",{"type":40,"tag":93,"props":577,"children":579},{"className":578},[],[580],{"type":46,"value":581},"cancel",{"type":46,"value":583},"\nlets Workflow cleanup code run where ",{"type":40,"tag":93,"props":585,"children":587},{"className":586},[],[588],{"type":46,"value":589},"terminate",{"type":46,"value":591}," does not; ",{"type":40,"tag":93,"props":593,"children":595},{"className":594},[],[596],{"type":46,"value":597},"apikey disable",{"type":46,"value":599}," is\nreversible where ",{"type":40,"tag":93,"props":601,"children":603},{"className":602},[],[604],{"type":46,"value":605},"delete",{"type":46,"value":607}," is not; ",{"type":40,"tag":93,"props":609,"children":611},{"className":610},[],[612],{"type":46,"value":613},"accepted-client-ca add",{"type":46,"value":615}," appends where ",{"type":40,"tag":93,"props":617,"children":619},{"className":618},[],[620],{"type":46,"value":621},"set",{"type":46,"value":623},"\nreplaces.",{"type":40,"tag":56,"props":625,"children":626},{},[627],{"type":46,"value":628},"Assume nothing in the environment will stop a destructive command on your behalf.\nCredential scope, command denylists, and confirmation prompts may or may not be\nconfigured, and their possible presence is not a reason to skip any step above —\nyou are the safeguard the user is relying on.",{"type":40,"tag":210,"props":630,"children":632},{"id":631},"diagnostic-discipline",[633],{"type":46,"value":634},"Diagnostic discipline",{"type":40,"tag":56,"props":636,"children":637},{},[638],{"type":46,"value":639},"When the user arrives with a failure or anomaly:",{"type":40,"tag":222,"props":641,"children":642},{},[643,704,714,742],{"type":40,"tag":66,"props":644,"children":645},{},[646,651,653,691,695,697,703],{"type":40,"tag":70,"props":647,"children":648},{},[649],{"type":46,"value":650},"Bottom-up diagnosis.",{"type":46,"value":652}," Verify the lower layer before blaming the upper one. The layers, from bottom to top:",{"type":40,"tag":222,"props":654,"children":655},{},[656,661,666,671,676,681,686],{"type":40,"tag":66,"props":657,"children":658},{},[659],{"type":46,"value":660},"DNS \u002F network path",{"type":40,"tag":66,"props":662,"children":663},{},[664],{"type":46,"value":665},"TCP \u002F port reachability",{"type":40,"tag":66,"props":667,"children":668},{},[669],{"type":46,"value":670},"TLS handshake",{"type":40,"tag":66,"props":672,"children":673},{},[674],{"type":46,"value":675},"Authentication (API key or mTLS client cert)",{"type":40,"tag":66,"props":677,"children":678},{},[679],{"type":46,"value":680},"gRPC health and Temporal frontend reachability",{"type":40,"tag":66,"props":682,"children":683},{},[684],{"type":46,"value":685},"Temporal namespace, task queues, workers",{"type":40,"tag":66,"props":687,"children":688},{},[689],{"type":46,"value":690},"Workflow code (determinism, signals, timers, child workflows)",{"type":40,"tag":692,"props":693,"children":694},"br",{},[],{"type":46,"value":696},"The full ladder lives in ",{"type":40,"tag":110,"props":698,"children":700},{"href":699},"references\u002Ftriage\u002Fdiagnostic-ladder.md",[701],{"type":46,"value":702},"diagnostic-ladder.md",{"type":46,"value":143},{"type":40,"tag":66,"props":705,"children":706},{},[707,712],{"type":40,"tag":70,"props":708,"children":709},{},[710],{"type":46,"value":711},"Always verify the next layer up",{"type":46,"value":713}," rather than prescribing a speculative fix. If TLS works, prove auth works before blaming the workflow. If pollers are present, prove the workflow's last event before blaming the worker.",{"type":40,"tag":66,"props":715,"children":716},{},[717,722,724],{"type":40,"tag":70,"props":718,"children":719},{},[720],{"type":46,"value":721},"Attach a confidence score",{"type":46,"value":723}," (1-10) to every proposed diagnosis:",{"type":40,"tag":62,"props":725,"children":726},{},[727,732,737],{"type":40,"tag":66,"props":728,"children":729},{},[730],{"type":46,"value":731},"9-10: symptoms, operation, and confirming signals line up cleanly.",{"type":40,"tag":66,"props":733,"children":734},{},[735],{"type":46,"value":736},"6-8: evidence is good but at least one alternative remains plausible.",{"type":40,"tag":66,"props":738,"children":739},{},[740],{"type":46,"value":741},"1-5: the issue is still ambiguous; the \"fix\" is the next discriminating check, not a root cause.",{"type":40,"tag":66,"props":743,"children":744},{},[745,750,752,758,760,766],{"type":40,"tag":70,"props":746,"children":747},{},[748],{"type":46,"value":749},"Name ambiguity explicitly.",{"type":46,"value":751}," Errors like ",{"type":40,"tag":93,"props":753,"children":755},{"className":754},[],[756],{"type":46,"value":757},"context deadline exceeded",{"type":46,"value":759}," are not self-describing, and a single code such as ",{"type":40,"tag":93,"props":761,"children":763},{"className":762},[],[764],{"type":46,"value":765},"RESOURCE_EXHAUSTED",{"type":46,"value":767}," can mean more than one condition (account-limit throttling vs. per-Workflow lock contention). Surface that, gather more context, and scope the next step narrowly.",{"type":40,"tag":56,"props":769,"children":770},{},[771],{"type":46,"value":772},"These are skill conventions, not docs-derived facts.",{"type":40,"tag":49,"props":774,"children":776},{"id":775},"intent-routing",[777],{"type":46,"value":778},"Intent routing",{"type":40,"tag":210,"props":780,"children":781},{"id":15},[782],{"type":46,"value":14},{"type":40,"tag":56,"props":784,"children":785},{},[786],{"type":46,"value":787},"Find the row that matches the user's intent. The reference file contains the commands and procedures.",{"type":40,"tag":789,"props":790,"children":791},"table",{},[792,816],{"type":40,"tag":793,"props":794,"children":795},"thead",{},[796],{"type":40,"tag":797,"props":798,"children":799},"tr",{},[800,806,811],{"type":40,"tag":801,"props":802,"children":803},"th",{},[804],{"type":46,"value":805},"Intent",{"type":40,"tag":801,"props":807,"children":808},{},[809],{"type":46,"value":810},"Category",{"type":40,"tag":801,"props":812,"children":813},{},[814],{"type":46,"value":815},"Reference",{"type":40,"tag":817,"props":818,"children":819},"tbody",{},[820,843,862,881,900,922,941,960,982,1001,1020,1042,1061,1080,1102,1124,1143,1164,1186,1205,1227,1255,1275,1295,1317,1339,1361,1383,1405,1427,1449],{"type":40,"tag":797,"props":821,"children":822},{},[823,829,834],{"type":40,"tag":824,"props":825,"children":826},"td",{},[827],{"type":46,"value":828},"Create, get, list, delete a Cloud namespace",{"type":40,"tag":824,"props":830,"children":831},{},[832],{"type":46,"value":833},"Cloud namespace admin",{"type":40,"tag":824,"props":835,"children":836},{},[837],{"type":40,"tag":110,"props":838,"children":840},{"href":839},"references\u002Fops\u002Fcloud-namespace-admin.md",[841],{"type":46,"value":842},"cloud-namespace-admin.md",{"type":40,"tag":797,"props":844,"children":845},{},[846,851,855],{"type":40,"tag":824,"props":847,"children":848},{},[849],{"type":46,"value":850},"Add\u002Fremove region, failover, HA config",{"type":40,"tag":824,"props":852,"children":853},{},[854],{"type":46,"value":833},{"type":40,"tag":824,"props":856,"children":857},{},[858],{"type":40,"tag":110,"props":859,"children":860},{"href":839},[861],{"type":46,"value":842},{"type":40,"tag":797,"props":863,"children":864},{},[865,870,874],{"type":40,"tag":824,"props":866,"children":867},{},[868],{"type":46,"value":869},"Set retention, tags, codec-server, connectivity rules",{"type":40,"tag":824,"props":871,"children":872},{},[873],{"type":46,"value":833},{"type":40,"tag":824,"props":875,"children":876},{},[877],{"type":40,"tag":110,"props":878,"children":879},{"href":839},[880],{"type":46,"value":842},{"type":40,"tag":797,"props":882,"children":883},{},[884,889,893],{"type":40,"tag":824,"props":885,"children":886},{},[887],{"type":46,"value":888},"Add or rename Cloud search attributes",{"type":40,"tag":824,"props":890,"children":891},{},[892],{"type":46,"value":833},{"type":40,"tag":824,"props":894,"children":895},{},[896],{"type":40,"tag":110,"props":897,"children":898},{"href":839},[899],{"type":46,"value":842},{"type":40,"tag":797,"props":901,"children":902},{},[903,908,913],{"type":40,"tag":824,"props":904,"children":905},{},[906],{"type":46,"value":907},"Check current APS \u002F capacity mode",{"type":40,"tag":824,"props":909,"children":910},{},[911],{"type":46,"value":912},"Cloud capacity",{"type":40,"tag":824,"props":914,"children":915},{},[916],{"type":40,"tag":110,"props":917,"children":919},{"href":918},"references\u002Fops\u002Fcloud-capacity.md",[920],{"type":46,"value":921},"cloud-capacity.md",{"type":40,"tag":797,"props":923,"children":924},{},[925,930,934],{"type":40,"tag":824,"props":926,"children":927},{},[928],{"type":46,"value":929},"Switch On-Demand ↔ Provisioned, set TRUs",{"type":40,"tag":824,"props":931,"children":932},{},[933],{"type":46,"value":912},{"type":40,"tag":824,"props":935,"children":936},{},[937],{"type":40,"tag":110,"props":938,"children":939},{"href":918},[940],{"type":46,"value":921},{"type":40,"tag":797,"props":942,"children":943},{},[944,949,953],{"type":40,"tag":824,"props":945,"children":946},{},[947],{"type":46,"value":948},"Understand APS \u002F RPS \u002F OPS limits and throttling",{"type":40,"tag":824,"props":950,"children":951},{},[952],{"type":46,"value":912},{"type":40,"tag":824,"props":954,"children":955},{},[956],{"type":40,"tag":110,"props":957,"children":958},{"href":918},[959],{"type":46,"value":921},{"type":40,"tag":797,"props":961,"children":962},{},[963,968,973],{"type":40,"tag":824,"props":964,"children":965},{},[966],{"type":46,"value":967},"Create, disable, enable, delete an API key",{"type":40,"tag":824,"props":969,"children":970},{},[971],{"type":46,"value":972},"Cloud IAM",{"type":40,"tag":824,"props":974,"children":975},{},[976],{"type":40,"tag":110,"props":977,"children":979},{"href":978},"references\u002Fops\u002Fcloud-iam.md",[980],{"type":46,"value":981},"cloud-iam.md",{"type":40,"tag":797,"props":983,"children":984},{},[985,990,994],{"type":40,"tag":824,"props":986,"children":987},{},[988],{"type":46,"value":989},"Invite, list, remove users; set roles\u002Fpermissions",{"type":40,"tag":824,"props":991,"children":992},{},[993],{"type":46,"value":972},{"type":40,"tag":824,"props":995,"children":996},{},[997],{"type":40,"tag":110,"props":998,"children":999},{"href":978},[1000],{"type":46,"value":981},{"type":40,"tag":797,"props":1002,"children":1003},{},[1004,1009,1013],{"type":40,"tag":824,"props":1005,"children":1006},{},[1007],{"type":46,"value":1008},"Manage user groups and service accounts",{"type":40,"tag":824,"props":1010,"children":1011},{},[1012],{"type":46,"value":972},{"type":40,"tag":824,"props":1014,"children":1015},{},[1016],{"type":40,"tag":110,"props":1017,"children":1018},{"href":978},[1019],{"type":46,"value":981},{"type":40,"tag":797,"props":1021,"children":1022},{},[1023,1028,1033],{"type":40,"tag":824,"props":1024,"children":1025},{},[1026],{"type":46,"value":1027},"Generate mTLS certs, upload CA, set cert filters",{"type":40,"tag":824,"props":1029,"children":1030},{},[1031],{"type":46,"value":1032},"Cloud certs",{"type":40,"tag":824,"props":1034,"children":1035},{},[1036],{"type":40,"tag":110,"props":1037,"children":1039},{"href":1038},"references\u002Fops\u002Fcloud-certs.md",[1040],{"type":46,"value":1041},"cloud-certs.md",{"type":40,"tag":797,"props":1043,"children":1044},{},[1045,1050,1054],{"type":40,"tag":824,"props":1046,"children":1047},{},[1048],{"type":46,"value":1049},"Rotate mTLS certificates",{"type":40,"tag":824,"props":1051,"children":1052},{},[1053],{"type":46,"value":1032},{"type":40,"tag":824,"props":1055,"children":1056},{},[1057],{"type":40,"tag":110,"props":1058,"children":1059},{"href":1038},[1060],{"type":46,"value":1041},{"type":40,"tag":797,"props":1062,"children":1063},{},[1064,1069,1073],{"type":40,"tag":824,"props":1065,"children":1066},{},[1067],{"type":46,"value":1068},"Set up Workflow History Export (S3 \u002F GCS)",{"type":40,"tag":824,"props":1070,"children":1071},{},[1072],{"type":46,"value":833},{"type":40,"tag":824,"props":1074,"children":1075},{},[1076],{"type":40,"tag":110,"props":1077,"children":1078},{"href":839},[1079],{"type":46,"value":842},{"type":40,"tag":797,"props":1081,"children":1082},{},[1083,1088,1093],{"type":40,"tag":824,"props":1084,"children":1085},{},[1086],{"type":46,"value":1087},"Set up PrivateLink \u002F PSC, manage connectivity rules",{"type":40,"tag":824,"props":1089,"children":1090},{},[1091],{"type":46,"value":1092},"Cloud connectivity",{"type":40,"tag":824,"props":1094,"children":1095},{},[1096],{"type":40,"tag":110,"props":1097,"children":1099},{"href":1098},"references\u002Fops\u002Fcloud-connectivity.md",[1100],{"type":46,"value":1101},"cloud-connectivity.md",{"type":40,"tag":797,"props":1103,"children":1104},{},[1105,1110,1115],{"type":40,"tag":824,"props":1106,"children":1107},{},[1108],{"type":46,"value":1109},"Self-hosted cluster health, describe, namespace CRUD",{"type":40,"tag":824,"props":1111,"children":1112},{},[1113],{"type":46,"value":1114},"Self-hosted admin",{"type":40,"tag":824,"props":1116,"children":1117},{},[1118],{"type":40,"tag":110,"props":1119,"children":1121},{"href":1120},"references\u002Fops\u002Fself-hosted-admin.md",[1122],{"type":46,"value":1123},"self-hosted-admin.md",{"type":40,"tag":797,"props":1125,"children":1126},{},[1127,1132,1136],{"type":40,"tag":824,"props":1128,"children":1129},{},[1130],{"type":46,"value":1131},"Self-hosted search attributes, Nexus endpoints",{"type":40,"tag":824,"props":1133,"children":1134},{},[1135],{"type":46,"value":1114},{"type":40,"tag":824,"props":1137,"children":1138},{},[1139],{"type":40,"tag":110,"props":1140,"children":1141},{"href":1120},[1142],{"type":46,"value":1123},{"type":40,"tag":797,"props":1144,"children":1145},{},[1146,1151,1155],{"type":40,"tag":824,"props":1147,"children":1148},{},[1149],{"type":46,"value":1150},"Check or manage a Cloud Nexus Endpoint's caller-Namespace allowlist; the 1,000-caller default",{"type":40,"tag":824,"props":1152,"children":1153},{},[1154],{"type":46,"value":833},{"type":40,"tag":824,"props":1156,"children":1157},{},[1158],{"type":40,"tag":110,"props":1159,"children":1161},{"href":1160},"references\u002Fops\u002Fcloud-namespace-admin.md#tcld-nexus-endpoint-allowed-namespace",[1162],{"type":46,"value":1163},"cloud-namespace-admin.md#tcld-nexus-endpoint-allowed-namespace",{"type":40,"tag":797,"props":1165,"children":1166},{},[1167,1172,1177],{"type":40,"tag":824,"props":1168,"children":1169},{},[1170],{"type":46,"value":1171},"Find stuck\u002Fhung\u002Funhealthy workflows via list queries",{"type":40,"tag":824,"props":1173,"children":1174},{},[1175],{"type":46,"value":1176},"Workflow health",{"type":40,"tag":824,"props":1178,"children":1179},{},[1180],{"type":40,"tag":110,"props":1181,"children":1183},{"href":1182},"references\u002Fops\u002Fworkflow-health.md",[1184],{"type":46,"value":1185},"workflow-health.md",{"type":40,"tag":797,"props":1187,"children":1188},{},[1189,1194,1198],{"type":40,"tag":824,"props":1190,"children":1191},{},[1192],{"type":46,"value":1193},"Task queue poller status, workflow counts",{"type":40,"tag":824,"props":1195,"children":1196},{},[1197],{"type":46,"value":1176},{"type":40,"tag":824,"props":1199,"children":1200},{},[1201],{"type":40,"tag":110,"props":1202,"children":1203},{"href":1182},[1204],{"type":46,"value":1185},{"type":40,"tag":797,"props":1206,"children":1207},{},[1208,1213,1218],{"type":40,"tag":824,"props":1209,"children":1210},{},[1211],{"type":46,"value":1212},"Cancel, terminate, or reset workflows",{"type":40,"tag":824,"props":1214,"children":1215},{},[1216],{"type":46,"value":1217},"Workflow recovery",{"type":40,"tag":824,"props":1219,"children":1220},{},[1221],{"type":40,"tag":110,"props":1222,"children":1224},{"href":1223},"references\u002Ftriage\u002Fworkflow-stuck.md#recovery-commands",[1225],{"type":46,"value":1226},"workflow-stuck.md#recovery-commands",{"type":40,"tag":797,"props":1228,"children":1229},{},[1230,1242,1247],{"type":40,"tag":824,"props":1231,"children":1232},{},[1233,1235,1240],{"type":46,"value":1234},"Bulk \u002F batch operations on workflows (",{"type":40,"tag":93,"props":1236,"children":1238},{"className":1237},[],[1239],{"type":46,"value":400},{"type":46,"value":1241},")",{"type":40,"tag":824,"props":1243,"children":1244},{},[1245],{"type":46,"value":1246},"CLI conventions",{"type":40,"tag":824,"props":1248,"children":1249},{},[1250],{"type":40,"tag":110,"props":1251,"children":1253},{"href":1252},"references\u002Fops\u002Fcli-conventions.md#the---query--batch-job-bridge",[1254],{"type":46,"value":115},{"type":40,"tag":797,"props":1256,"children":1257},{},[1258,1263,1267],{"type":40,"tag":824,"props":1259,"children":1260},{},[1261],{"type":46,"value":1262},"Schedule CRUD, time-spec, and operations",{"type":40,"tag":824,"props":1264,"children":1265},{},[1266],{"type":46,"value":1246},{"type":40,"tag":824,"props":1268,"children":1269},{},[1270],{"type":40,"tag":110,"props":1271,"children":1273},{"href":1272},"references\u002Fops\u002Fcli-conventions.md#schedule-time-spec-forms",[1274],{"type":46,"value":115},{"type":40,"tag":797,"props":1276,"children":1277},{},[1278,1283,1287],{"type":40,"tag":824,"props":1279,"children":1280},{},[1281],{"type":46,"value":1282},"Complete or fail an activity externally",{"type":40,"tag":824,"props":1284,"children":1285},{},[1286],{"type":46,"value":1246},{"type":40,"tag":824,"props":1288,"children":1289},{},[1290],{"type":40,"tag":110,"props":1291,"children":1293},{"href":1292},"references\u002Fops\u002Fcli-conventions.md#operation--command-index",[1294],{"type":46,"value":115},{"type":40,"tag":797,"props":1296,"children":1297},{},[1298,1303,1308],{"type":40,"tag":824,"props":1299,"children":1300},{},[1301],{"type":46,"value":1302},"Cloud Ops API access, rate limits, Go SDK",{"type":40,"tag":824,"props":1304,"children":1305},{},[1306],{"type":46,"value":1307},"Cloud Ops API",{"type":40,"tag":824,"props":1309,"children":1310},{},[1311],{"type":40,"tag":110,"props":1312,"children":1314},{"href":1313},"references\u002Fops\u002Fcloud-ops-api.md",[1315],{"type":46,"value":1316},"cloud-ops-api.md",{"type":40,"tag":797,"props":1318,"children":1319},{},[1320,1325,1330],{"type":40,"tag":824,"props":1321,"children":1322},{},[1323],{"type":46,"value":1324},"View billing, generate billing report, cost attribution",{"type":40,"tag":824,"props":1326,"children":1327},{},[1328],{"type":46,"value":1329},"Cloud billing",{"type":40,"tag":824,"props":1331,"children":1332},{},[1333],{"type":40,"tag":110,"props":1334,"children":1336},{"href":1335},"references\u002Fops\u002Fcloud-billing.md",[1337],{"type":46,"value":1338},"cloud-billing.md",{"type":40,"tag":797,"props":1340,"children":1341},{},[1342,1347,1352],{"type":40,"tag":824,"props":1343,"children":1344},{},[1345],{"type":46,"value":1346},"Audit Logs: view, query via API, configure sink (AWS\u002FGCP)",{"type":40,"tag":824,"props":1348,"children":1349},{},[1350],{"type":46,"value":1351},"Cloud audit logs",{"type":40,"tag":824,"props":1353,"children":1354},{},[1355],{"type":40,"tag":110,"props":1356,"children":1358},{"href":1357},"references\u002Fops\u002Fcloud-audit-logs.md",[1359],{"type":46,"value":1360},"cloud-audit-logs.md",{"type":40,"tag":797,"props":1362,"children":1363},{},[1364,1369,1374],{"type":40,"tag":824,"props":1365,"children":1366},{},[1367],{"type":46,"value":1368},"Terraform provider: Namespace\u002FUser\u002FSA\u002FAPI Key\u002FNexus CRUD",{"type":40,"tag":824,"props":1370,"children":1371},{},[1372],{"type":46,"value":1373},"Cloud Terraform",{"type":40,"tag":824,"props":1375,"children":1376},{},[1377],{"type":40,"tag":110,"props":1378,"children":1380},{"href":1379},"references\u002Fops\u002Fcloud-terraform.md",[1381],{"type":46,"value":1382},"cloud-terraform.md",{"type":40,"tag":797,"props":1384,"children":1385},{},[1386,1391,1396],{"type":40,"tag":824,"props":1387,"children":1388},{},[1389],{"type":46,"value":1390},"Expiry alerts (cert, API key, credit), status page",{"type":40,"tag":824,"props":1392,"children":1393},{},[1394],{"type":46,"value":1395},"Cloud notifications",{"type":40,"tag":824,"props":1397,"children":1398},{},[1399],{"type":40,"tag":110,"props":1400,"children":1402},{"href":1401},"references\u002Fops\u002Fcloud-notifications.md",[1403],{"type":46,"value":1404},"cloud-notifications.md",{"type":40,"tag":797,"props":1406,"children":1407},{},[1408,1413,1418],{"type":40,"tag":824,"props":1409,"children":1410},{},[1411],{"type":46,"value":1412},"SAML SSO, SCIM provisioning, IdP integration",{"type":40,"tag":824,"props":1414,"children":1415},{},[1416],{"type":46,"value":1417},"Cloud SAML\u002FSCIM",{"type":40,"tag":824,"props":1419,"children":1420},{},[1421],{"type":40,"tag":110,"props":1422,"children":1424},{"href":1423},"references\u002Fops\u002Fcloud-saml-scim.md",[1425],{"type":46,"value":1426},"cloud-saml-scim.md",{"type":40,"tag":797,"props":1428,"children":1429},{},[1430,1435,1440],{"type":40,"tag":824,"props":1431,"children":1432},{},[1433],{"type":46,"value":1434},"Migrate self-hosted to Cloud (automated or manual), migrate between Cloud regions",{"type":40,"tag":824,"props":1436,"children":1437},{},[1438],{"type":46,"value":1439},"Cloud migration",{"type":40,"tag":824,"props":1441,"children":1442},{},[1443],{"type":40,"tag":110,"props":1444,"children":1446},{"href":1445},"references\u002Fops\u002Fcloud-migration.md",[1447],{"type":46,"value":1448},"cloud-migration.md",{"type":40,"tag":797,"props":1450,"children":1451},{},[1452,1457,1462],{"type":40,"tag":824,"props":1453,"children":1454},{},[1455],{"type":46,"value":1456},"End-to-end ops playbook (setup, rotation, audit, billing, Terraform)",{"type":40,"tag":824,"props":1458,"children":1459},{},[1460],{"type":46,"value":1461},"Ops recipes",{"type":40,"tag":824,"props":1463,"children":1464},{},[1465],{"type":40,"tag":110,"props":1466,"children":1468},{"href":1467},"references\u002Fops\u002Frecipes.md",[1469],{"type":46,"value":1470},"ops\u002Frecipes.md",{"type":40,"tag":210,"props":1472,"children":1474},{"id":1473},"diagnosis",[1475],{"type":46,"value":1476},"Diagnosis",{"type":40,"tag":56,"props":1478,"children":1479},{},[1480],{"type":46,"value":1481},"Find the row that matches the user's symptom. Start the investigation at the first check, then read the linked reference.",{"type":40,"tag":789,"props":1483,"children":1484},{},[1485,1509],{"type":40,"tag":793,"props":1486,"children":1487},{},[1488],{"type":40,"tag":797,"props":1489,"children":1490},{},[1491,1496,1500,1505],{"type":40,"tag":801,"props":1492,"children":1493},{},[1494],{"type":46,"value":1495},"Symptom",{"type":40,"tag":801,"props":1497,"children":1498},{},[1499],{"type":46,"value":810},{"type":40,"tag":801,"props":1501,"children":1502},{},[1503],{"type":46,"value":1504},"First check",{"type":40,"tag":801,"props":1506,"children":1507},{},[1508],{"type":46,"value":815},{"type":40,"tag":817,"props":1510,"children":1511},{},[1512,1549,1593,1630,1671,1705,1741,1785,1823,1863,1894,1925,1971,1997,2030,2064,2096,2150,2190,2221,2256,2287],{"type":40,"tag":797,"props":1513,"children":1514},{},[1515,1526,1531,1540],{"type":40,"tag":824,"props":1516,"children":1517},{},[1518,1524],{"type":40,"tag":93,"props":1519,"children":1521},{"className":1520},[],[1522],{"type":46,"value":1523},"connection refused",{"type":46,"value":1525},", cannot reach frontend",{"type":40,"tag":824,"props":1527,"children":1528},{},[1529],{"type":46,"value":1530},"Connectivity",{"type":40,"tag":824,"props":1532,"children":1533},{},[1534],{"type":40,"tag":93,"props":1535,"children":1537},{"className":1536},[],[1538],{"type":46,"value":1539},"nc -zvw10 \u003Chost> 7233",{"type":40,"tag":824,"props":1541,"children":1542},{},[1543],{"type":40,"tag":110,"props":1544,"children":1546},{"href":1545},"references\u002Ftriage\u002Fconnectivity.md#connection-refused",[1547],{"type":46,"value":1548},"connectivity.md#connection-refused",{"type":40,"tag":797,"props":1550,"children":1551},{},[1552,1563,1567,1584],{"type":40,"tag":824,"props":1553,"children":1554},{},[1555,1561],{"type":40,"tag":93,"props":1556,"children":1558},{"className":1557},[],[1559],{"type":46,"value":1560},"no such host",{"type":46,"value":1562},", DNS resolution fails",{"type":40,"tag":824,"props":1564,"children":1565},{},[1566],{"type":46,"value":1530},{"type":40,"tag":824,"props":1568,"children":1569},{},[1570,1576,1578],{"type":40,"tag":93,"props":1571,"children":1573},{"className":1572},[],[1574],{"type":46,"value":1575},"dig +short \u003Chost>",{"type":46,"value":1577}," or ",{"type":40,"tag":93,"props":1579,"children":1581},{"className":1580},[],[1582],{"type":46,"value":1583},"nslookup \u003Chost>",{"type":40,"tag":824,"props":1585,"children":1586},{},[1587],{"type":40,"tag":110,"props":1588,"children":1590},{"href":1589},"references\u002Ftriage\u002Fconnectivity.md#dns",[1591],{"type":46,"value":1592},"connectivity.md#dns",{"type":40,"tag":797,"props":1594,"children":1595},{},[1596,1607,1612,1621],{"type":40,"tag":824,"props":1597,"children":1598},{},[1599,1605],{"type":40,"tag":93,"props":1600,"children":1602},{"className":1601},[],[1603],{"type":46,"value":1604},"tls: handshake failure",{"type":46,"value":1606},", server rejects handshake",{"type":40,"tag":824,"props":1608,"children":1609},{},[1610],{"type":46,"value":1611},"Certificates",{"type":40,"tag":824,"props":1613,"children":1614},{},[1615],{"type":40,"tag":93,"props":1616,"children":1618},{"className":1617},[],[1619],{"type":46,"value":1620},"openssl s_client -connect \u003Chost>:7233 -servername \u003Chost> \u003C\u002Fdev\u002Fnull",{"type":40,"tag":824,"props":1622,"children":1623},{},[1624],{"type":40,"tag":110,"props":1625,"children":1627},{"href":1626},"references\u002Ftriage\u002Fcertificates.md#handshake-failure",[1628],{"type":46,"value":1629},"certificates.md#handshake-failure",{"type":40,"tag":797,"props":1631,"children":1632},{},[1633,1649,1653,1662],{"type":40,"tag":824,"props":1634,"children":1635},{},[1636,1642,1643],{"type":40,"tag":93,"props":1637,"children":1639},{"className":1638},[],[1640],{"type":46,"value":1641},"x509: certificate has expired",{"type":46,"value":1577},{"type":40,"tag":93,"props":1644,"children":1646},{"className":1645},[],[1647],{"type":46,"value":1648},"not yet valid",{"type":40,"tag":824,"props":1650,"children":1651},{},[1652],{"type":46,"value":1611},{"type":40,"tag":824,"props":1654,"children":1655},{},[1656],{"type":40,"tag":93,"props":1657,"children":1659},{"className":1658},[],[1660],{"type":46,"value":1661},"openssl x509 -enddate -noout -in cert.pem",{"type":40,"tag":824,"props":1663,"children":1664},{},[1665],{"type":40,"tag":110,"props":1666,"children":1668},{"href":1667},"references\u002Ftriage\u002Fcertificates.md#expired-or-not-yet-valid",[1669],{"type":46,"value":1670},"certificates.md#expired-or-not-yet-valid",{"type":40,"tag":797,"props":1672,"children":1673},{},[1674,1683,1687,1696],{"type":40,"tag":824,"props":1675,"children":1676},{},[1677],{"type":40,"tag":93,"props":1678,"children":1680},{"className":1679},[],[1681],{"type":46,"value":1682},"x509: certificate signed by unknown authority",{"type":40,"tag":824,"props":1684,"children":1685},{},[1686],{"type":46,"value":1611},{"type":40,"tag":824,"props":1688,"children":1689},{},[1690],{"type":40,"tag":93,"props":1691,"children":1693},{"className":1692},[],[1694],{"type":46,"value":1695},"openssl verify -CAfile ca.pem client.pem",{"type":40,"tag":824,"props":1697,"children":1698},{},[1699],{"type":40,"tag":110,"props":1700,"children":1702},{"href":1701},"references\u002Ftriage\u002Fcertificates.md#unknown-authority",[1703],{"type":46,"value":1704},"certificates.md#unknown-authority",{"type":40,"tag":797,"props":1706,"children":1707},{},[1708,1718,1723,1732],{"type":40,"tag":824,"props":1709,"children":1710},{},[1711,1716],{"type":40,"tag":93,"props":1712,"children":1714},{"className":1713},[],[1715],{"type":46,"value":240},{"type":46,"value":1717}," session \u002F auth fails, Cloud role unclear",{"type":40,"tag":824,"props":1719,"children":1720},{},[1721],{"type":46,"value":1722},"Authentication",{"type":40,"tag":824,"props":1724,"children":1725},{},[1726],{"type":40,"tag":93,"props":1727,"children":1729},{"className":1728},[],[1730],{"type":46,"value":1731},"tcld account get",{"type":40,"tag":824,"props":1733,"children":1734},{},[1735],{"type":40,"tag":110,"props":1736,"children":1738},{"href":1737},"references\u002Ftriage\u002Fauthentication.md#cloud-role-and-permission-model",[1739],{"type":46,"value":1740},"authentication.md#cloud-role-and-permission-model",{"type":40,"tag":797,"props":1742,"children":1743},{},[1744,1755,1759,1776],{"type":40,"tag":824,"props":1745,"children":1746},{},[1747,1753],{"type":40,"tag":93,"props":1748,"children":1750},{"className":1749},[],[1751],{"type":46,"value":1752},"UNAUTHENTICATED",{"type":46,"value":1754},", API key rejected",{"type":40,"tag":824,"props":1756,"children":1757},{},[1758],{"type":46,"value":1722},{"type":40,"tag":824,"props":1760,"children":1761},{},[1762,1768,1770],{"type":40,"tag":93,"props":1763,"children":1765},{"className":1764},[],[1766],{"type":46,"value":1767},"env | grep -i TEMPORAL_API_KEY",{"type":46,"value":1769},", then ",{"type":40,"tag":93,"props":1771,"children":1773},{"className":1772},[],[1774],{"type":46,"value":1775},"tcld apikey get --id \u003Capikey_id>",{"type":40,"tag":824,"props":1777,"children":1778},{},[1779],{"type":40,"tag":110,"props":1780,"children":1782},{"href":1781},"references\u002Ftriage\u002Fauthentication.md#things-to-check-when-unauthenticated-is-returned-with-an-api-key",[1783],{"type":46,"value":1784},"authentication.md#things-to-check-when-unauthenticated-is-returned-with-an-api-key",{"type":40,"tag":797,"props":1786,"children":1787},{},[1788,1799,1803,1814],{"type":40,"tag":824,"props":1789,"children":1790},{},[1791,1797],{"type":40,"tag":93,"props":1792,"children":1794},{"className":1793},[],[1795],{"type":46,"value":1796},"namespace not found",{"type":46,"value":1798}," \u002F wrong namespace string with an API key",{"type":40,"tag":824,"props":1800,"children":1801},{},[1802],{"type":46,"value":1722},{"type":40,"tag":824,"props":1804,"children":1805},{},[1806,1808],{"type":46,"value":1807},"Confirm Regional Endpoint form ",{"type":40,"tag":93,"props":1809,"children":1811},{"className":1810},[],[1812],{"type":46,"value":1813},"\u003Cregion>.\u003Ccloud_provider>.api.temporal.io:7233",{"type":40,"tag":824,"props":1815,"children":1816},{},[1817],{"type":40,"tag":110,"props":1818,"children":1820},{"href":1819},"references\u002Ftriage\u002Fauthentication.md#address-form-for-api-key-connections",[1821],{"type":46,"value":1822},"authentication.md#address-form-for-api-key-connections",{"type":40,"tag":797,"props":1824,"children":1825},{},[1826,1836,1841,1854],{"type":40,"tag":824,"props":1827,"children":1828},{},[1829,1834],{"type":40,"tag":93,"props":1830,"children":1832},{"className":1831},[],[1833],{"type":46,"value":765},{"type":46,"value":1835}," gRPC status",{"type":40,"tag":824,"props":1837,"children":1838},{},[1839],{"type":46,"value":1840},"Rate limits",{"type":40,"tag":824,"props":1842,"children":1843},{},[1844,1846,1852],{"type":46,"value":1845},"Identify which limit fired: throttle metrics on Cloud v1, the ",{"type":40,"tag":93,"props":1847,"children":1849},{"className":1848},[],[1850],{"type":46,"value":1851},"resource_exhausted_cause",{"type":46,"value":1853}," label on v0 \u002F self-hosted",{"type":40,"tag":824,"props":1855,"children":1856},{},[1857],{"type":40,"tag":110,"props":1858,"children":1860},{"href":1859},"references\u002Ftriage\u002Frate-limits.md#identifying-which-limit-was-hit",[1861],{"type":46,"value":1862},"rate-limits.md#identifying-which-limit-was-hit",{"type":40,"tag":797,"props":1864,"children":1865},{},[1866,1871,1876,1885],{"type":40,"tag":824,"props":1867,"children":1868},{},[1869],{"type":46,"value":1870},"Task queue shows no pollers",{"type":40,"tag":824,"props":1872,"children":1873},{},[1874],{"type":46,"value":1875},"Worker health",{"type":40,"tag":824,"props":1877,"children":1878},{},[1879],{"type":40,"tag":93,"props":1880,"children":1882},{"className":1881},[],[1883],{"type":46,"value":1884},"temporal task-queue describe --task-queue \u003Cq>",{"type":40,"tag":824,"props":1886,"children":1887},{},[1888],{"type":40,"tag":110,"props":1889,"children":1891},{"href":1890},"references\u002Ftriage\u002Fworker-health.md#what-no-pollers-looks-like",[1892],{"type":46,"value":1893},"worker-health.md#what-no-pollers-looks-like",{"type":40,"tag":797,"props":1895,"children":1896},{},[1897,1902,1907,1916],{"type":40,"tag":824,"props":1898,"children":1899},{},[1900],{"type":46,"value":1901},"Workflow stuck on a pending activity \u002F timer \u002F child \u002F signal",{"type":40,"tag":824,"props":1903,"children":1904},{},[1905],{"type":46,"value":1906},"Workflow stuck",{"type":40,"tag":824,"props":1908,"children":1909},{},[1910],{"type":40,"tag":93,"props":1911,"children":1913},{"className":1912},[],[1914],{"type":46,"value":1915},"temporal workflow describe --workflow-id \u003Cid>",{"type":40,"tag":824,"props":1917,"children":1918},{},[1919],{"type":40,"tag":110,"props":1920,"children":1922},{"href":1921},"references\u002Ftriage\u002Fworkflow-stuck.md#the-primary-inspection-command-temporal-workflow-describe",[1923],{"type":46,"value":1924},"workflow-stuck.md#the-primary-inspection-command-temporal-workflow-describe",{"type":40,"tag":797,"props":1926,"children":1927},{},[1928,1945,1950,1962],{"type":40,"tag":824,"props":1929,"children":1930},{},[1931,1937,1939],{"type":40,"tag":93,"props":1932,"children":1934},{"className":1933},[],[1935],{"type":46,"value":1936},"NondeterminismError",{"type":46,"value":1938},", repeating ",{"type":40,"tag":93,"props":1940,"children":1942},{"className":1941},[],[1943],{"type":46,"value":1944},"WorkflowTaskFailed",{"type":40,"tag":824,"props":1946,"children":1947},{},[1948],{"type":46,"value":1949},"Non-determinism",{"type":40,"tag":824,"props":1951,"children":1952},{},[1953,1955,1960],{"type":46,"value":1954},"Identify the last ",{"type":40,"tag":93,"props":1956,"children":1958},{"className":1957},[],[1959],{"type":46,"value":1944},{"type":46,"value":1961}," cause in the Event History",{"type":40,"tag":824,"props":1963,"children":1964},{},[1965],{"type":40,"tag":110,"props":1966,"children":1968},{"href":1967},"references\u002Ftriage\u002Fnon-determinism.md#the-wft-failure-signature-of-non-determinism",[1969],{"type":46,"value":1970},"non-determinism.md#the-wft-failure-signature-of-non-determinism",{"type":40,"tag":797,"props":1972,"children":1973},{},[1974,1979,1983,1988],{"type":40,"tag":824,"props":1975,"children":1976},{},[1977],{"type":46,"value":1978},"Replay fails locally but prod workflow was running",{"type":40,"tag":824,"props":1980,"children":1981},{},[1982],{"type":46,"value":1949},{"type":40,"tag":824,"props":1984,"children":1985},{},[1986],{"type":46,"value":1987},"Fetch the history and run the SDK replayer in one test",{"type":40,"tag":824,"props":1989,"children":1990},{},[1991],{"type":40,"tag":110,"props":1992,"children":1994},{"href":1993},"references\u002Ftriage\u002Freplay.md#step-2--run-the-sdk-replayer-all-supported-sdks",[1995],{"type":46,"value":1996},"replay.md#step-2--run-the-sdk-replayer-all-supported-sdks",{"type":40,"tag":797,"props":1998,"children":1999},{},[2000,2005,2010,2021],{"type":40,"tag":824,"props":2001,"children":2002},{},[2003],{"type":46,"value":2004},"HA failover did not route traffic to failover region",{"type":40,"tag":824,"props":2006,"children":2007},{},[2008],{"type":46,"value":2009},"HA failover",{"type":40,"tag":824,"props":2011,"children":2012},{},[2013,2019],{"type":40,"tag":93,"props":2014,"children":2016},{"className":2015},[],[2017],{"type":46,"value":2018},"tcld namespace get --namespace \u003Cns>.\u003Cacct>",{"type":46,"value":2020}," vs. DNS CNAME",{"type":40,"tag":824,"props":2022,"children":2023},{},[2024],{"type":40,"tag":110,"props":2025,"children":2027},{"href":2026},"references\u002Ftriage\u002Fha-failover.md#start-here-establish-ground-truth",[2028],{"type":46,"value":2029},"ha-failover.md#start-here-establish-ground-truth",{"type":40,"tag":797,"props":2031,"children":2032},{},[2033,2038,2042,2055],{"type":40,"tag":824,"props":2034,"children":2035},{},[2036],{"type":46,"value":2037},"Serverless Worker (AWS Lambda) stopped processing work after a Namespace failover",{"type":40,"tag":824,"props":2039,"children":2040},{},[2041],{"type":46,"value":2009},{"type":40,"tag":824,"props":2043,"children":2044},{},[2045,2047,2053],{"type":46,"value":2046},"Confirm a ",{"type":40,"tag":93,"props":2048,"children":2050},{"className":2049},[],[2051],{"type":46,"value":2052},"FailoverNamespace",{"type":46,"value":2054}," audit event, then compare the new active region against the Lambda ARN on the Worker Deployment Version",{"type":40,"tag":824,"props":2056,"children":2057},{},[2058],{"type":40,"tag":110,"props":2059,"children":2061},{"href":2060},"references\u002Ftriage\u002Fha-failover.md#symptom-serverless-workers-kept-running-in-the-old-region-after-failover",[2062],{"type":46,"value":2063},"ha-failover.md#symptom-serverless-workers-kept-running-in-the-old-region-after-failover",{"type":40,"tag":797,"props":2065,"children":2066},{},[2067,2077,2082,2087],{"type":40,"tag":824,"props":2068,"children":2069},{},[2070,2075],{"type":40,"tag":93,"props":2071,"children":2073},{"className":2072},[],[2074],{"type":46,"value":757},{"type":46,"value":2076}," (unknown layer)",{"type":40,"tag":824,"props":2078,"children":2079},{},[2080],{"type":46,"value":2081},"Runtime errors",{"type":40,"tag":824,"props":2083,"children":2084},{},[2085],{"type":46,"value":2086},"Identify which operation and SDK emitted it",{"type":40,"tag":824,"props":2088,"children":2089},{},[2090],{"type":40,"tag":110,"props":2091,"children":2093},{"href":2092},"references\u002Ftriage\u002Fruntime-errors.md#deadline-exceeded",[2094],{"type":46,"value":2095},"runtime-errors.md#deadline-exceeded",{"type":40,"tag":797,"props":2097,"children":2098},{},[2099,2118,2122,2141],{"type":40,"tag":824,"props":2100,"children":2101},{},[2102,2108,2110,2116],{"type":40,"tag":93,"props":2103,"children":2105},{"className":2104},[],[2106],{"type":46,"value":2107},"Workflow is busy",{"type":46,"value":2109}," \u002F ",{"type":40,"tag":93,"props":2111,"children":2113},{"className":2112},[],[2114],{"type":46,"value":2115},"ResourceExhausted",{"type":46,"value":2117}," on signal\u002Fupdate\u002Fquery to one Workflow (BusyWorkflow)",{"type":40,"tag":824,"props":2119,"children":2120},{},[2121],{"type":46,"value":2081},{"type":40,"tag":824,"props":2123,"children":2124},{},[2125,2127,2133,2135],{"type":46,"value":2126},"Rule out account-limit throttling, then split ",{"type":40,"tag":93,"props":2128,"children":2130},{"className":2129},[],[2131],{"type":46,"value":2132},"temporal_cloud_v1_resource_exhausted_error_count",{"type":46,"value":2134}," by ",{"type":40,"tag":93,"props":2136,"children":2138},{"className":2137},[],[2139],{"type":46,"value":2140},"operation",{"type":40,"tag":824,"props":2142,"children":2143},{},[2144],{"type":40,"tag":110,"props":2145,"children":2147},{"href":2146},"references\u002Ftriage\u002Fruntime-errors.md#workflow-lock-contention-busyworkflow",[2148],{"type":46,"value":2149},"runtime-errors.md#workflow-lock-contention-busyworkflow",{"type":40,"tag":797,"props":2151,"children":2152},{},[2153,2171,2176,2181],{"type":40,"tag":824,"props":2154,"children":2155},{},[2156,2162,2163,2169],{"type":40,"tag":93,"props":2157,"children":2159},{"className":2158},[],[2160],{"type":46,"value":2161},"PAYLOADS_TOO_LARGE",{"type":46,"value":258},{"type":40,"tag":93,"props":2164,"children":2166},{"className":2165},[],[2167],{"type":46,"value":2168},"exceeds size limit",{"type":46,"value":2170},", payload\u002FgRPC blob size error",{"type":40,"tag":824,"props":2172,"children":2173},{},[2174],{"type":46,"value":2175},"Blob size limits",{"type":40,"tag":824,"props":2177,"children":2178},{},[2179],{"type":46,"value":2180},"Check whether the issue is payload (2 MB) or gRPC message (4 MB)",{"type":40,"tag":824,"props":2182,"children":2183},{},[2184],{"type":40,"tag":110,"props":2185,"children":2187},{"href":2186},"references\u002Ftriage\u002Fblob-size-limits.md",[2188],{"type":46,"value":2189},"blob-size-limits.md",{"type":40,"tag":797,"props":2191,"children":2192},{},[2193,2198,2202,2214],{"type":40,"tag":824,"props":2194,"children":2195},{},[2196],{"type":46,"value":2197},"Workflow stuck in invisible retry loop (gRPC message too large)",{"type":40,"tag":824,"props":2199,"children":2200},{},[2201],{"type":46,"value":2175},{"type":40,"tag":824,"props":2203,"children":2204},{},[2205,2207,2212],{"type":46,"value":2206},"Check Worker logs for ",{"type":40,"tag":93,"props":2208,"children":2210},{"className":2209},[],[2211],{"type":46,"value":2115},{"type":46,"value":2213},", reduce batch size",{"type":40,"tag":824,"props":2215,"children":2216},{},[2217],{"type":40,"tag":110,"props":2218,"children":2219},{"href":2186},[2220],{"type":46,"value":2189},{"type":40,"tag":797,"props":2222,"children":2223},{},[2224,2229,2234,2247],{"type":40,"tag":824,"props":2225,"children":2226},{},[2227],{"type":46,"value":2228},"High schedule-to-start latency, task slot depletion, slow Workflow Tasks",{"type":40,"tag":824,"props":2230,"children":2231},{},[2232],{"type":46,"value":2233},"Performance bottlenecks",{"type":40,"tag":824,"props":2235,"children":2236},{},[2237,2239,2245],{"type":46,"value":2238},"Check ",{"type":40,"tag":93,"props":2240,"children":2242},{"className":2241},[],[2243],{"type":46,"value":2244},"temporal_workflow_task_schedule_to_start_latency",{"type":46,"value":2246}," P95",{"type":40,"tag":824,"props":2248,"children":2249},{},[2250],{"type":40,"tag":110,"props":2251,"children":2253},{"href":2252},"references\u002Ftriage\u002Fperformance-bottlenecks.md",[2254],{"type":46,"value":2255},"performance-bottlenecks.md",{"type":40,"tag":797,"props":2257,"children":2258},{},[2259,2264,2268,2280],{"type":40,"tag":824,"props":2260,"children":2261},{},[2262],{"type":46,"value":2263},"High replay latency, cache evictions, deadlock detected",{"type":40,"tag":824,"props":2265,"children":2266},{},[2267],{"type":46,"value":2233},{"type":40,"tag":824,"props":2269,"children":2270},{},[2271,2272,2278],{"type":46,"value":2238},{"type":40,"tag":93,"props":2273,"children":2275},{"className":2274},[],[2276],{"type":46,"value":2277},"workflow_task_replay_latency",{"type":46,"value":2279}," and sticky cache metrics",{"type":40,"tag":824,"props":2281,"children":2282},{},[2283],{"type":40,"tag":110,"props":2284,"children":2285},{"href":2252},[2286],{"type":46,"value":2255},{"type":40,"tag":797,"props":2288,"children":2289},{},[2290,2295,2300,2311],{"type":40,"tag":824,"props":2291,"children":2292},{},[2293],{"type":46,"value":2294},"Schedule did not fire, missed catchup window",{"type":40,"tag":824,"props":2296,"children":2297},{},[2298],{"type":46,"value":2299},"Missed Schedule Actions",{"type":40,"tag":824,"props":2301,"children":2302},{},[2303,2305],{"type":46,"value":2304},"Alert on ",{"type":40,"tag":93,"props":2306,"children":2308},{"className":2307},[],[2309],{"type":46,"value":2310},"temporal_cloud_v1_schedule_missed_catchup_window_count",{"type":40,"tag":824,"props":2312,"children":2313},{},[2314],{"type":40,"tag":110,"props":2315,"children":2317},{"href":2316},"references\u002Ftriage\u002Fschedule-missed.md",[2318],{"type":46,"value":2319},"schedule-missed.md",{"type":40,"tag":56,"props":2321,"children":2322},{},[2323,2325,2329],{"type":46,"value":2324},"If a symptom does not map to a row, start at ",{"type":40,"tag":110,"props":2326,"children":2327},{"href":699},[2328],{"type":46,"value":702},{"type":46,"value":2330}," and work up from whichever layer was last known healthy.",{"type":40,"tag":49,"props":2332,"children":2334},{"id":2333},"the-process",[2335],{"type":46,"value":2336},"The process",{"type":40,"tag":210,"props":2338,"children":2340},{"id":2339},"operations-path",[2341],{"type":46,"value":2342},"Operations path",{"type":40,"tag":2344,"props":2345,"children":2347},"h4",{"id":2346},"step-1-identify-intent-and-backend",[2348],{"type":46,"value":2349},"Step 1: Identify intent and backend",{"type":40,"tag":56,"props":2351,"children":2352},{},[2353],{"type":46,"value":2354},"Determine what the user wants to do and whether it targets:",{"type":40,"tag":62,"props":2356,"children":2357},{},[2358,2382,2398],{"type":40,"tag":66,"props":2359,"children":2360},{},[2361,2366,2368,2373,2375,2381],{"type":40,"tag":70,"props":2362,"children":2363},{},[2364],{"type":46,"value":2365},"Temporal Cloud",{"type":46,"value":2367}," → use ",{"type":40,"tag":93,"props":2369,"children":2371},{"className":2370},[],[2372],{"type":46,"value":240},{"type":46,"value":2374}," commands (requires ",{"type":40,"tag":93,"props":2376,"children":2378},{"className":2377},[],[2379],{"type":46,"value":2380},"tcld login",{"type":46,"value":1241},{"type":40,"tag":66,"props":2383,"children":2384},{},[2385,2390,2391,2396],{"type":40,"tag":70,"props":2386,"children":2387},{},[2388],{"type":46,"value":2389},"Self-hosted cluster",{"type":46,"value":2367},{"type":40,"tag":93,"props":2392,"children":2394},{"className":2393},[],[2395],{"type":46,"value":248},{"type":46,"value":2397}," commands",{"type":40,"tag":66,"props":2399,"children":2400},{},[2401,2406,2407,2412,2413,2418,2419,2425],{"type":40,"tag":70,"props":2402,"children":2403},{},[2404],{"type":46,"value":2405},"Data plane (either backend)",{"type":46,"value":2367},{"type":40,"tag":93,"props":2408,"children":2410},{"className":2409},[],[2411],{"type":46,"value":256},{"type":46,"value":258},{"type":40,"tag":93,"props":2414,"children":2416},{"className":2415},[],[2417],{"type":46,"value":264},{"type":46,"value":258},{"type":40,"tag":93,"props":2420,"children":2422},{"className":2421},[],[2423],{"type":46,"value":2424},"temporal schedule",{"type":46,"value":2426},", etc.",{"type":40,"tag":56,"props":2428,"children":2429},{},[2430,2432,2438,2440,2445,2447,2453,2455,2461,2463,2468],{"type":46,"value":2431},"If the backend is unambiguous from context — ",{"type":40,"tag":93,"props":2433,"children":2435},{"className":2434},[],[2436],{"type":46,"value":2437},".tmprl.cloud",{"type":46,"value":2439}," address, ",{"type":40,"tag":93,"props":2441,"children":2443},{"className":2442},[],[2444],{"type":46,"value":240},{"type":46,"value":2446}," command, Cloud namespace format ",{"type":40,"tag":93,"props":2448,"children":2450},{"className":2449},[],[2451],{"type":46,"value":2452},"ns.account",{"type":46,"value":2454}," → Cloud; Kubernetes\u002FHelm, ",{"type":40,"tag":93,"props":2456,"children":2458},{"className":2457},[],[2459],{"type":46,"value":2460},"docker-compose",{"type":46,"value":2462},", self-hosted config files → self-hosted — proceed without asking. ",{"type":40,"tag":70,"props":2464,"children":2465},{},[2466],{"type":46,"value":2467},"Otherwise, stop and ask: \"Are you on Temporal Cloud or self-hosted?\" before outputting any environment-specific commands.",{"type":46,"value":2469}," Do not default to either environment. Once known, save the answer to memory so you don't ask again in future conversations.",{"type":40,"tag":2344,"props":2471,"children":2473},{"id":2472},"step-2-execute-and-interpret",[2474],{"type":46,"value":2475},"Step 2: Execute and interpret",{"type":40,"tag":56,"props":2477,"children":2478},{},[2479],{"type":46,"value":2480},"Look up the intent in the Operations table above. Read the linked reference file for the exact commands, flags, and expected output. Run the command and interpret the result for the user.",{"type":40,"tag":2344,"props":2482,"children":2484},{"id":2483},"step-3-verify",[2485],{"type":46,"value":2486},"Step 3: Verify",{"type":40,"tag":56,"props":2488,"children":2489},{},[2490],{"type":46,"value":2491},"After a mutating operation (create, update, delete, rotate), confirm the new state:",{"type":40,"tag":62,"props":2493,"children":2494},{},[2495,2513,2518],{"type":40,"tag":66,"props":2496,"children":2497},{},[2498,2500,2505,2506,2511],{"type":46,"value":2499},"Re-run the corresponding ",{"type":40,"tag":93,"props":2501,"children":2503},{"className":2502},[],[2504],{"type":46,"value":287},{"type":46,"value":1577},{"type":40,"tag":93,"props":2507,"children":2509},{"className":2508},[],[2510],{"type":46,"value":301},{"type":46,"value":2512}," command",{"type":40,"tag":66,"props":2514,"children":2515},{},[2516],{"type":46,"value":2517},"Confirm the output matches the user's intent",{"type":40,"tag":66,"props":2519,"children":2520},{},[2521],{"type":46,"value":2522},"Report the result",{"type":40,"tag":210,"props":2524,"children":2526},{"id":2525},"diagnosis-path",[2527],{"type":46,"value":2528},"Diagnosis path",{"type":40,"tag":2344,"props":2530,"children":2532},{"id":2531},"step-1-identify-the-symptom",[2533],{"type":46,"value":2534},"Step 1: Identify the symptom",{"type":40,"tag":56,"props":2536,"children":2537},{},[2538,2540,2546,2548,2554,2556,2561,2563,2568,2570,2575,2577,2582,2584,2589],{"type":46,"value":2539},"Ask the user for the exact, copy-pasted error text. Do not accept paraphrases — the exact string often encodes the layer (e.g., ",{"type":40,"tag":93,"props":2541,"children":2543},{"className":2542},[],[2544],{"type":46,"value":2545},"x509:",{"type":46,"value":2547}," prefix means TLS\u002Fcert layer, ",{"type":40,"tag":93,"props":2549,"children":2551},{"className":2550},[],[2552],{"type":46,"value":2553},"RESOURCE_EXHAUSTED:",{"type":46,"value":2555}," prefix means gRPC rate limit, ",{"type":40,"tag":93,"props":2557,"children":2559},{"className":2558},[],[2560],{"type":46,"value":1936},{"type":46,"value":2562}," means workflow replay layer). Note that ",{"type":40,"tag":93,"props":2564,"children":2566},{"className":2565},[],[2567],{"type":46,"value":765},{"type":46,"value":2569}," alone does not tell you which condition fired — account-limit throttling and per-Workflow lock contention (",{"type":40,"tag":93,"props":2571,"children":2573},{"className":2572},[],[2574],{"type":46,"value":2107},{"type":46,"value":2576},", i.e. BusyWorkflow) share the code. Split the resource-exhausted metric by its label (",{"type":40,"tag":93,"props":2578,"children":2580},{"className":2579},[],[2581],{"type":46,"value":2140},{"type":46,"value":2583}," on the Cloud v1 family, ",{"type":40,"tag":93,"props":2585,"children":2587},{"className":2586},[],[2588],{"type":46,"value":1851},{"type":46,"value":2590}," on v0 and self-hosted) rather than parsing the free-text message.",{"type":40,"tag":56,"props":2592,"children":2593},{},[2594],{"type":46,"value":2595},"Confirm three things before continuing:",{"type":40,"tag":62,"props":2597,"children":2598},{},[2599,2604,2616],{"type":40,"tag":66,"props":2600,"children":2601},{},[2602],{"type":46,"value":2603},"What command was run, or what SDK call produced the error?",{"type":40,"tag":66,"props":2605,"children":2606},{},[2607,2609,2614],{"type":46,"value":2608},"What environment produced it (local dev server, self-hosted cluster, Temporal Cloud)? If clear from context (addresses, commands, namespace format), don't ask — ",{"type":40,"tag":70,"props":2610,"children":2611},{},[2612],{"type":46,"value":2613},"but if uncertain, ask now before proceeding with any diagnosis.",{"type":46,"value":2615}," Save the answer to memory for future conversations.",{"type":40,"tag":66,"props":2617,"children":2618},{},[2619],{"type":46,"value":2620},"What changed recently (new deploy, new certs, new namespace, new region)?",{"type":40,"tag":2344,"props":2622,"children":2624},{"id":2623},"step-2-gather-context",[2625],{"type":46,"value":2626},"Step 2: Gather context",{"type":40,"tag":56,"props":2628,"children":2629},{},[2630],{"type":46,"value":2631},"The context the investigation needs depends on the category. At minimum:",{"type":40,"tag":62,"props":2633,"children":2634},{},[2635,2658,2683,2708],{"type":40,"tag":66,"props":2636,"children":2637},{},[2638,2643,2645,2651,2653,2657],{"type":40,"tag":70,"props":2639,"children":2640},{},[2641],{"type":46,"value":2642},"For any Cloud auth \u002F connectivity issue:",{"type":46,"value":2644}," auth method (API key vs mTLS), exact address, exact namespace, SDK + version. The endpoint family differs by auth method — see ",{"type":40,"tag":110,"props":2646,"children":2648},{"href":2647},"references\u002Ftriage\u002Fconnectivity.md#endpoint-formats",[2649],{"type":46,"value":2650},"connectivity.md#endpoint-formats",{"type":46,"value":2652},". For private connectivity (PrivateLink \u002F PSC), TLS server name overrides also vary by auth method — see ",{"type":40,"tag":110,"props":2654,"children":2655},{"href":1098},[2656],{"type":46,"value":1101},{"type":46,"value":143},{"type":40,"tag":66,"props":2659,"children":2660},{},[2661,2666,2668,2673,2675,2681],{"type":40,"tag":70,"props":2662,"children":2663},{},[2664],{"type":46,"value":2665},"For a stuck workflow:",{"type":46,"value":2667}," namespace, workflow ID, run ID, and the output of ",{"type":40,"tag":93,"props":2669,"children":2671},{"className":2670},[],[2672],{"type":46,"value":1915},{"type":46,"value":2674}," (pending-operation state lives here, not in the Event History alone). Event History via ",{"type":40,"tag":93,"props":2676,"children":2678},{"className":2677},[],[2679],{"type":46,"value":2680},"temporal workflow show",{"type":46,"value":2682}," is the companion view.",{"type":40,"tag":66,"props":2684,"children":2685},{},[2686,2691,2693,2698,2700,2706],{"type":40,"tag":70,"props":2687,"children":2688},{},[2689],{"type":46,"value":2690},"For a worker health issue:",{"type":46,"value":2692}," worker logs (registration errors, auth errors, panics), the output of ",{"type":40,"tag":93,"props":2694,"children":2696},{"className":2695},[],[2697],{"type":46,"value":1884},{"type":46,"value":2699},", and ",{"type":40,"tag":93,"props":2701,"children":2703},{"className":2702},[],[2704],{"type":46,"value":2705},"temporal worker describe --task-queue \u003Cq>",{"type":46,"value":2707}," for per-worker details.",{"type":40,"tag":66,"props":2709,"children":2710},{},[2711,2716],{"type":40,"tag":70,"props":2712,"children":2713},{},[2714],{"type":46,"value":2715},"For a non-determinism error:",{"type":46,"value":2717}," the worker log line containing the error, the workflow type name, and access to the history JSON for replay.",{"type":40,"tag":2344,"props":2719,"children":2721},{"id":2720},"step-3-validate-pasted-sdk-config-if-any",[2722],{"type":46,"value":2723},"Step 3: Validate pasted SDK config (if any)",{"type":40,"tag":56,"props":2725,"children":2726},{},[2727,2729,2735,2737,2742],{"type":46,"value":2728},"If the user has pasted SDK connection code — even just the address\u002Fnamespace\u002Fauth fields — review it against ",{"type":40,"tag":110,"props":2730,"children":2732},{"href":2731},"references\u002Ftriage\u002Fsdk-snippet-review.md",[2733],{"type":46,"value":2734},"sdk-snippet-review.md",{"type":46,"value":2736}," ",{"type":40,"tag":70,"props":2738,"children":2739},{},[2740],{"type":46,"value":2741},"before",{"type":46,"value":2743}," descending the ladder. Wrong endpoint family, short namespace, or mismatched auth method will make every network-layer probe below look broken when nothing lower actually is.",{"type":40,"tag":56,"props":2745,"children":2746},{},[2747],{"type":46,"value":2748},"Skip this step when the user has an established, previously-working config and the symptom is new — the snippet is not the culprit, the environment changed. Otherwise treat snippet validation as Layer 0.",{"type":40,"tag":2344,"props":2750,"children":2752},{"id":2751},"step-4-descend-the-ladder",[2753],{"type":46,"value":2754},"Step 4: Descend the ladder",{"type":40,"tag":56,"props":2756,"children":2757},{},[2758,2760,2764],{"type":46,"value":2759},"Use ",{"type":40,"tag":110,"props":2761,"children":2762},{"href":699},[2763],{"type":46,"value":702},{"type":46,"value":2765}," to pick the right starting layer. As a rule of thumb:",{"type":40,"tag":62,"props":2767,"children":2768},{},[2769,2774,2779],{"type":40,"tag":66,"props":2770,"children":2771},{},[2772],{"type":46,"value":2773},"Auth \u002F connectivity \u002F cert symptom → start at layer 1 (DNS) and walk up.",{"type":40,"tag":66,"props":2775,"children":2776},{},[2777],{"type":46,"value":2778},"Worker \u002F task-queue symptom → start at layer 6 (namespace + pollers).",{"type":40,"tag":66,"props":2780,"children":2781},{},[2782],{"type":46,"value":2783},"Stuck workflow \u002F determinism symptom → start at layer 7 (workflow code), but confirm layer 6 (worker is actually polling) first.",{"type":40,"tag":56,"props":2785,"children":2786},{},[2787],{"type":46,"value":2788},"Each layer has a command that proves it healthy and a failure signature that tells you whether the problem lives at that layer or higher.",{"type":40,"tag":2344,"props":2790,"children":2792},{"id":2791},"step-5-fix-and-verify",[2793],{"type":46,"value":2794},"Step 5: Fix and verify",{"type":40,"tag":56,"props":2796,"children":2797},{},[2798],{"type":46,"value":2799},"Prescribe the fix scoped to the root cause. Then verify by re-running the layer's healthy-check command and, if possible, the original user operation. Attach the confidence score to the diagnosis.",{"type":40,"tag":56,"props":2801,"children":2802},{},[2803],{"type":46,"value":2804},"If the layer above the fix is still failing, return to step 4 and continue walking upward — the first broken layer is rarely the only one.",{"type":40,"tag":49,"props":2806,"children":2808},{"id":2807},"prerequisites",[2809],{"type":46,"value":2810},"Prerequisites",{"type":40,"tag":62,"props":2812,"children":2813},{},[2814,2847],{"type":40,"tag":66,"props":2815,"children":2816},{},[2817,2822,2823,2828,2830,2836,2838,2846],{"type":40,"tag":70,"props":2818,"children":2819},{},[2820],{"type":46,"value":2821},"Temporal CLI",{"type":46,"value":352},{"type":40,"tag":93,"props":2824,"children":2826},{"className":2825},[],[2827],{"type":46,"value":8},{"type":46,"value":2829},") — required for data-plane operations and self-hosted admin. Install: ",{"type":40,"tag":93,"props":2831,"children":2833},{"className":2832},[],[2834],{"type":46,"value":2835},"brew install temporal",{"type":46,"value":2837}," or see ",{"type":40,"tag":110,"props":2839,"children":2843},{"href":2840,"rel":2841},"https:\u002F\u002Fdocs.temporal.io\u002Fcli",[2842],"nofollow",[2844],{"type":46,"value":2845},"Temporal CLI docs",{"type":46,"value":143},{"type":40,"tag":66,"props":2848,"children":2849},{},[2850,2854,2856,2862,2863,2870,2872,2877],{"type":40,"tag":70,"props":2851,"children":2852},{},[2853],{"type":46,"value":240},{"type":46,"value":2855}," — required for Cloud operations. Install: ",{"type":40,"tag":93,"props":2857,"children":2859},{"className":2858},[],[2860],{"type":46,"value":2861},"brew install temporal-cloud-cli",{"type":46,"value":2837},{"type":40,"tag":110,"props":2864,"children":2867},{"href":2865,"rel":2866},"https:\u002F\u002Fdocs.temporal.io\u002Fcloud\u002Ftcld",[2842],[2868],{"type":46,"value":2869},"tcld docs",{"type":46,"value":2871},". Authenticate with ",{"type":40,"tag":93,"props":2873,"children":2875},{"className":2874},[],[2876],{"type":46,"value":2380},{"type":46,"value":2878}," before use.",{"type":40,"tag":49,"props":2880,"children":2882},{"id":2881},"reference-files",[2883],{"type":46,"value":2884},"Reference files",{"type":40,"tag":210,"props":2886,"children":2888},{"id":2887},"operations-1",[2889],{"type":46,"value":14},{"type":40,"tag":62,"props":2891,"children":2892},{},[2893,2917,2934,2975,2992,3001,3018,3035,3044,3053,3106,3123,3148,3164,3208,3296],{"type":40,"tag":66,"props":2894,"children":2895},{},[2896,2900,2902,2907,2909,2915],{"type":40,"tag":110,"props":2897,"children":2898},{"href":839},[2899],{"type":46,"value":842},{"type":46,"value":2901}," — Cloud namespace lifecycle via ",{"type":40,"tag":93,"props":2903,"children":2905},{"className":2904},[],[2906],{"type":46,"value":240},{"type":46,"value":2908},": create, get, list, delete, failover, add-region, retention, tags, codec-server, HA config, connectivity rules, search attributes, accepted-client-ca, certificate filters, export, and the ",{"type":40,"tag":93,"props":2910,"children":2912},{"className":2911},[],[2913],{"type":46,"value":2914},"tcld nexus endpoint allowed-namespace",{"type":46,"value":2916}," caller allowlist (1,000-caller Access Policy ceiling).",{"type":40,"tag":66,"props":2918,"children":2919},{},[2920,2924,2926,2932],{"type":40,"tag":110,"props":2921,"children":2922},{"href":918},[2923],{"type":46,"value":921},{"type":46,"value":2925}," — Capacity modes (On-Demand \u002F Provisioned), APS\u002FRPS\u002FOPS definitions, TRUs, ",{"type":40,"tag":93,"props":2927,"children":2929},{"className":2928},[],[2930],{"type":46,"value":2931},"tcld namespace capacity update",{"type":46,"value":2933},", default limits, throttling, APS management best practices.",{"type":40,"tag":66,"props":2935,"children":2936},{},[2937,2941,2943,2949,2951,2957,2959,2965,2967,2973],{"type":40,"tag":110,"props":2938,"children":2939},{"href":978},[2940],{"type":46,"value":981},{"type":46,"value":2942}," — API key lifecycle (",{"type":40,"tag":93,"props":2944,"children":2946},{"className":2945},[],[2947],{"type":46,"value":2948},"tcld apikey",{"type":46,"value":2950},"), users (",{"type":40,"tag":93,"props":2952,"children":2954},{"className":2953},[],[2955],{"type":46,"value":2956},"tcld user",{"type":46,"value":2958},"), user groups (",{"type":40,"tag":93,"props":2960,"children":2962},{"className":2961},[],[2963],{"type":46,"value":2964},"tcld user-group",{"type":46,"value":2966},"), service accounts, account operations (",{"type":40,"tag":93,"props":2968,"children":2970},{"className":2969},[],[2971],{"type":46,"value":2972},"tcld account",{"type":46,"value":2974},"), roles, namespace permissions.",{"type":40,"tag":66,"props":2976,"children":2977},{},[2978,2982,2984,2990],{"type":40,"tag":110,"props":2979,"children":2980},{"href":1038},[2981],{"type":46,"value":1041},{"type":46,"value":2983}," — mTLS cert management: generating certs with ",{"type":40,"tag":93,"props":2985,"children":2987},{"className":2986},[],[2988],{"type":46,"value":2989},"tcld generate-certificates",{"type":46,"value":2991},", uploading CAs, certificate filters, cert rotation, switching mTLS ↔ API keys.",{"type":40,"tag":66,"props":2993,"children":2994},{},[2995,2999],{"type":40,"tag":110,"props":2996,"children":2997},{"href":1098},[2998],{"type":46,"value":1101},{"type":46,"value":3000}," — Private connectivity (AWS PrivateLink \u002F GCP PSC), connectivity rules: setup, rule parameters, tcld commands, attaching rules to namespaces.",{"type":40,"tag":66,"props":3002,"children":3003},{},[3004,3008,3010,3016],{"type":40,"tag":110,"props":3005,"children":3006},{"href":1445},[3007],{"type":46,"value":1448},{"type":46,"value":3009}," — Migration paths: automated self-hosted→Cloud (S2S proxy, ",{"type":40,"tag":93,"props":3011,"children":3013},{"className":3012},[],[3014],{"type":46,"value":3015},"tcld migration",{"type":46,"value":3017}," commands, 5 phases), manual self-hosted→Cloud (client changes, workflow strategies), within-Cloud region-to-region (HA add-region\u002Ffailover).",{"type":40,"tag":66,"props":3019,"children":3020},{},[3021,3025,3027,3033],{"type":40,"tag":110,"props":3022,"children":3023},{"href":1313},[3024],{"type":46,"value":1316},{"type":46,"value":3026}," — Cloud Ops API: HTTP and gRPC endpoints (",{"type":40,"tag":93,"props":3028,"children":3030},{"className":3029},[],[3031],{"type":46,"value":3032},"saas-api.tmprl.cloud",{"type":46,"value":3034},"), Go SDK, protobuf compilation, rate limits (160 RPS account, 40 user, 80 SA, 10 concurrent async), API version header, use cases.",{"type":40,"tag":66,"props":3036,"children":3037},{},[3038,3042],{"type":40,"tag":110,"props":3039,"children":3040},{"href":1335},[3041],{"type":46,"value":1338},{"type":46,"value":3043}," — Cloud billing: Billing Center (invoices, credits, plans, cost by namespace), Usage Dashboards, Billing API: async CSV report generation, FOCUS-friendly format, 27-column report schema, date range constraints.",{"type":40,"tag":66,"props":3045,"children":3046},{},[3047,3051],{"type":40,"tag":110,"props":3048,"children":3049},{"href":1357},[3050],{"type":46,"value":1360},{"type":46,"value":3052}," — Cloud Audit Logs: supported control plane events (Account, API Keys, Connectivity Rules, Namespace, Export, Nexus, Service Accounts, User, User Groups), JSON format, API access (30-day retention), AWS Kinesis and GCP Pub\u002FSub sink configuration.",{"type":40,"tag":66,"props":3054,"children":3055},{},[3056,3060,3062,3068,3069,3075,3077,3083,3084,3090,3091,3097,3098,3104],{"type":40,"tag":110,"props":3057,"children":3058},{"href":1379},[3059],{"type":46,"value":1382},{"type":46,"value":3061}," — Terraform provider: setup (",{"type":40,"tag":93,"props":3063,"children":3065},{"className":3064},[],[3066],{"type":46,"value":3067},"TEMPORAL_CLOUD_API_KEY",{"type":46,"value":360},{"type":40,"tag":93,"props":3070,"children":3072},{"className":3071},[],[3073],{"type":46,"value":3074},"temporalcloud_namespace",{"type":46,"value":3076},"\u002F",{"type":40,"tag":93,"props":3078,"children":3080},{"className":3079},[],[3081],{"type":46,"value":3082},"temporalcloud_user",{"type":46,"value":3076},{"type":40,"tag":93,"props":3085,"children":3087},{"className":3086},[],[3088],{"type":46,"value":3089},"temporalcloud_service_account",{"type":46,"value":3076},{"type":40,"tag":93,"props":3092,"children":3094},{"className":3093},[],[3095],{"type":46,"value":3096},"temporalcloud_apikey",{"type":46,"value":3076},{"type":40,"tag":93,"props":3099,"children":3101},{"className":3100},[],[3102],{"type":46,"value":3103},"temporalcloud_nexus_endpoint",{"type":46,"value":3105}," CRUD, import, data sources (regions, namespaces), limitations (API keys not importable, cannot manage Account Owner).",{"type":40,"tag":66,"props":3107,"children":3108},{},[3109,3113,3115,3121],{"type":40,"tag":110,"props":3110,"children":3111},{"href":1401},[3112],{"type":46,"value":1404},{"type":46,"value":3114}," — Cloud notifications: certificate expiry (15\u002F10\u002F5 days), API key expiry (30\u002F20\u002F10 days), credit consumption\u002Fexpiry alerts, plan changes, failover events, recipient roles, ",{"type":40,"tag":93,"props":3116,"children":3118},{"className":3117},[],[3119],{"type":46,"value":3120},"noreply@temporal.io",{"type":46,"value":3122}," sender.",{"type":40,"tag":66,"props":3124,"children":3125},{},[3126,3130,3132,3138,3140,3146],{"type":40,"tag":110,"props":3127,"children":3128},{"href":1423},[3129],{"type":46,"value":1426},{"type":46,"value":3131}," — SAML SSO (Entra ID, Okta): entity identifier (",{"type":40,"tag":93,"props":3133,"children":3135},{"className":3134},[],[3136],{"type":46,"value":3137},"urn:auth0:prod-tmprl:ACCOUNT_ID-saml",{"type":46,"value":3139},"), callback URL (",{"type":40,"tag":93,"props":3141,"children":3143},{"className":3142},[],[3144],{"type":46,"value":3145},"login.tmprl.cloud",{"type":46,"value":3147},"), IdP configuration steps, support ticket workflow. SCIM: supported vendors, prerequisites (SAML first), 10-minute sync window, group-to-role mapping.",{"type":40,"tag":66,"props":3149,"children":3150},{},[3151,3155,3157,3162],{"type":40,"tag":110,"props":3152,"children":3153},{"href":1120},[3154],{"type":46,"value":1123},{"type":46,"value":3156}," — Self-hosted control plane via ",{"type":40,"tag":93,"props":3158,"children":3160},{"className":3159},[],[3161],{"type":46,"value":248},{"type":46,"value":3163},": cluster health\u002Fdescribe, namespace CRUD, search-attribute create\u002Flist\u002Fremove, Nexus endpoint CRUD.",{"type":40,"tag":66,"props":3165,"children":3166},{},[3167,3171,3173,3179,3181,3187,3188,3193,3194,3199,3200,3206],{"type":40,"tag":110,"props":3168,"children":3169},{"href":1182},[3170],{"type":46,"value":1185},{"type":46,"value":3172}," — Data-plane health queries: ",{"type":40,"tag":93,"props":3174,"children":3176},{"className":3175},[],[3177],{"type":46,"value":3178},"temporal workflow list",{"type":46,"value":3180}," with List Filters, ",{"type":40,"tag":93,"props":3182,"children":3184},{"className":3183},[],[3185],{"type":46,"value":3186},"temporal workflow describe",{"type":46,"value":3076},{"type":40,"tag":93,"props":3189,"children":3191},{"className":3190},[],[3192],{"type":46,"value":315},{"type":46,"value":3076},{"type":40,"tag":93,"props":3195,"children":3197},{"className":3196},[],[3198],{"type":46,"value":308},{"type":46,"value":258},{"type":40,"tag":93,"props":3201,"children":3203},{"className":3202},[],[3204],{"type":46,"value":3205},"temporal task-queue describe",{"type":46,"value":3207}," for poller status.",{"type":40,"tag":66,"props":3209,"children":3210},{},[3211,3215,3217,3222,3224,3229,3231,3237,3238,3244,3245,3251,3252,3258,3260,3266,3267,3273,3275,3280,3282,3288,3290,3295],{"type":40,"tag":110,"props":3212,"children":3213},{"href":112},[3214],{"type":46,"value":115},{"type":46,"value":3216}," — Cross-command ",{"type":40,"tag":93,"props":3218,"children":3220},{"className":3219},[],[3221],{"type":46,"value":8},{"type":46,"value":3223}," CLI conventions: connection\u002Fidentity (",{"type":40,"tag":93,"props":3225,"children":3227},{"className":3226},[],[3228],{"type":46,"value":466},{"type":46,"value":3230}," env vars ↔ ",{"type":40,"tag":93,"props":3232,"children":3234},{"className":3233},[],[3235],{"type":46,"value":3236},"--address",{"type":46,"value":3076},{"type":40,"tag":93,"props":3239,"children":3241},{"className":3240},[],[3242],{"type":46,"value":3243},"--namespace",{"type":46,"value":3076},{"type":40,"tag":93,"props":3246,"children":3248},{"className":3247},[],[3249],{"type":46,"value":3250},"--api-key",{"type":46,"value":258},{"type":40,"tag":93,"props":3253,"children":3255},{"className":3254},[],[3256],{"type":46,"value":3257},"--identity",{"type":46,"value":3259},"), output\u002Fformatting (",{"type":40,"tag":93,"props":3261,"children":3263},{"className":3262},[],[3264],{"type":46,"value":3265},"--output",{"type":46,"value":258},{"type":40,"tag":93,"props":3268,"children":3270},{"className":3269},[],[3271],{"type":46,"value":3272},"--time-format",{"type":46,"value":3274},", payload shorthand), the ",{"type":40,"tag":93,"props":3276,"children":3278},{"className":3277},[],[3279],{"type":46,"value":400},{"type":46,"value":3281}," ⇒ batch-job bridge (with ",{"type":40,"tag":93,"props":3283,"children":3285},{"className":3284},[],[3286],{"type":46,"value":3287},"temporal batch describe\u002Flist\u002Fterminate",{"type":46,"value":3289},"), and schedule time-spec forms. Ends with an operation→command index that routes each data-plane operation to its owner file. Delegates exhaustive flags to ",{"type":40,"tag":93,"props":3291,"children":3293},{"className":3292},[],[3294],{"type":46,"value":106},{"type":46,"value":143},{"type":40,"tag":66,"props":3297,"children":3298},{},[3299,3303],{"type":40,"tag":110,"props":3300,"children":3301},{"href":1467},[3302],{"type":46,"value":1470},{"type":46,"value":3304}," — End-to-end ops playbooks: set up new namespace, check APS, switch capacity mode, find hung workflows, rotate API key, audit access, rotate mTLS certs, check self-hosted health, view billing \u002F generate billing report, configure audit log sink, provision resources with Terraform, set up SAML SSO.",{"type":40,"tag":210,"props":3306,"children":3308},{"id":3307},"diagnosis-1",[3309],{"type":46,"value":1476},{"type":40,"tag":62,"props":3311,"children":3312},{},[3313,3329,3338,3349,3368,3401,3426,3437,3455,3495,3514,3554,3573,3582,3591,3652],{"type":40,"tag":66,"props":3314,"children":3315},{},[3316,3320,3322,3327],{"type":40,"tag":110,"props":3317,"children":3318},{"href":2731},[3319],{"type":46,"value":2734},{"type":46,"value":3321}," — Layer-0 config check for pasted SDK connection snippets: endpoint form per auth method, namespace format, auth \u002F TLS expectations, ",{"type":40,"tag":93,"props":3323,"children":3325},{"className":3324},[],[3326],{"type":46,"value":466},{"type":46,"value":3328}," env vars, common misconfigurations. Run before the diagnostic ladder.",{"type":40,"tag":66,"props":3330,"children":3331},{},[3332,3336],{"type":40,"tag":110,"props":3333,"children":3334},{"href":699},[3335],{"type":46,"value":702},{"type":46,"value":3337}," — the seven-layer bottom-up model, with one canonical command per layer and cross-links into the topical leaves.",{"type":40,"tag":66,"props":3339,"children":3340},{},[3341,3347],{"type":40,"tag":110,"props":3342,"children":3344},{"href":3343},"references\u002Ftriage\u002Fconnectivity.md",[3345],{"type":46,"value":3346},"connectivity.md",{"type":46,"value":3348}," — DNS, TCP, endpoint families (Namespace Endpoint for mTLS vs. Regional Endpoint for API keys), firewall\u002Fproxy shapes, PrivateLink\u002FPSC, quick diagnostic scripts.",{"type":40,"tag":66,"props":3350,"children":3351},{},[3352,3358,3360,3366],{"type":40,"tag":110,"props":3353,"children":3355},{"href":3354},"references\u002Ftriage\u002Fcertificates.md",[3356],{"type":46,"value":3357},"certificates.md",{"type":46,"value":3359}," — x509 and TLS alert strings, expiry \u002F unknown-authority \u002F hostname-mismatch \u002F key-mismatch diagnosis, Cloud accepted-client-CA set via ",{"type":40,"tag":93,"props":3361,"children":3363},{"className":3362},[],[3364],{"type":46,"value":3365},"tcld namespace accepted-client-ca",{"type":46,"value":3367},", Cloud mTLS certificate requirements, rotation and expiry notifications, openssl recipes.",{"type":40,"tag":66,"props":3369,"children":3370},{},[3371,3377,3379,3384,3386,3392,3394,3399],{"type":40,"tag":110,"props":3372,"children":3374},{"href":3373},"references\u002Ftriage\u002Fauthentication.md",[3375],{"type":46,"value":3376},"authentication.md",{"type":46,"value":3378}," — ",{"type":40,"tag":93,"props":3380,"children":3382},{"className":3381},[],[3383],{"type":46,"value":1752},{"type":46,"value":3385}," vs ",{"type":40,"tag":93,"props":3387,"children":3389},{"className":3388},[],[3390],{"type":46,"value":3391},"PERMISSION_DENIED",{"type":46,"value":3393},", API-key lifecycle (",{"type":40,"tag":93,"props":3395,"children":3397},{"className":3396},[],[3398],{"type":46,"value":2948},{"type":46,"value":3400}," commands, env var propagation, required Regional Endpoint form), mTLS after TLS (certificate filters, identity-to-role mapping), Cloud account-level roles and namespace-level permissions.",{"type":40,"tag":66,"props":3402,"children":3403},{},[3404,3410,3412,3417,3419,3424],{"type":40,"tag":110,"props":3405,"children":3407},{"href":3406},"references\u002Ftriage\u002Fworkflow-stuck.md",[3408],{"type":46,"value":3409},"workflow-stuck.md",{"type":46,"value":3411}," — Workflow Execution Status values, ",{"type":40,"tag":93,"props":3413,"children":3415},{"className":3414},[],[3416],{"type":46,"value":3186},{"type":46,"value":3418}," as the primary inspection command, Event History via ",{"type":40,"tag":93,"props":3420,"children":3422},{"className":3421},[],[3423],{"type":46,"value":2680},{"type":46,"value":3425},", pending activities \u002F child workflows \u002F signals \u002F Nexus operations \u002F Workflow Tasks, WorkflowTaskFailed retry loops, recovery commands (signal, terminate, cancel, reset, pause\u002Funpause).",{"type":40,"tag":66,"props":3427,"children":3428},{},[3429,3435],{"type":40,"tag":110,"props":3430,"children":3432},{"href":3431},"references\u002Ftriage\u002Fnon-determinism.md",[3433],{"type":46,"value":3434},"non-determinism.md",{"type":46,"value":3436}," — determinism definition, WFT-failure signature, ND-inducing code patterns, per-SDK error shapes, identifying ND from Event History, local replay reproduction, remediation via Worker Versioning \u002F patching \u002F reset.",{"type":40,"tag":66,"props":3438,"children":3439},{},[3440,3446,3448,3453],{"type":40,"tag":110,"props":3441,"children":3443},{"href":3442},"references\u002Ftriage\u002Fworker-health.md",[3444],{"type":46,"value":3445},"worker-health.md",{"type":46,"value":3447}," — no-pollers runbook via ",{"type":40,"tag":93,"props":3449,"children":3451},{"className":3450},[],[3452],{"type":46,"value":3205},{"type":46,"value":3454},", reachability and versioning, worker-level describe, schedule-to-start latency, worker task slots, sticky execution and sticky cache, worker heartbeating, Cloud namespace-level poller limits, worker log signatures.",{"type":40,"tag":66,"props":3456,"children":3457},{},[3458,3464,3466,3471,3473,3479,3480,3486,3488,3493],{"type":40,"tag":110,"props":3459,"children":3461},{"href":3460},"references\u002Ftriage\u002Frate-limits.md",[3462],{"type":46,"value":3463},"rate-limits.md",{"type":46,"value":3465}," — what ",{"type":40,"tag":93,"props":3467,"children":3469},{"className":3468},[],[3470],{"type":46,"value":765},{"type":46,"value":3472}," means (and does not), Cloud APS \u002F RPS \u002F OPS under On-Demand and Provisioned capacity modes, self-hosted ",{"type":40,"tag":93,"props":3474,"children":3476},{"className":3475},[],[3477],{"type":46,"value":3478},"frontend.rps",{"type":46,"value":2109},{"type":40,"tag":93,"props":3481,"children":3483},{"className":3482},[],[3484],{"type":46,"value":3485},"frontend.namespaceRPS",{"type":46,"value":3487}," dynamic config, identifying which limit fired via the throttle metrics (Cloud v1) or the ",{"type":40,"tag":93,"props":3489,"children":3491},{"className":3490},[],[3492],{"type":46,"value":1851},{"type":46,"value":3494}," label (v0 \u002F self-hosted), and separating account-limit throttling from single-resource exhaustion.",{"type":40,"tag":66,"props":3496,"children":3497},{},[3498,3504,3506,3512],{"type":40,"tag":110,"props":3499,"children":3501},{"href":3500},"references\u002Ftriage\u002Fha-failover.md",[3502],{"type":46,"value":3503},"ha-failover.md",{"type":46,"value":3505}," — Cloud HA routing via the Namespace Endpoint CNAME, verifying the active region (control-plane ",{"type":40,"tag":93,"props":3507,"children":3509},{"className":3508},[],[3510],{"type":46,"value":3511},"tcld namespace get",{"type":46,"value":3513}," vs. DNS view), clients that did not follow the failover, PrivateLink after failover, failover-not-executing, handover-window errors, platform limits, RPO\u002FRTO semantics, and Serverless Workers (AWS Lambda) not following a failover because compute-provider configuration is region-scoped.",{"type":40,"tag":66,"props":3515,"children":3516},{},[3517,3523,3525,3530,3532,3538,3539,3545,3547,3553],{"type":40,"tag":110,"props":3518,"children":3520},{"href":3519},"references\u002Ftriage\u002Fruntime-errors.md",[3521],{"type":46,"value":3522},"runtime-errors.md",{"type":46,"value":3524}," — deadline-exceeded disambiguated by operation and by where the call was made, Workflow lock contention (BusyWorkflow) separated from account-limit throttling and confirmed via the ",{"type":40,"tag":93,"props":3526,"children":3528},{"className":3527},[],[3529],{"type":46,"value":2140},{"type":46,"value":3531}," breakdown, routing for ",{"type":40,"tag":93,"props":3533,"children":3535},{"className":3534},[],[3536],{"type":46,"value":3537},"no pollers",{"type":46,"value":2109},{"type":40,"tag":93,"props":3540,"children":3542},{"className":3541},[],[3543],{"type":46,"value":3544},"INVALID_ARGUMENT",{"type":46,"value":3546}," \u002F unspecified ",{"type":40,"tag":93,"props":3548,"children":3550},{"className":3549},[],[3551],{"type":46,"value":3552},"UNAVAILABLE",{"type":46,"value":143},{"type":40,"tag":66,"props":3555,"children":3556},{},[3557,3563,3565,3571],{"type":40,"tag":110,"props":3558,"children":3560},{"href":3559},"references\u002Ftriage\u002Freplay.md",[3561],{"type":46,"value":3562},"replay.md",{"type":46,"value":3564}," — fetching Event History with the SDK client (CLI export as fallback), running the SDK replayer in every supported SDK (Go, Python, TypeScript, Java, .NET, Ruby, PHP), ",{"type":40,"tag":93,"props":3566,"children":3568},{"className":3567},[],[3569],{"type":46,"value":3570},"TEMPORAL_DEBUG",{"type":46,"value":3572}," and the deadlock detector, interpreting divergent and successful replays, and the TypeScript-only VS Code extension.",{"type":40,"tag":66,"props":3574,"children":3575},{},[3576,3580],{"type":40,"tag":110,"props":3577,"children":3578},{"href":2186},[3579],{"type":46,"value":2189},{"type":46,"value":3581}," — Payload size limit (2 MB) and gRPC message size limit (4 MB): error messages, per-SDK behavior (Python 1.23.0+ vs. others), claim check pattern, External Storage (Pre-release), batch-size reduction.",{"type":40,"tag":66,"props":3583,"children":3584},{},[3585,3589],{"type":40,"tag":110,"props":3586,"children":3587},{"href":2252},[3588],{"type":46,"value":2255},{"type":46,"value":3590}," — Latency and throughput diagnosis via SDK metrics: schedule-to-start latency, workflow task execution latency, replay latency, activity execution latency, task slot depletion, network request metrics, sticky cache metrics.",{"type":40,"tag":66,"props":3592,"children":3593},{},[3594,3598,3600,3605,3606,3612,3614,3620,3622,3628,3630,3636,3637,3643,3644,3650],{"type":40,"tag":110,"props":3595,"children":3596},{"href":2316},[3597],{"type":46,"value":2319},{"type":46,"value":3599}," — Missed Schedule Actions: alerting via ",{"type":40,"tag":93,"props":3601,"children":3603},{"className":3602},[],[3604],{"type":46,"value":2310},{"type":46,"value":2109},{"type":40,"tag":93,"props":3607,"children":3609},{"className":3608},[],[3610],{"type":46,"value":3611},"schedule_missed_catchup_window",{"type":46,"value":3613},", investigation via ",{"type":40,"tag":93,"props":3615,"children":3617},{"className":3616},[],[3618],{"type":46,"value":3619},"temporal schedule list",{"type":46,"value":3621}," + ",{"type":40,"tag":93,"props":3623,"children":3625},{"className":3624},[],[3626],{"type":46,"value":3627},"temporal schedule describe",{"type":46,"value":3629},", DescribeSchedule fields (",{"type":40,"tag":93,"props":3631,"children":3633},{"className":3632},[],[3634],{"type":46,"value":3635},"missedCatchupWindow",{"type":46,"value":258},{"type":40,"tag":93,"props":3638,"children":3640},{"className":3639},[],[3641],{"type":46,"value":3642},"overlapSkipped",{"type":46,"value":258},{"type":40,"tag":93,"props":3645,"children":3647},{"className":3646},[],[3648],{"type":46,"value":3649},"bufferDropped",{"type":46,"value":3651},"), default catchup window (one year), root causes, overlap policies (6 values), backfill remediation.",{"type":40,"tag":66,"props":3653,"children":3654},{},[3655,3661],{"type":40,"tag":110,"props":3656,"children":3658},{"href":3657},"references\u002Ftriage\u002Frecipes.md",[3659],{"type":46,"value":3660},"recipes.md",{"type":46,"value":3662}," — four end-to-end triage walkthroughs: stuck workflow at 3am, cert expired with workers offline, task-queue backlog mystery, non-determinism caught in prod.",{"type":40,"tag":49,"props":3664,"children":3666},{"id":3665},"feedback",[3667],{"type":46,"value":3668},"Feedback",{"type":40,"tag":210,"props":3670,"children":3672},{"id":3671},"feedback-prompt",[3673],{"type":46,"value":3674},"Feedback prompt",{"type":40,"tag":56,"props":3676,"children":3677},{},[3678,3680,3685],{"type":46,"value":3679},"When you have ",{"type":40,"tag":70,"props":3681,"children":3682},{},[3683],{"type":46,"value":3684},"first",{"type":46,"value":3686}," loaded this skill, output this message to the user:",{"type":40,"tag":56,"props":3688,"children":3689},{},[3690,3692,3699,3701,3708],{"type":46,"value":3691},"\"Thank you for trying out the public preview of the Temporal Ops skill! We would love to hear your feedback - positive or negative - over in the ",{"type":40,"tag":110,"props":3693,"children":3696},{"href":3694,"rel":3695},"https:\u002F\u002Ft.mp\u002Fslack",[2842],[3697],{"type":46,"value":3698},"Community Slack",{"type":46,"value":3700},", in the ",{"type":40,"tag":110,"props":3702,"children":3705},{"href":3703,"rel":3704},"https:\u002F\u002Ftemporalio.slack.com\u002Farchives\u002FC0818FQPYKY",[2842],[3706],{"type":46,"value":3707},"#topic-ai channel",{"type":46,"value":3709},".\"",{"type":40,"tag":56,"props":3711,"children":3712},{},[3713],{"type":46,"value":3714},"Do not output this message multiple times in the same conversation.",{"type":40,"tag":210,"props":3716,"children":3718},{"id":3717},"reporting-issues-in-this-skill",[3719],{"type":46,"value":3720},"Reporting Issues in This Skill",{"type":40,"tag":56,"props":3722,"children":3723},{},[3724,3726,3732],{"type":46,"value":3725},"If you (the AI) find this skill's explanations are unclear, misleading, or missing important information, draft a GitHub issue body describing the problem encountered and what would have helped, then ask the user to file it at ",{"type":40,"tag":110,"props":3727,"children":3730},{"href":3728,"rel":3729},"https:\u002F\u002Fgithub.com\u002Ftemporalio\u002Fskill-temporal-ops\u002Fissues\u002Fnew",[2842],[3731],{"type":46,"value":3728},{"type":46,"value":3733},". Do not file the issue autonomously.",{"items":3735,"total":3844},[3736,3755,3770,3788,3816,3837],{"slug":3737,"name":3737,"fn":3738,"description":3739,"org":3740,"tags":3741,"stars":3752,"repoUrl":3753,"updatedAt":3754},"temporal-developer","develop Temporal workflows and activities","Develop, debug, and manage Temporal applications across Python, TypeScript, Go, Java, .NET, Ruby, and Rust. Use when the user is building workflows, activities, or workers with a Temporal SDK, debugging issues like non-determinism errors, stuck workflows, or activity retries, using Temporal CLI, Temporal Server, or Temporal Cloud, or working with durable execution concepts like signals, queries, heartbeats, versioning, continue-as-new, child workflows, or saga patterns. Also use when the user mentions \"run a Temporal workflow from the CLI\", \"start a dev server\", \"run temporal server start-dev\", \"temporal workflow start\", \"temporal workflow execute\", \"temporal workflow signal\", \"temporal workflow query\", \"temporal workflow update\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3742,3745,3748,3749],{"name":3743,"slug":3744,"type":16},"Backend","backend",{"name":3746,"slug":3747,"type":16},"Debugging","debugging",{"name":9,"slug":8,"type":16},{"name":3750,"slug":3751,"type":16},"Workflow Automation","workflow-automation",201,"https:\u002F\u002Fgithub.com\u002Ftemporalio\u002Fskill-temporal-developer","2026-04-06T18:54:23.154697",{"slug":3756,"name":3756,"fn":3757,"description":3758,"org":3759,"tags":3760,"stars":3767,"repoUrl":3768,"updatedAt":3769},"temporal-cloud","troubleshoot Temporal Cloud connections","Fix Temporal Cloud connection, auth, and config problems. Use when users hit login failures, can't connect to Cloud, get x509\u002FTLS errors, have namespace or endpoint mismatches, paste broken SDK connection snippets, are confused about which endpoint to use, see \"no pollers\" or RESOURCE_EXHAUSTED, struggle with PrivateLink\u002FPSC, or need help setting up a new namespace. Also use for HA namespace failover and DNS issues. Not for worker performance tuning or scaling.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3761,3762,3763,3766],{"name":22,"slug":23,"type":16},{"name":3746,"slug":3747,"type":16},{"name":3764,"slug":3765,"type":16},"Security","security",{"name":9,"slug":8,"type":16},5,"https:\u002F\u002Fgithub.com\u002Ftemporalio\u002Fskill-temporal-cloud","2026-04-06T18:54:24.441947",{"slug":3771,"name":3771,"fn":3772,"description":3773,"org":3774,"tags":3775,"stars":3785,"repoUrl":3786,"updatedAt":3787},"temporal-workflow-design-critic","audit Temporal workflow designs","Critique, audit, or score a Temporal workflow design for correctness, production readiness, and best-practice compliance. Use when asked to review a Temporal architecture, evaluate whether a design is production ready, identify anti-patterns or risks, assess Temporal fitness for a use case, or give a design a thumbs up\u002Fdown. Not for writing or debugging Temporal code — use temporal-developer for that.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3776,3779,3782],{"name":3777,"slug":3778,"type":16},"Architecture","architecture",{"name":3780,"slug":3781,"type":16},"Code Review","code-review",{"name":3783,"slug":3784,"type":16},"Engineering","engineering",4,"https:\u002F\u002Fgithub.com\u002Ftemporalio\u002Fskill-temporal-design","2026-05-23T06:01:03.120182",{"slug":3789,"name":3789,"fn":3790,"description":3791,"org":3792,"tags":3793,"stars":3813,"repoUrl":3814,"updatedAt":3815},"temporal-workertuning","tune Temporal worker performance","Tune Temporal Worker performance across Go, Java, TypeScript, Python, and .NET. Use when the user asks to \"configure slot suppliers\", \"set up a worker tuner\", \"enable poller autoscaling\", \"tune worker cache\", \"fix high schedule-to-start latency\", \"diagnose worker bottlenecks\", \"right-size workers for production\", \"choose between fixed-size and resource-based slot suppliers\", \"configure maxConcurrentWorkflowTaskExecutionSize\", \"set up resource-based tuner\", \"interpret worker_task_slots_available\", \"reduce schedule_to_start_latency\", \"scale worker fleet\", \"configure sticky cache\", or mentions Worker tuning, Worker performance, slot suppliers, composite tuners, or poller autoscaling.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3794,3797,3800,3803,3806,3809,3810],{"name":3795,"slug":3796,"type":16},".NET","net",{"name":3798,"slug":3799,"type":16},"Go","go",{"name":3801,"slug":3802,"type":16},"Java","java",{"name":3804,"slug":3805,"type":16},"Performance","performance",{"name":3807,"slug":3808,"type":16},"Python","python",{"name":9,"slug":8,"type":16},{"name":3811,"slug":3812,"type":16},"TypeScript","typescript",2,"https:\u002F\u002Fgithub.com\u002Ftemporalio\u002Fskill-temporal-workertuning","2026-06-12T08:06:29.755112",{"slug":3817,"name":3817,"fn":3818,"description":3819,"org":3820,"tags":3821,"stars":3834,"repoUrl":3835,"updatedAt":3836},"temporal-observability","collect and query Temporal metrics","Instrument, collect, query, and alert on Temporal metrics across Temporal Cloud and self-hosted deployments. Covers Cloud OpenMetrics endpoint, SDK metrics, third-party integrations (Datadog, Grafana, New Relic, Prometheus, OTel Collector, ClickStack), worker fleet health, and PromQL v0-to-v1 migration. Use when the user mentions: \"Temporal metrics\", \"Temporal monitoring\", \"Temporal observability\", \"Temporal alerting\", \"Datadog Temporal\", \"Grafana Temporal\", \"Cloud metrics endpoint\", \"metrics.temporal.io\", \"SDK metrics\", \"worker backlog\", \"scrape Temporal metrics\", \"OpenMetrics\", \"PromQL migration\". Not for writing Workflows\u002FActivities (temporal-developer), Worker tuning (temporal-workertuning), or Cloud admin (temporal-cloud\u002Ftemporal-ops).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3822,3825,3828,3831],{"name":3823,"slug":3824,"type":16},"Datadog","datadog",{"name":3826,"slug":3827,"type":16},"Metrics","metrics",{"name":3829,"slug":3830,"type":16},"Monitoring","monitoring",{"name":3832,"slug":3833,"type":16},"Observability","observability",1,"https:\u002F\u002Fgithub.com\u002Ftemporalio\u002Fskill-temporal-observability","2026-06-09T07:35:44.598916",{"slug":4,"name":4,"fn":5,"description":6,"org":3838,"tags":3839,"stars":24,"repoUrl":25,"updatedAt":26},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3840,3841,3842,3843],{"name":18,"slug":19,"type":16},{"name":22,"slug":23,"type":16},{"name":14,"slug":15,"type":16},{"name":9,"slug":8,"type":16},6,{"items":3846,"total":3834},[3847],{"slug":4,"name":4,"fn":5,"description":6,"org":3848,"tags":3849,"stars":24,"repoUrl":25,"updatedAt":26},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3850,3851,3852,3853],{"name":18,"slug":19,"type":16},{"name":22,"slug":23,"type":16},{"name":14,"slug":15,"type":16},{"name":9,"slug":8,"type":16}]