Clear a resurrected instant cookie on unlock so a hard reload recovers (#95398)
Under the Instant Navigation Testing lock, an MPA page load's bootstrap
writes the captured cookie value asynchronously via `cookieStore`. When
a scope is released (the external actor deletes the cookie), that
pending write can land in the narrow gap between the delete and the
deleted-event handler that tears the lock down, resurrecting the cookie
after the scope has ended. If the unlock then falls back to a hard
reload, which happens when the freshly loaded shell has not hydrated the
router yet, the reload carries the resurrected cookie, the server serves
the shell again, and the page re-enters instant mode with no scope left
to release it, so the deferred content never streams in and the
navigation hangs.
Once the lock is released, `writeCookieValue`'s guard rejects any
further captured write, so the deleted-event handler now clears the
cookie right after `releaseLock` to neutralize a write that resurrected
it in the gap, and an added guard ignores the re-entrant change event
that the clear itself produces.
This removes a family of flaky timeouts in
`instant-navigation-testing-api.test.ts`, where a full-page (MPA)
navigation inside an `instant()` scope would intermittently never stream
in its deferred content after the scope exits. [Example failing
run](https://github.com/vercel/next.js/actions/runs/28572283366/job/84712848241?pr=95227)
---
<sub>Stack created with <a
href="https://github.com/github/gh-stack">GitHub Stacks CLI</a> • <a
href="https://gh.io/stacks-feedback">Give Feedback 💬</a></sub>