Git gave developers diff for code. OSOP gives teams diff for processes. The new osop diff command compares two execution logs — or two workflow definitions — and shows you exactly what changed, what got faster, what got more expensive, and what broke.
Every workflow execution in OSOP produces an .osoplog.yaml file — a structured record of what happened, how long each step took, what it cost, and whether it succeeded. These logs are designed to be diffed.
Two Runs, One Command
Suppose you have a deploy pipeline that ran twice — once on Monday, once on Tuesday. Here are the two execution logs:
osoplog_version: "1.0"
run_id: "abc-001"
workflow_id: "deploy-pipeline"
status: "COMPLETED"
started_at: "2026-04-01T10:00:00Z"
ended_at: "2026-04-01T10:04:32Z"
duration_ms: 272000
node_records:
- node_id: "build"
status: "COMPLETED"
duration_ms: 45000
outputs:
artifact_size_mb: 12.4
- node_id: "test"
status: "COMPLETED"
duration_ms: 120000
- node_id: "deploy"
status: "COMPLETED"
duration_ms: 95000
cost:
total_usd: 0.42Tuesday's run was faster across the board. But by how much? Instead of eyeballing two YAML files, run a single command:
osoplog_version: "1.0"
run_id: "abc-002"
workflow_id: "deploy-pipeline"
status: "COMPLETED"
started_at: "2026-04-02T10:00:00Z"
ended_at: "2026-04-02T10:03:15Z"
duration_ms: 195000
node_records:
- node_id: "build"
status: "COMPLETED"
duration_ms: 30000
outputs:
artifact_size_mb: 11.8
- node_id: "test"
status: "COMPLETED"
duration_ms: 90000
- node_id: "deploy"
status: "COMPLETED"
duration_ms: 65000
cost:
total_usd: 0.31The Diff Output
Running osop diff run-v1.osoplog.yaml run-v2.osoplog.yaml produces a structured comparison:
osop diff run-v1.osoplog.yaml run-v2.osoplog.yaml
DIFF deploy-pipeline abc-001 vs abc-002
──────────────────────────────────────────────
Node Duration Cost Status
──────────────────────────────────────────────
build 45s -> 30s - COMPLETED
(-33.3%)
test 120s -> 90s - COMPLETED
(-25.0%)
deploy 95s -> 65s - COMPLETED
(-31.6%)
──────────────────────────────────────────────
TOTAL 272s -> 195s $0.42 -> $0.31
(-28.3%) (-26.2%)Why This Matters
Software teams have spent decades building tools to track code changes. But the processes that run that code — CI/CD pipelines, AI agent workflows, data pipelines — have no equivalent. osop diff fills that gap:
- Performance regression detection — Spot when a step suddenly takes 3x longer before it becomes a production incident.
- Cost tracking — See exactly which node drove your bill up, not just the total.
- Debugging failures — Compare a passing run against a failing run to isolate the broken step.
- Optimization validation — After tuning a workflow, prove the improvement with hard numbers.
Diffing Definitions, Not Just Executions
osop diff also works on .osop definition files. This lets you see structural changes to the workflow itself — added nodes, removed edges, changed modes:
osop diff v1.osop v2.osop
DIFF deploy-pipeline v1.0.0 vs v1.1.0
──────────────────────────────────────────────
+ Node "cache" added (type: cli)
~ Edge "build -> test" changed mode:
sequential -> parallel
~ Node "deploy" description changed:
"Deploy to staging" -> "Deploy to production"
──────────────────────────────────────────────
3 changes (1 added, 0 removed, 2 modified)Combined with execution diffs, you get the full picture: what changed in the design, and how that change affected real-world performance.
The Git of Workflows
Git tracks what your code looks like at every point in time. OSOP tracks what your processes do at every point in time. Together, they close the observability loop:
- git diff tells you what code changed between two commits.
- osop diff (definitions) tells you what workflow structure changed between two versions.
- osop diff (logs) tells you what execution behavior changed between two runs.
Try it now: Install the OSOP CLI with pip install osop, run your workflow twice, and diff the results. Every process deserves version control.