stamp() replaces commit_keyed() for snapshot creation. commit_keyed()
is deprecated with a lifecycle warning.
diff() method for keyed data frames: cell-level comparison using key
columns to align rows. Reports added, removed, and modified rows with
per-column change detail.
watch() / unwatch(): Mark keyed data frames as "watched" so dplyr verbs
auto-stamp before executing. Turns drift detection from a manual ceremony
into an automatic safety net.
check_drift() now returns cell-level reports. When both the snapshot and
current data are keyed with the same key columns, the drift report includes
a full keyed_diff with per-column change detail. Falls back to structural
comparison (row count, columns) when keys differ or are lost.
stamp() gains a .silent parameter for suppressing cli output during
auto-stamping.
list_snapshots() gains a size_mb column showing memory usage per snapshot.
compare_structure(), compare_keys(): structural comparison helpers.
commit_keyed() to stamp(). The old name is soft-deprecated.Snapshot cache now stores full data frames (not just hashes), enabling cell-level drift comparison without re-reading source data.
Cache reduced from 100 to 20 entries and adds a 100 MB soft memory cap. Eviction remains LRU-based but now considers both count and memory.
All dplyr methods (filter, mutate, select, arrange, rename,
summarise, slice, distinct, group_by, ungroup) now propagate
snapshot references and watched state through transformations.
unkey() to proceed. This prevents
silent data corruption.find_duplicates() to work with keyed data that has duplicateskey() / unkey(): Define and remove keys from data frameshas_key() / get_key_cols() / key_is_valid(): Query key statuslock_unique(): Verify column uniquenesslock_no_na(): Check for missing valueslock_complete(): Ensure expected values are presentlock_coverage(): Validate reference coveragelock_nrow(): Check row count boundsdiagnose_join(): Analyze join cardinality before executingadd_id() / remove_id(): Add/remove stable UUIDshas_id() / get_id(): Query ID statusextend_id(): Fill missing IDs after bindingmake_id(): Create composite IDs from columnsbind_id(): Combine data with ID handlingcheck_id() / check_id_disjoint(): Validate ID integritycompare_ids(): Detect lost/gained rowscommit_keyed(): Commit reference snapshotcheck_drift(): Detect changes from snapshotlist_snapshots() / clear_snapshot() / clear_all_snapshots(): Manage snapshotskey_status(): Quick status summarysummary.keyed_df(): Detailed summary methodcompare_structure(): Compare schema between data framescompare_keys(): Compare key values between datasetsfind_duplicates(): Locate duplicate key values