ILay 35ef45de56 [SIMPL-30451] Pin dagster to 1.12.8, the control plane version
The dependency was previously an unbounded 'dagster', so the build took whatever was current and landed on 1.13.19 against a 1.12.8 control plane. A code location is a gRPC server the webserver and daemon call into, and under k8s_job_executor the step pods share a metadata database schema with them, so the version has to match.

Pinned exactly rather than to the 1.12 line: patch releases can carry schema migrations, and 'close enough' is not a safe position against a shared database. Revisit when the platform upgrades.

17 tests pass and definitions validate on the downgraded stack.

Changelog: fixed
2026-08-31 20:26:29 +02:00
2026-08-31 09:40:56 +00:00
2026-08-31 09:39:11 +00:00
2026-08-31 09:41:39 +00:00

Distributed Execution

Canonical location for documentation, example workflows and reference service implementations covering distributed execution patterns in the Simpl orchestration platform.

The service answers one question for every workflow: where does the compute actually run, and how does runtime information get back to the control plane?

Contents

Area Location Status
User guide documents/user-guide/distributed-execution-guide.md Complete
Readiness checklist documents/user-guide/readiness-checklist.md Complete
Tightly coupled reference src/distributed_execution/tightly_coupled/jobs.py Runnable
Loosely coupled reference src/distributed_execution/loosely_coupled/jobs.py Runnable (subprocess verified)
External payload payload/work.py Runnable
Example configuration yaml/ Complete

Project structure

distributed-execution/
├── src/
│   └── distributed_execution/
│       ├── repository.py           # Dagster definitions (entry point)
│       ├── ops.py                  # Shared ops used by both patterns
│       ├── preflight.py            # Readiness checks backing the checklist
│       ├── tightly_coupled/
│       │   └── jobs.py             # in_process / multiprocess / k8s_job_executor
│       └── loosely_coupled/
│           └── jobs.py             # PipesSubprocessClient / PipesK8sClient
├── payload/                        # External workload: dagster-pipes ONLY
│   ├── work.py
│   ├── requirements.txt
│   └── Dockerfile
├── documents/user-guide/           # AC1-AC4 documentation
├── yaml/                           # Working example configuration
├── tests/
├── Dockerfile
├── pyproject.toml
└── workspace.yaml

Getting started

Prerequisites: Python 3.12+ and uv.

uv sync --dev
uv run dagster dev -f src/distributed_execution/repository.py

The Dagster UI is then available at http://localhost:3000. Two jobs run end to end on a laptop with no cluster: tightly_coupled_in_process_job and loosely_coupled_subprocess_job. The Kubernetes variants of each require a cluster and are documented in the user guide.

tightly_coupled_local_job uses multiprocess_executor. It did not complete on a Windows development machine during authoring — see the Windows note in the user guide's section 5.5.

Running tests

uv run pytest

Building the images

Two images, deliberately: the code location and the external payload are versioned and scanned independently.

docker build -t distributed-execution:0.1.0 .
docker build -f payload/Dockerfile -t distributed-execution-payload:0.1.0 payload/

Both images build and have been smoke tested locally: the code location image loads its definitions, and the payload image contains dagster_pipes without dagster — check L11 in the readiness checklist.

Both must be tagged from the same commit. That shared tag is what keeps a code location and the payload it dispatches on the same version, and nothing at runtime checks the pairing — see the Outstanding work section for what the pipeline still has to learn.

Status

Both execution targets are implemented. The tightly coupled jobs and the loosely coupled subprocess transport are verified by the test suite. The loosely coupled Kubernetes transport is implemented but has not yet been run against a cluster; see the guide's Outstanding work section.

Licence

European Union Public Licence v1.2 — see LICENSE.

Description
Execution targets and integration patterns for Dagster workflows on the Simpl orchestration platform (SIMPL-30451).
Readme 1 MiB
Languages
Python 92.9%
Dockerfile 7%
Shell 0.1%