releaseHold method
void
releaseHold()
Frees the CEP's hold while the experience keeps running.
For a non-blocking experience — a PIP, a floater — the CEP's slot must be handed back the moment the experience stops blocking, not when it finally ends, or every later campaign queues behind something the user is happily ignoring in a corner. Clicks stay legal until settle.
Idempotent. A modal experience never calls this: settle releases the hold on its behalf, so there is exactly one code path for plugins either way.
Implementation
void releaseHold() {
assert(
_displayedEmitted || isSettled,
'releaseHold() before displayed for presentation $id — G8 orders '
'displayed <= holdReleased <= outcome, and a presentation that never '
'displayed releases its hold through settle() instead',
);
_releaseHold();
}