Bounded CDC Divergence Verification & Repair

Explain and Repair The Rows
Your CDC Pipeline Missed.

Stop re-snapshotting your entire production database when Kafka drops a batch. StreamRepair identifies silent data drift, pins expected row preimages, and executes operator-reviewed idempotent repairs with zero risk of overwriting newer data.

✓ PostgreSQL 14–17 to Replica/Warehouse
✓ Debezium & Kafka Engine Support
✓ Preimage Conflict Halting
✓ Zero Sensitive Raw Rows in Control Plane

Interactive Divergence & Repair Sandbox

Simulate a silent CDC divergence: run keyset comparison, inspect root causes, compile a verifiable plan, and execute a preimage-fenced repair.

streamrepair-engine // keyset-reconciliation
STANDBY
// Pipeline: pg_orders_to_snowflake (PostgreSQL -> Debezium -> S3/Snowflake)
// Target Table: public.orders (Chunk: keyset order_id 1000..2000)
// Ready. Click "Simulate Divergence & Repair" to execute pipeline check.

Discrepancy & Root Cause 0 detected

No discrepancies scanned yet.

Verifiable Plan Digest

Plan ID: None
Digest (SHA-256): Uncompiled
Preimage Match: Pending

Hard Engineering Problem Solved

Why Naive UPSERTs Corrupt Production

If your repair script runs while live CDC traffic catches up, an unconditional overwrite destroys newer valid mutations. StreamRepair implements mathematical Preimage Fencing.

✕

The Naive UPSERT Race

At 02:01 AM, operator detects target has status "PENDING" while source has "PAID". Operator runs a blindly generated SQL UPDATE. But at 02:02 AM, customer cancels order and CDC was in transit. The script overwrites "CANCELLED" with stale "PAID".

✓

StreamRepair Preimage Check

Every repair operation attaches the cryptographic hash of the expected target row. If target value changed in the millisecond before execution, StreamRepair fences the row and aborts the batch before mutation occurs.

0

Zero Production Load

No locking entire tables. No exhausting database IOPS or replication slots with multi-terabyte global re-snapshots. Keyset pagination operates in bounded batches of 500 records.

Pricing Hypotheses

Predictable Economics for Data Platforms

Customer-operated runners mean zero raw customer records are ever sent to our control plane.

Community Core
$0 forever open source

Self-hosted CLI for manual keyset divergence investigation.

  • ✓ Single pipeline diffing
  • ✓ Keyset pagination scanner
  • ✓ Manual dry-run plan generator
  • ✓ Local SQLite metadata ledger
View on GitHub
Recommended
DataOps Team
$149 / month

Scheduled divergence monitoring & operator-approved repair plans.

  • ✓ Up to 5 CDC pipelines
  • ✓ Preimage-fenced repair executor
  • ✓ Automated lag vs divergence filter
  • ✓ Slack & PagerDuty alerts
  • ✓ Signed evidence certificates
Start Team Trial
Scale / Enterprise
$499 / month

For high-throughput CDC pipelines across multiple regions.

  • ✓ Unlimited CDC pipelines
  • ✓ Custom warehouse connectors
  • ✓ Multi-region customer runners
  • ✓ SSO & audit retention SLA
Contact Sales

Frequently Asked Questions

How do you distinguish replication lag from permanent divergence?

StreamRepair uses a configurable maintenance grace window (default 30 minutes). When a discrepancy is detected, the pipeline marks it as 'pending_lag'. Only after the lag window has elapsed and the source row timestamp has committed past the target LSN does it get promoted to an actionable discrepancy.

What happens if a target record has a row that does not exist in the source?

StreamRepair strictly classifies unexpected rows as 'UNEXPECTED_IN_TARGET'. Because CDC sinks often receive writes from multiple microservices, StreamRepair quarantines these records as report-only and never deletes them automatically without manual operator signoff.

Does StreamRepair require superuser database permissions?

No. StreamRepair requires standard SELECT privileges on the source tables and SELECT/INSERT/UPDATE privileges on target tables. It does not manipulate WAL logs or require REPLICATION privileges.