Problem
When a pipeline’s output or duration changes, operators need to distinguish:
code changed
parameters changed
source artifact changed
incremental watermark changed
runtime/dependency changed
cache behavior changed
data-quality results changed
the same code simply ran slower
Duckle records much of this information, but a direct run comparison is still useful.
Proposed solution
Add:
duckle runs diff <run_a> <run_b> --json
and an equivalent web/API view.
Compare:
Identity
pipeline/release hash
Git commit
runtime/lock versions
environment
trigger/actor
partition/backfill
normalized non-secret parameters
Inputs/state
source/artifact URIs and hashes
incremental state before/after
parent/item/chunk counts
upstream release/run references
Execution
node SQL/config hashes
executed/reused/cached nodes
status and retries
duration
rows/bytes
memory/spill
HTTP retries/rate limits
reject/skip counts
Quality/output
contracts/checks/anomalies
published assets/tables
publish generation/release
output schema
row-count/aggregate summaries where already available
Privacy
Do not include:
secret parameters
authorization headers
raw row values by default
signed URL secrets
A full row-level data diff is a separate explicit operation and should not be the default.
Explanation
Highlight likely causes, for example:
parse stage slower because cache miss
row count changed after source artifact hash changed
output schema changed because release changed
same release/inputs but HTTP retries increased
These can be deterministic heuristics rather than AI-generated explanations.
Acceptance criteria
- the diff shows code/runtime/input differences separately;
- node performance and quality changes are comparable;
- output is available as JSON and UI;
- secret values remain redacted;
- both runs remain immutable.
Problem
When a pipeline’s output or duration changes, operators need to distinguish:
Duckle records much of this information, but a direct run comparison is still useful.
Proposed solution
Add:
and an equivalent web/API view.
Compare:
Identity
Inputs/state
Execution
Quality/output
Privacy
Do not include:
A full row-level data diff is a separate explicit operation and should not be the default.
Explanation
Highlight likely causes, for example:
These can be deterministic heuristics rather than AI-generated explanations.
Acceptance criteria