Architecture overview
Deployment units
Section titled “Deployment units”The framework, domain step packages, platform stack, and documentation are separate deployment concerns:
framework package # DRTML, storage, processing, algorithms, telemetrystep packages # DRTML contracts + pure domain processorsplatform stack # Airflow, MinIO, PostgreSQL, Qdrant, Prometheus, Grafanawebsite/docs # static documentation deploymentThey may share a development checkout, but no public API depends on that layout. Step discovery uses configured roots and Python import paths.
Execution flow
Section titled “Execution flow”Airflow / Streamlit / local │ ▼ integration/ (RunContext + params overlay) │ ▼ processing/dispatch.py │ pattern / mode / entry registry ├──────────────┬──────────────┬──────────────┐ ▼ ▼ ▼ ▼ partition_loop mapping reduce_merge embed_train │ │ │ │ └──────────────┴──────┬───────┴──────────────┘ ▼ storage/ (session + feed) │ ┌───────────────┼───────────────┐ ▼ ▼ ▼ parquet postgres qdrant local/S3 (db/) (db/) │ ▼ telemetry/ (emit only)Principles
Section titled “Principles”- Step = transform. No file/database/metrics/orchestrator I/O in domain code.
- DRTML = contract. Params, datasets, metrics, UI and orchestration are declarative.
- One dataset — one backend. Dual-write is unsupported.
- Registries instead of if-forests. Backends, modes, patterns and metric methods are extensible catalogs.
- Neutral contracts. Shared DTOs prevent reverse layer dependencies.
- Algorithms = computation. Domain owns policy such as candidate K/probe loops.
Package ownership
Section titled “Package ownership”drtml/: parse, validate, compile manifests.contracts/: layer-neutral DTOs.runtime/: RunContext and dynamic imports.storage/: sessions, feeds, parquet and backend adapters.db/: PostgreSQL/Qdrant transports.processing/: execution orchestration.mapping/: mapping build/read/remap.algorithms/: embedding, clustering and dataset metrics.telemetry/: Prometheus emit and Grafana codegen.integration/: UI, Airflow, Ray connection and local runner.