## Why Thread startup, running-thread resume, and rollback could outlive their request handlers, allowing connection draining and request serialization to finish too early. ## What changed - Await thread startup and listener completion for running-thread resume and rollback. - Release the thread-list permit before waiting for resume completion so the listener can finish rollback responses. - Release pending rollback waiters when clearing a listener, and discard queued requests when their connection closes. ## Testing Add coverage for releasing queued requests and rollback waiters, and pipeline resume during rollback to check that both responses complete. Update diagnostics expectations to allow startup to remain in flight after its response is queued. GitOrigin-RevId: 138156179afbc40de29965820db7fa9cd3669cc7
User verification cancellation (experimental)
Local UI clients can cancel a native user-verification RPC by sending
userVerification/cancel with {requestId} and the experimentalApi opt-in.
The result is an empty acknowledgment ({}). This API does not enable desktop
verification capability advertisement.
requestId is the original status, enroll, delete, or verify RPC's string or
integer ID on the same connection, not the server elicitation ID. Use fresh IDs
for each operation and a distinct ID for the cancel RPC. Unknown, finished,
unrelated, and other-connection requests are no-ops.
The acknowledgment confirms the cancellation signal without waiting for the OS
prompt to close. The original RPC completes independently, with
cancelled/interrupted when cancellation prevents completion. Cancellation
cannot roll back completed effects. It remains effective while a proof waits for
outbound queue capacity, but cannot retract a response already enqueued.
Canceling or resolving an elicitation does not itself stop a separate
userVerification/verify RPC. Clients must cancel that RPC separately and discard
late proofs after the approval is canceled or resolved. Only one native worker
runs per app-server; if an OS call remains active after cancellation or timeout,
subsequent local operations return failed/providerError until that worker exits.
Thread removal
thread/archive and thread/delete reject attempts to remove a live internal
worker with JSON-RPC error -32600. The worker's owner controls its shutdown.
For example, a Guardian reviewer remains available to its parent conversation
after a client tries to archive or delete it.
After the owner releases the worker, its saved conversation can be archived or deleted normally. Ordinary client-controlled threads keep their existing behavior.