Staleness
Staleness decides whether a model or a destination has work to do. It is computed when an attempt is about to run. Nothing stores a stale flag. A source is not gated this way: it runs whenever the run or its schedule reaches it, and the engine decides afterwards whether the result is new.
Read the verdict
Section titled “Read the verdict”puppi assets| Reason | Meaning |
|---|---|
never_materialized |
The asset has no latest materialization. |
input_newer |
An upstream latest is newer than the one this asset consumed. |
input_unconsumed |
An upstream has a latest, and this asset consumed none of it. |
definition_changed |
The asset’s code_version on the latest materialization differs from the active deployment. |
A model or a destination whose verdict is current is skipped. The attempt stamps verified_at on the current latest and writes no new materialization. puppi run --force runs every planned asset anyway.
See Materializations for how a source decides that nothing new arrived.
After a code change
Section titled “After a code change”Deploying new code writes no materialization by itself. The asset becomes stale because its code_version changed, and the next run rebuilds it. A one-line change in one asset’s run changes that asset’s version. Assets whose source did not change stay current.
A rollback moves latest to an older materialization. That older row is not newer, so staleness does not carry the rollback downstream. Rollback walks those assets and repoints or rebuilds them.
Schedule an asset
Section titled “Schedule an asset”schedule: { every: "15m" }schedule: { cron: "0 * * * *", timezone: "UTC" }every is a clock-aligned cadence: 15m, 2h, or 1d. cron is five fields: minute, hour, day of month, month, day of week. A bad expression fails at puppi build. The engine checks timezone when it accepts the deployment.
The engine fires a due asset once a minute. A scheduler that was down fires once when it returns. It does not replay the missed window.
Pause schedules
Section titled “Pause schedules”puppi env pausepuppi env resumePause stops schedules in that environment. puppi run still starts a manual run.