Separate backend identity, session frontend bindings, and publication. Publish missing Inspector paths before returning usable node IDs, validate CDP frontend inputs, and retain explicit internal automation bindings.
Preserve expanded and associated subtrees during refresh and mutation resync, including shallow template fragments. Cover cross-command behavior and message ordering with a raw CDP client mirror, Chromium comparisons, and real chromedp queries.
A delayed addBinding adapter could repersist and reapply bindings after a
later Runtime.disable had cleared them. Commit persistent add/remove
mutations in the renderer turn and project their frozen state with the
NativeTerminal, alongside enable/disable. Adapter completion no longer
writes a stale binding snapshot back to either owner.
Unregister V8 bindings during disable as well as clearing restore metadata,
so re-enabling cannot reactivate a removed binding. Include the retained
binding output and metadata in transport memory accounting.
Cover delayed addBinding, unpolled and reversed binding completions, and
binding calls after re-enabling. Document and test the existing committed
SessionSink disable success policy after owner retirement, including
ordered delivery and no duplicate terminal on late adapter completion.
Append ready command records directly to the Page journal and publish them
at the common owner-turn settlement boundary. Replace continuation-owned
record batches with exact cursors for internal completion dependencies.
Publish loaded-page frontend Runtime.enable/disable, frozen Inspector output,
and session updates through NativeTerminal. Apply subscriptions and replay
at ordered ingress so delayed adapters cannot reverse newer enable/disable
state. Complete disable binding updates in the originating renderer turn.
Retain exact predecessors for internal/collector completion success and
projection errors, and charge replay/V8 state to the transport memory budget.
Cover unpolled and reversed completions, cancellation after publication,
owner retirement, unresolved Promise output and concurrent ready replies,
and navigation handoff with controlled regression tests.
Share terminal authority with Inspector and publish ready native replies
after their renderer facts, independently of adapter polling. Keep typed
internal completions separate and settle caches against the exact residence.
Define exhaustive backend entry requirements for nested Main dispatch and
release Main and IO admission at backend entry. Bind native continuations
and preserve their owner lifecycle before terminal projection.
Migrate Page and DOMSnapshot through the generic operation boundary,
including live tree URLs, initial DocumentLoader identity, document capture
and isolated worlds. Cover cancellation, retirement and pause ordering,
and release held popup fixture routes before awaiting initialization.
Move renderer DevTools command metadata, route-local ingress, and pause coordination out of script_vm. Share the per-session lane algorithm without merging Main and IO state, centralize target lifecycle wiring, and keep first-dispatch permits explicit at the owner boundary.