Skip to content

spike: qualify Temporal Rust orchestration boundary #25

Description

@Sam123ben

Outcome

Produce a non-production, reviewable qualification candidate for the official Temporal Rust SDK v0.8.0 against the OCR document/page workflow. This is evidence for design issue #9, not production selection or deployment.

Scope

  • Pin the official SDK source to the immutable v0.8.0 commit and record its preview status and supply-chain implications.
  • Derive the Temporal workflow ID deterministically from validated product, tenant and job IDs; no document text, filenames, URLs, storage locators, credentials, or result payloads enter workflow search attributes or logs.
  • Define a versioned, bounded workflow input and activity protocol using opaque identifiers only.
  • Map accepted and cancellation outbox events to idempotent workflow start/signal behavior; acknowledge the CNPG outbox only after Temporal accepts the command.
  • Keep all Postgres, GCS, OCR and provider I/O in activities; workflow code must remain replay-deterministic.
  • Configure explicit activity timeouts, heartbeats, bounded retries with jitter, non-retryable validation errors, and cancellation.
  • Exercise replay, duplicate start, cancellation, crash/retry, worker-version compatibility, page-level recovery, and a bounded 300-page history strategy.
  • Document the 24-hour upgrade-soak procedure and the stable Go runner fallback required by design review: Rust-native evidence-first OCR engine #9 if the preview SDK fails qualification.

Acceptance criteria

  • Red-first deterministic tests cover workflow ID/input bounds, duplicate delivery, cancellation, failed-page-only retry, and history rollover/continue-as-new decisions.
  • An integration harness runs against a disposable local Temporal development server when available; ordinary unit tests require no network.
  • No custom durable state machine is introduced; CNPG remains the lifecycle projection and transactional outbox authority.
  • Rust format, all-target/all-feature Clippy, locked build/tests, RustSec, secret scan, prohibited-reference scan, and existing PostgreSQL coverage pass.
  • No cloud, IAM, Kubernetes, secret, deployment, or production mutation is included.

Review gate

Do not merge, deploy, or select the Rust SDK for production until #9 records Temporal/platform, security, and SRE approval.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

area:runtimeRust service, workers, workflows, performance, and resiliencearea:securityAuthentication, tenancy, hostile input, secrets, and privacyenhancementNew feature or requestplatform:sharedReusable cross-product service or platform capability

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions