- _compute_source_hash now accepts context_keys parameter - source_data is filtered to only include context-relevant fields (not row_id, primary keys) - If no context_columns configured, hash is based on source_text + dict_hash + config_hash - This ensures identical text in different rows produces a cache hit