Every guarantee below is either enforced by a test or documented as a limitation.
Nothing is claimed twice.
Records and checkpoint commit together
With effectively_once, a batch's records and its checkpoint commit together
— in one Kafka transaction, or by a Snowflake channel's offset token. Any other sink is
rejected at startup for that contract rather than silently degraded.
Delivery contracts →
Failures classified on two axes
A record the broker will reject forever is quarantined. A revoked ACL halts the
pipeline instead of draining your change stream into the dead-letter queue one event
at a time. Conflating those is how a DLQ becomes the data loss it exists to prevent.
Dead-letter queue →
Non-blocking backfill
DBLog watermark incremental snapshots interleave with the live stream and resume
mid-chunk after a restart. No held replication slot, no re-read from row zero.
Snapshots →
Sandboxed WASM transforms
Run your own logic in-process with epoch interruption, fuel metering and no host
imports. Write it in Rust, AssemblyScript, or anything that targets WASM. A masking
rule that never matches is a metric, not a silent no-op.
Writing transforms →
Partial-image safety
PostgreSQL unchanged-TOAST holes are tracked per image and survive transforms, sinks
and the Iceberg schema. Absent is never quietly turned into NULL.
Partial images →
Observability that resolves
Prometheus and OTLP, and a health verdict with a stable stall cause that tells a quiet
database from a dead socket. Shipped alert rules are tested against real metric names.
Health verdict →
Security by default
TLS is mandatory on any non-loopback bind. Kafka SASL including OAUTHBEARER and AWS
MSK IAM, mTLS with hot certificate reload, Ed25519-signed audit trail, and source
passwords that the config loader refuses to accept as literals.
Security →
Pluggable state
Checkpoint to the local filesystem, a Kafka topic, Redis or PostgreSQL. Network-shared
backends are fenced — a Kafka topic by producer epoch, Redis and Postgres by a
heartbeat lease — so two writers cannot move the durable position backwards.
State backends →