Skip to content

Troubleshooting

Use this page when a DAG validates differently than expected, a node fails at run time, or a report looks stale.

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.csv
Terminal window
rime run pipeline.dag.yaml --source patients=data/patients-q2.csv

Relative paths resolve from the directory that contains pipeline.dag.yaml.

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.

Symptom:

ModuleNotFoundError: No module named 'pyarrow'

Install dependencies into the interpreter Rime is using:

Terminal window
uv venv .venv
source .venv/bin/activate
uv pip install pyarrow pandas
rime run pipeline.dag.yaml --python-bin .venv/bin/python

If the editor or CLI still uses another Python, set RIME_PYTHON_BIN to the absolute interpreter path.

Symptom:

Missing required package: arrow

Install the runner dependencies:

install.packages(c("arrow", "jsonlite", "tibble"))

Then point Rime at the intended Rscript:

Terminal window
rime run pipeline.dag.yaml --rscript-bin "$(which Rscript)"

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.

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.sql
SELECT * FROM orders

If your query says SELECT * FROM clean_orders, DuckDB will not find that table unless you named the slot clean_orders.

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.

Check the current outputs without rerunning:

Terminal window
rime verify pipeline.dag.yaml

Common fixes:

GoalCommand
Recompute everything and write fresh cacherime run pipeline.dag.yaml --no-cache-read
Recompute without reading or writing cacherime run pipeline.dag.yaml --lean
Test in a separate outputs rootrime run pipeline.dag.yaml --isolated /tmp/rime-ci

If rime verify reports a digest mismatch, regenerate the outputs before building a report.