Destroy a contact: fire onContactRemoved, unlink from its pair chain (O(1)), and return the slot to the free list. No body args, no pool scan, no cache bookkeeping — the pair chain is the only navigation.
global contact state
persistent pair state (holds the per-record chain heads)
contact to destroy
optional contact listener to notify of removal
Destroy a contact: fire onContactRemoved, unlink from its pair chain (O(1)), and return the slot to the free list. No body args, no pool scan, no cache bookkeeping — the pair chain is the only navigation.