provide-terminal
2026-03-01
Hijack control plane hardened with bot-to-worker rename, ghost state elimination, and security hardening across 16 commits
29 files · 3,476+ · 2,619-
Hijack Hardening
8 files changed
base.pyHijackableMixin: snapshot_req gating, stale lease read fixes, guard docsbridge.pyBridge: clear hijacked state on recv_loop exit, rate-limit cleanuphub.pyHub: ghost state elimination, lock-safety gaps closed, snapshot poll safetymodels.pyModels: _safe_int zero-value bug fix, REST release expiry checkroutes.pyRoutes: dead _set_hijack_owner removed, ResizeObserver leak fixedroutes_rest.pyREST routes: analyze ownership gate, payload size limitsroutes_ws.pyWS routes: spurious resume prevention, expiry-aware acquire checkshijack.jsFrontend: worker-online UI state, cooperative MI handling
- Ghost state eliminated; stale lease reads and silent drops corrected. Worker disconnect now propagated to all browsers with stale leases cleared and worker-online UI state added.
remediate
behavioral
3 files
hub.pyroutes_ws.pyhijack.js
- Lock-safety gaps in snapshot poll and send loop closed.
remediate
behavioral
2 files
hub.pybridge.py
- Dead
_set_hijack_ownerremoved, ResizeObserver leak fixed, regression tests added. qualify internal1 file
routes.py
- snapshot_req gating hardened; stale lease read fixed; dead code disposed; guard documentation added.
specify
internal
1 file
base.py
_safe_intzero-value bug corrected; REST release expiry check added; ownership gate analysis improved. remediate internal2 files
models.pyroutes_rest.py
- Spurious resume on contention prevented; expiry-aware acquire checks added; cooperative MI handling improved.
remediate
internal
1 file
routes_ws.py
- Swallowed exceptions logged; payload size limits added; integer cast guards added.
remediate
behavioral
2 files
bridge.pyroutes_rest.py
Rename
4 files changed
hub.pybot renamed to worker throughout hubmodels.pybot renamed to worker in modelsroutes_rest.pybot renamed to worker in REST routesroutes_ws.pybot renamed to worker in WS routes
Gateway and Bridge
4 files changed
gateway.pyWS-to-TCP codec fix, snapshot_req loop hardeningbridge.pySSH codec asymmetry fixed, _wait_for_snapshot stale cache cleared, wait_ms floor alignedssh.pySSH codec asymmetry fixwebsocket.pyWebSocket transport hardening
- WS-to-TCP codec fixed, lease_s bounds corrected, snapshot_req loop hardened.
remediate
internal
1 file
gateway.py
- SSH codec asymmetry fixed;
_wait_for_snapshotstale cache cleared. streamline internal2 files
bridge.pyssh.py
- Rate-limit cleanup applied; wait_ms floor fixed; bridge codec aligned.
deprecate
errata
1 file
bridge.py
Security
4 files changed
routes_ws.pyWS routes security hardeningbridge.pyBridge security hardeningmodels.pyModel security hardeningwebsocket.pyTransport layer security hardening
Tests
11 files changed
test_hijack_hub.pyHub tests split to stay within 500 LOCtest_hijack_hub_atomic.pyAtomic hub tests split outtest_hijack_routes.pyRoute tests splittest_hijack_routes_advanced.pyAdvanced route test casestest_hijack_routes_regression.pyRoute regression teststest_hijack_ws.pyWS hijack tests splittest_hijack_ws_browser.pyBrowser WS hijack teststest_hijack_ws_regression.pyWS hijack regression teststest_hijack_bridge_loops.pyBridge loop teststest_telnet_transport_branches.pyTelnet transport branch teststest_telnet_transport_negotiate.pyTelnet negotiation tests split out
State Recovery
1 file changed
bridge.pyHijacked state cleared on recv_loop exit to prevent permanent pause