paradime-state explain --node <model> shows the reason behind any node’s decision: see Explain a run in the Code IDE.
No Paradime State summary at the end of the run
The run didn’t go through Paradime State, so it ran as plain dbt™.SolutionCheck each of these:
- The environment runs dbt™
2.0-latest. The Code IDE always uses the workspace’s version. PARADIME_STATE_ENABLEDis set in a box the run reads: Default or the run’s Bolt environment for Bolt schedules, and Default or your own Code IDE box for the Code IDE.PARADIME_STATE_DISABLEDisn’t set in any of them.- Bolt has parsed your schedules since you set the variable. In Bolt, select Parse schedules.
- In the Code IDE, you opened a new terminal after setting the variable.
- The command is
dbt runordbt build. Other commands always run as plain dbt™. - The run isn’t a DinoAI background agent session. Those always run plain dbt™.
Every node builds on every run
The summary appears, but nothing is ever skipped.Solution
- It’s the first run in this schema. The first run has nothing to compare with. The second run is the first that can skip.
- A notice says
no warehouse probe for adapter. Your warehouse isn’t supported, so runs build as plain dbt™. - A notice says
proceeding without state optimization. Paradime State couldn’t use its service during this run. The next run tries again. In the Code IDE, see The Code IDE stopped skipping after a day. - Something upstream builds every run. Everything downstream of a node that builds also builds. Find the node that builds every run (often an incremental model) and see the next section.
A model rebuilds on every run
Solution
- It’s an incremental model, a Python model, or uses a custom materialization. These always build. This is expected.
- It uses
select *directly on aref()orsource(). List the columns, or select from a CTE. - Its rendered SQL changes on every run, because of a
var(), anenv_var(),run_started_at, or a macro whose output varies (for example, one that lists relations in a different order each time). Turn oncompare_unrendered_code. - It has
evaluate_volatile_sql: trueand usescurrent_timestamp,now(), orrandom(). Turn the setting off if the model doesn’t need the runtime value. Seeevaluate_volatile_sql. - One of its tests failed in the last run. A model whose test failed rebuilds on the next run. Fix the failing test.
- Paradime State can’t parse its SQL. SQL that can’t be parsed, such as some warehouse-specific syntax, always builds.
paradime-state explain --node <model>shows when this is the reason.
A model stays stale after new data lands
Solution
- The new data is within the model’s
lag_tolerance. The default is 45 minutes. A model rebuilds once its upstream data has changed more thanlag_toleranceafter the version it was last built from, so a single small change can wait until the upstream changes again. For models that must pick up every change, setlag_tolerance: 0s. See Howlag_toleranceworks. - The model has
require_fresh_data_from: all, and not every upstream has new data yet. - The source’s metadata doesn’t change when data lands. This is the case for views, external tables, and every source on DuckDB and MotherDuck. Declare a
loaded_at_field. - The model filters on
current_date. Withevaluate_volatile_sqloff, it can be reused on a later day. Turn onevaluate_volatile_sql.
The Code IDE stopped skipping after a day
Your Code IDE’s access to Paradime State lasts 24 hours from when your IDE profile was last written. After that, runs build normally, with a notice that saysrejected this run as UNAUTHENTICATED.
SolutionRewrite your IDE profile by changing a Code IDE variable. In Settings > Environment Variables, open
PARADIME_STATE_ENABLED, change your Code IDE value (for example from 1 to true, which also turns it on), and save. Then open a new terminal.Saving without changing the value doesn’t rewrite the profile. The notice also suggests setting a workspace variable, which you don’t need to do.Schedules that select with state: methods build nothing
Selectors that compare against a previous run’s manifest, such as state:modified+ and state:new, need that manifest when dbt™ selects nodes. With Paradime State on, selection runs without it, so these selectors don’t select what you expect, and the run can finish without building anything.
SolutionKeep Paradime State off for schedules that use
state: selectors, typically Turbo CI and continuous deployment. Override PARADIME_STATE_ENABLED to 0 on those schedules. See Turn it on or off for one schedule.dbt build --full-refresh fails
The run fails with unexpected argument '--full-refresh' found when the build includes snapshots or tests.
SolutionUse
dbt run --full-refresh for incremental models, or turn Paradime State off for that run with PARADIME_STATE_DISABLED. See Force a rebuild.A hook or grants change has no effect
Pre-hooks and post-hooks don’t run for a node that’s skipped, and a change togrants or a hook on its own doesn’t count as a change.
SolutionForce a rebuild of the node to apply the change.
Two runs overlap
Paradime State doesn’t lock runs. When two runs build the same nodes at the same time, the later one may build more than it needs to, and a notice saysanother run had already advanced.
SolutionSchedule runs so that they don’t build the same nodes at the same time, as you would without Paradime State.