Skip to content

v2.4.0 — notebook-bridge stale-state fix (#29)

Choose a tag to compare

@caidish caidish released this 29 Jun 13:53
· 8 commits to main since this release

Fixes the JupyterLab notebook-frontend bridge degrading mid-session (#29): notebook_add_cell / notebook_execute_active_cell time out and serve stale cells while the kernel stays alive.

Fixes

  • #30 listener-leak: disconnect the previous active cell's sharedModel.changed listener before tracking the new one — eliminates the growing concurrent-snapshot storm that wedges the single JupyterLab message chain.
  • #32 notebook_execute_code: bridge-independent kernel execution via a loopback jupyter_client ZMQ execute_request. The only route a %gui qt kernel services — recovers measurements even when the frontend bridge is degraded.
  • #33 frontend hardening: serialized comm handlers (per-comm promise chain, non-blocking onMsg), NotebookActions.run fired without awaiting, 15s self-healing comm keepalive.
  • e2e bridge-resilience tests (test_13_bridge_resilience).

Validation: subset silver bench (6 historically-wedging tasks ×3 seeds) on a sidecar built from this code = 18/18 smoke_pass, 0/18 wedge-signature (vs 7 flagged on the same tasks unfixed); the prior exemplar QDB_SUZ84YW9X went 0/4 (wedged) → 3/4 (clean). e2e 8/8; local repro 30/30 cycles clean.