Files
Max dml 7e5abd504f feat: add DBOS skills for TypeScript, Python, and Go (#94)
Add three DBOS SDK skills with reference documentation for building
reliable, fault-tolerant applications with durable workflows.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 23:26:51 +01:00

1.3 KiB

title, impact, impactDescription, tags
title impact impactDescription tags
Keep Workflows Deterministic CRITICAL Non-deterministic workflows cannot recover correctly workflow, determinism, recovery, reliability

Keep Workflows Deterministic

Workflow functions must be deterministic: given the same inputs and step return values, they must invoke the same steps in the same order. Non-deterministic operations must be moved to steps.

Incorrect (non-deterministic workflow):

import random

@DBOS.workflow()
def example_workflow():
    # Random number in workflow breaks recovery!
    choice = random.randint(0, 1)
    if choice == 0:
        step_one()
    else:
        step_two()

Correct (non-determinism in step):

import random

@DBOS.step()
def generate_choice():
    return random.randint(0, 1)

@DBOS.workflow()
def example_workflow():
    # Random number generated in step - result is saved
    choice = generate_choice()
    if choice == 0:
        step_one()
    else:
        step_two()

Non-deterministic operations that must be in steps:

  • Random number generation
  • Getting current time
  • Accessing external APIs
  • Reading files
  • Database queries (use transactions or steps)

Reference: Workflow Determinism