The critical reliability decision in Fabric: cursors live in PostgreSQL, not in Iceberg. There are no debezium_offset_* or debezium_schema_history_* tables.
Checkpoint after commit
Each source checkpoints its cursor to Fabric's PostgreSQL after a writer commit. A connector only advances its source-side position to a cursor the writer reported as committed, so the warehouse is never left behind the position it acknowledged.
Exactly-once from the warehouse's view
On restart, the runner resumes from the last checkpointed cursor. From the warehouse's perspective that's exactly-once: duplicates are deduped at write time via the identifier fields / upsert semantics.
No tombstones to clean up
Because cursors live in PostgreSQL, a reset is just "clear the cursor and drop the tables." There's no topic cleanup, no version bumping, no schema-history tombstone tables.
The simple version