Troubleshooting
Use this page when a DAG validates differently than expected, a node fails at run time, or a report looks stale.
Unbound Source Node
Section titled “Unbound Source Node”Symptom:
Unbound source node(s): patients. Add path: in the spec or pass --source <nodeId>=<file>.Fix one of these:
- id: patients kind: source path: data/patients.csvrime run pipeline.dag.yaml --source patients=data/patients-q2.csvRelative paths resolve from the directory that contains pipeline.dag.yaml.
Expression Parse Or Evaluation Error
Section titled “Expression Parse Or Evaluation Error”Core nodes use Rime’s expression language, not Python or SQL.
expr: "[age] >= 18 and [site] in ('north', 'south')"Check that column names are bracketed, string literals are quoted, and aggregate metrics use a bracketed alias:
metrics: - "[mean_age] = [age].mean()"See Expression language for supported operators and methods.
Python Dependency Missing
Section titled “Python Dependency Missing”Symptom:
ModuleNotFoundError: No module named 'pyarrow'Install dependencies into the interpreter Rime is using:
uv venv .venvsource .venv/bin/activateuv pip install pyarrow pandasrime run pipeline.dag.yaml --python-bin .venv/bin/pythonIf the editor or CLI still uses another Python, set RIME_PYTHON_BIN to the
absolute interpreter path.
R Dependency Missing
Section titled “R Dependency Missing”Symptom:
Missing required package: arrowInstall the runner dependencies:
install.packages(c("arrow", "jsonlite", "tibble"))Then point Rime at the intended Rscript:
rime run pipeline.dag.yaml --rscript-bin "$(which Rscript)"JavaScript Script Shape Error
Section titled “JavaScript Script Shape Error”JavaScript nodes must export a defineNode(...) bundle:
import { defineNode } from '@rimekit/runtime'
export default defineNode({ in: { cohort: 'table' }, out: { default: 'table' }, run: ({ cohort }) => cohort.rows,})Bare default functions are rejected in Rime 2.1 because named slots remove the guesswork around input ordering.
SQL Slot Name Mismatch
Section titled “SQL Slot Name Mismatch”The SQL table name comes from the YAML in: key, not the upstream node ID:
- id: enriched kind: sql in: orders: clean_orders source: queries/enriched.sqlSELECT * FROM ordersIf your query says SELECT * FROM clean_orders, DuckDB will not find that
table unless you named the slot clean_orders.
Empty Output Or Statistical Warning
Section titled “Empty Output Or Statistical Warning”Filters can produce an empty table. Statistical nodes can also run but emit warnings when assumptions are weak: small groups, low chi-square expected cell counts, skewed samples, Pearson/Spearman disagreement, or high residuals.
Do not treat the p-value alone as the result. Check the node warnings in the HTML report or editor inspector before publishing.
Cache Looks Stale
Section titled “Cache Looks Stale”Check the current outputs without rerunning:
rime verify pipeline.dag.yamlCommon fixes:
| Goal | Command |
|---|---|
| Recompute everything and write fresh cache | rime run pipeline.dag.yaml --no-cache-read |
| Recompute without reading or writing cache | rime run pipeline.dag.yaml --lean |
| Test in a separate outputs root | rime run pipeline.dag.yaml --isolated /tmp/rime-ci |
If rime verify reports a digest mismatch, regenerate the outputs before
building a report.