Durably enqueue a PullInDeadline for target_data_hash, then emit its fact.
The row is committed before the event; duplicates coalesce on data_hash. Lifetime is
bounded by expires_at_ns alone (pass NEVER_EXPIRES for critical nudges).
Callers must commit the target row FIRST: a pull-in never waits for its target —
a miss is dropped (debug-logged), since a missing target is normally a completed
one-shot and retrying would spin forever on never-expiring nudges.