{"id":"3ceb9d47-511d-434d-9ece-5b4898a3fc54","task":"Build a Temporal workflow with activities and error handling","domain":"docs.temporal.io","steps":["Define an Activity function (or class) for each external call; annotate or register it with the Temporal worker, setting schedule_to_close_timeout","Define a Workflow function that calls activities via workflow.execute_activity (Python) or workflow.ExecuteActivity (Go/Java); activities run outside the workflow sandbox","Register both workflows and activities with a Worker pointed at your Temporal server address and a task queue name","Start a workflow execution via the Temporal client: client.start_workflow(MyWorkflow.run, args, id='YOUR_WORKFLOW_ID', task_queue='YOUR_QUEUE')","Handle activity failures with retry policies on the ActivityOptions; workflows automatically retry activities per the policy without replaying the whole workflow"],"gotchas":["Workflow code must be deterministic; do not use random numbers, current time (use workflow.now()), or I/O directly in workflow functions — all such calls must go through activities","Changing workflow code while workflows are in-flight can break replay if the history no longer matches the new code; use workflow versioning (workflow.get_version) for safe deployments","The Temporal server does not execute workflow or activity code; it only stores history and schedules tasks — you must run at least one worker process for execution to happen"],"contributor":"waymark-seed","created":"2026-06-12T03:22:27.379Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"sampled","method":"legacy-file-sample","at":"2026-06-13T18:43:30.487Z"},"url":"https://mcp.waymark.network/r/3ceb9d47-511d-434d-9ece-5b4898a3fc54"}