Step vs framework boundaries
Canonical rules: Principles → Step ↔ framework.
This page is a short pointer for the Architecture section.
Step canon
Section titled “Step canon”Receive data → transform → return data. Transform logic only.
Framework owns: feed, StorageSession.write, flush, manifests, registry checkpoint, Prometheus, UI, Airflow, Ray transport.
Forbidden / allowed (summary)
Section titled “Forbidden / allowed (summary)”| Forbidden in step | Allowed in step |
|---|---|
| I/O, storage APIs, pyarrow/psycopg/boto3 | Pure functions, in-memory registry |
| Prometheus / Airflow / Ray / Streamlit widgets | ProcessResult, ProcessorBatch |
| Parsing DRTML / YAML | framework.algorithms (policy stays domain) |
| Homegrown embed/cluster math | Thin hooks.py + manifest_path_adjacent |
domain.* is passthrough only — framework must not interpret it.
Dashboards must include CPU and RAM panels. Full ownership table, params rules, and checklists: Step and framework.
CI guards
Section titled “CI guards”test_step_domain_boundaries.py— forbidden snippets in domain.test_layer_import_boundaries.py— reverse import edges.