Release the caller's interest in pass (paired with _acquireResolvePass).
When this was the last attached operation, the pass is discarded from the
module-level registry — the next _acquireResolvePass call for this
combat starts a fresh pass from a fresh live-document snapshot. Also tears
down the reactive updateCombat resync subscription registered by
_acquireResolvePass — only on this same last-detacher branch, so
the listener's lifetime exactly matches the pass's own.
Release the caller's interest in
pass(paired with _acquireResolvePass). When this was the last attached operation, the pass is discarded from the module-level registry — the next _acquireResolvePass call for this combat starts a fresh pass from a fresh live-document snapshot. Also tears down the reactiveupdateCombatresync subscription registered by _acquireResolvePass — only on this same last-detacher branch, so the listener's lifetime exactly matches the pass's own.