WVMQWENWS_6D91C42F source=WEBVM time=2026-11-11T09:07:43+00:00 stage=PI_HEARTBEAT [2026-11-11T08:57:59+00:00] PI_WRAPPER_STARTED tag=WVMQWENWS_6D91C42F script=pi.py [2026-11-11T08:58:11+00:00] PI_IMPL_FETCHED source=main characters=60694 [2026-11-11T08:58:12+00:00] booting. [2026-11-11T08:58:13+00:00] booting.. [2026-11-11T08:58:13+00:00] GPU_DIAGNOSTIC_DEFERRED reason=prioritize_RX_TX_and_live_TCP_proof [2026-11-11T08:58:14+00:00] IO_LOOP_SOURCE_FETCHED file=controller.py attempt=1/10 characters=59370 [2026-11-11T08:58:16+00:00] IO_LOOP_SOURCE_FETCHED file=agent.py attempt=1/10 characters=21989 [2026-11-11T08:58:17+00:00] TCP_LINK_MARKER_HANDLER_PATCHED source=tcp_socks5.py mode=runtime-injection [2026-11-11T08:58:17+00:00] IO_LOOP_SOURCE_FETCHED file=tcp_socks5.py attempt=1/10 characters=21980 [2026-11-11T08:58:18+00:00] IO_LOOP_SOURCE_FETCHED file=remote_probe.py attempt=1/10 characters=2665 [2026-11-11T08:58:19+00:00] IO_LOOP_SOURCE_FETCHED file=terminal_service.py attempt=1/10 characters=6373 [2026-11-11T08:58:19+00:00] IO_LOOP_SOURCE_FETCHED file=remote_shell.py attempt=1/10 characters=3115 [2026-11-11T08:58:19+00:00] IO_LOOP_CONTROLLER_START dataset_id=simonday/webvm-io-loop-rx kernel_id=simonday/webvm-io-loop-proof [2026-11-11T08:58:22+00:00] RX_TX_INITIAL_PROOF_BACKGROUND_STARTED command_channel=available [2026-11-11T08:58:22+00:00] RX_TX_TERMINAL_LISTENING host=127.0.0.1 port=2323 transport=Kaggle-RX-TX [2026-11-11T08:58:22+00:00] WEBVM_TERMINAL_SERVER_DIAGNOSTIC_FAIL error=OSError: [Errno 22] Invalid argument [2026-11-11T08:58:22+00:00] WEBVM_TERMINAL_SELFTEST_SKIPPED reason=loopback_socket_test_not_required [2026-11-11T08:58:22+00:00] RX_TX_TOKENIZED_PROXY_MARKER_TEST_SCHEDULED_AFTER_ROUTE_DISCOVERY no_tailscale=true [2026-11-11T08:58:22+00:00] RX_TX_REMOTE_COMMAND_POLL_STARTED interval_seconds=30 current_sha256=a38733060dea6fd70ed2d54674f3ad5336a24c8b403d617b5678f267e3125e6c [2026-11-11T08:58:24+00:00] IO_LOOP_CONTROLLER {"dataset_id": "simonday/webvm-io-loop-rx", "event": "RUN_BEGIN", "kernel_id": "simonday/webvm-io-loop-proof", "poll_seconds": 10, "time": "2026-11-11T08:58:24.349+00:00", "timeout_seconds": 900} [2026-11-11T08:58:24+00:00] IO_LOOP_CONTROLLER {"encoded_bytes": 3556, "event": "PYTHON_PAYLOAD_ENCODED", "path": "/home/user/kaggle-io-loop/remote_probe.py", "sha256": "a38733060dea6fd70ed2d54674f3ad5336a24c8b403d617b5678f267e3125e6c", "source_bytes": 2665, "time": "2026-11-11T08:58:24.480+00:00"} [2026-11-11T08:58:25+00:00] IO_LOOP_CONTROLLER {"checksum": "e9fab8180e18a6083f66b661ca06773ac74e9267dc35b38f83431657eedef64d", "event": "POC_FILES_WRITTEN", "notebook_bytes": 34776, "payload": "IyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwoiIiJGaW5kIHRoZSBLYWdnbGUgcHJveHkgdG9rZW4gdXNpbmcgdGhlIG5vdGVib29rJ3MgZnVsbCBwcm9jZXNzIGxpc3RpbmcuCgpUaGUgbGl2ZSBwcm9jZXNzIHRhYmxlIGlzIHNlYXJjaGVkIHdpdGggYHBzIGF1eHd3YCwgYXMgcmVxdWVzdGVkLiBUaGUKbWF0Y2hpbmcgdG9rZW4gaXMgd3JpdHRlbiBvbmx5IHRvIC9rYWdnbGUvd29ya2luZy93ZWJ2bV9wcm94eV9yb3V0ZS5qc29uCmZvciByZXR1cm4gdGhyb3VnaCB0aGUgZXhpc3RpbmcgUlgvVFggY2hhbm5lbC4gSXQgaXMgbmV2ZXIgcHJpbnRlZC4KIiIiCmltcG9ydCBqc29uCmltcG9ydCByZQppbXBvcnQgc3VicHJvY2Vzcwpmcm9tIHBhdGhsaWIgaW1wb3J0IFBhdGgKCkhPU1QgPSAia2tiLXByb2R1Y3Rpb24uanVweXRlci1wcm94eS5rYWdnbGUubmV0IgpSRVNVTFQgPSBQYXRoKCIva2FnZ2xlL3dvcmtpbmcvd2Vidm1fcHJveHlfcm91dGUuanNvbiIpClJPVVRFX1JFID0gcmUuY29tcGlsZShyIi9rLyhbMC05XSspLyhbXi9ccydcIj9dKykvcHJveHkoPzovfCQpIikKCnRyeToKICAgIHBzID0gc3VicHJvY2Vzcy5ydW4oCiAgICAgICAgWyJwcyIsICItYXV4Il0sCiAgICAgICAgY2hlY2s9VHJ1ZSwKICAgICAgICBjYXB0dXJlX291dHB1dD1UcnVlLAogICAgICAgIHRleHQ9VHJ1ZSwKICAgICAgICB0aW1lb3V0PTEwLAogICAgKQogICAgcHJvY2Vzc19saW5lcyA9IHBzLnN0ZG91dC5zcGxpdGxpbmVzKCkKICAgIHByaW50KCJXRUJWTV9GVUxMX1BTX0FVWF9CRUdJTiIsIGZsdXNoPVRydWUpCiAgICBwcmludChwcy5zdGRvdXQsIGVuZD0iIiBpZiBwcy5zdGRvdXQuZW5kc3dpdGgoIlxuIikgZWxzZSAiXG4iLCBmbHVzaD1UcnVlKQogICAgcHJpbnQoIldFQlZNX0ZVTExfUFNfQVVYX0VORCIsIGZsdXNoPVRydWUpCmV4Y2VwdCAoT1NFcnJvciwgc3VicHJvY2Vzcy5TdWJwcm9jZXNzRXJyb3IpIGFzIGV4YzoKICAgIHRyeToKICAgICAgICBSRVNVTFQudW5saW5rKCkKICAgIGV4Y2VwdCBGaWxlTm90Rm91bmRFcnJvcjoKICAgICAgICBwYXNzCiAgICBwcmludCgKICAgICAgICAiV0VCVk1fUFJPWFlfUk9VVEVfRElTQ09WRVJZIGZvdW5kPWZhbHNlIG1ldGhvZD1wc19hdXggIgogICAgICAgICJlcnJvcl90eXBlPXt9Ii5mb3JtYXQodHlwZShleGMpLl9fbmFtZV9fKSwKICAgICAgICBmbHVzaD1UcnVlLAogICAgKQogICAgcmFpc2UgU3lzdGVtRXhpdCgwKQoKanVweXRlcl9saW5lcyA9IFsKICAgIGxpbmUgZm9yIGxpbmUgaW4gcHJvY2Vzc19saW5lcwogICAgaWYgImp1cHl0ZXIiIGluIGxpbmUubG93ZXIoKSBvciAibm90ZWJvb2siIGluIGxpbmUubG93ZXIoKQpdCnNlYXJjaF9ncm91cHMgPSAoanVweXRlcl9saW5lcywgcHJvY2Vzc19saW5lcykKZm91bmQgPSBOb25lCnNvdXJjZV9ncm91cCA9IE5vbmUKCiMgU2VhcmNoIHRoZSBlbnRpcmUgcHMgY29tbWFuZCBsaW5lLCBwcmlvcml0aXNpbmcgSnVweXRlci9Ob3RlYm9vayBwcm9jZXNzZXMuCmZvciBncm91cF9uYW1lLCBsaW5lcyBpbiAoKCJqdXB5dGVyX3Byb2Nlc3MiLCBqdXB5dGVyX2xpbmVzKSwgKCJhbGxfcHJvY2Vzc2VzIiwgcHJvY2Vzc19saW5lcykpOgogICAgZm9yIGxpbmUgaW4gbGluZXM6CiAgICAgICAgbWF0Y2ggPSBST1VURV9SRS5zZWFyY2gobGluZSkKICAgICAgICBpZiBtYXRjaDoKICAgICAgICAgICAgZm91bmQgPSB7CiAgICAgICAgICAgICAgICAiaG9zdCI6IEhPU1QsCiAgICAgICAgICAgICAgICAicGF0aCI6ICIvay97fS97fS9wcm94eSIuZm9ybWF0KG1hdGNoLmdyb3VwKDEpLCBtYXRjaC5ncm91cCgyKSksCiAgICAgICAgICAgICAgICAia2VybmVsX2lkIjogbWF0Y2guZ3JvdXAoMSksCiAgICAgICAgICAgICAgICAidG9rZW4iOiBtYXRjaC5ncm91cCgyKSwKICAgICAgICAgICAgfQogICAgICAgICAgICBzb3VyY2VfZ3JvdXAgPSBncm91cF9uYW1lCiAgICAgICAgICAgIGJyZWFrCiAgICBpZiBmb3VuZDoKICAgICAgICBicmVhawoKaWYgbm90IGZvdW5kOgogICAgdHJ5OgogICAgICAgIFJFU1VMVC51bmxpbmsoKQogICAgZXhjZXB0IEZpbGVOb3RGb3VuZEVycm9yOgogICAgICAgIHBhc3MKICAgIHByaW50KAogICAgICAgICJXRUJWTV9QUk9YWV9ST1VURV9ESVNDT1ZFUlkgZm91bmQ9ZmFsc2UgbWV0aG9kPXBzX2F1eHd3ICIKICAgICAgICAicHJvY2Vzc19jb3VudD17fSBqdXB5dGVyX3Byb2Nlc3NfY291bnQ9e30iLmZvcm1hdCgKICAgICAgICAgICAgbWF4KDAsIGxlbihwcm9jZXNzX2xpbmVzKSAtIDEpLCBsZW4oanVweXRlcl9saW5lcykpLAogICAgICAgIGZsdXNoPVRydWUsCiAgICApCmVsc2U6CiAgICBSRVNVTFQucGFyZW50Lm1rZGlyKHBhcmVudHM9VHJ1ZSwgZXhpc3Rfb2s9VHJ1ZSkKICAgIFJFU1VMVC53cml0ZV90ZXh0KGpzb24uZHVtcHMoZm91bmQsIHNvcnRfa2V5cz1UcnVlKSArICJcbiIsIGVuY29kaW5nPSJ1dGYtOCIpCiAgICBwcmludCgKICAgICAgICAiV0VCVk1fUFJPWFlfUk9VVEVfRElTQ09WRVJZIGZvdW5kPXRydWUgbWV0aG9kPXBzX2F1eHd3ICIKICAgICAgICAic291cmNlPXt9IGtlcm5lbF9pZD17fSB0b2tlbl9wcmVzZW50PXRydWUiLmZvcm1hdCgKICAgICAgICAgICAgc291cmNlX2dyb3VwLCBmb3VuZFsia2VybmVsX2lkIl0pLAogICAgICAgIGZsdXNoPVRydWUsCiAgICApCg==", "request_id": "io-loop-proof-20261111T085824471568Z", "rx_bytes": 3797, "sequence": 1, "time": "2026-11-11T08:58:24.968+00:00"} [2026-11-11T08:58:25+00:00] IO_LOOP_CONTROLLER {"attempt": "configured_environment", "command": ["kaggle", "datasets", "version", "-p", "/home/user/kaggle-io-loop-run/dataset", "-m", "WebVM RX io-loop-proof-20261111T085824471568Z", "-r", "skip"], "event": "API_REQUEST_START", "proxy_vars_removed": false, "time": "2026-11-11T08:58:24.973+00:00", "timeout_seconds": 300} [2026-11-11T08:59:29+00:00] IO_LOOP_CONTROLLER {"attempt": "configured_environment", "command": ["kaggle", "datasets", "version", "-p", "/home/user/kaggle-io-loop-run/dataset", "-m", "WebVM RX io-loop-proof-20261111T085824471568Z", "-r", "skip"], "duration_ms": 64182.15, "event": "API_REQUEST_RESULT", "exit_code": 0, "output_tail": "Starting upload for file rx_message.json\n\n 0%| | 0.00/3.71k [00:00 /dev/null; then python -c 'import sys;import papermill as pm;pm.execute_notebook(\"__notebook__.ipynb\",\"__notebook__.ipynb\",progress_bar=False,log_output=True,stdout_file=sys.stdout,stderr_file=sys.stderr,allow_errors=False,timeout=43200)';PAPERMILL_EXIT_CODE=$?;echo \"# pylint: disable=missing-module-docstring import re from nbconvert.preprocessors import Preprocessor class RemovePapermillHeader(Preprocessor): # pylint: disable=missing-class-docstring def preprocess(self, notebook, resources): pattern = re.compile(r'>An Exception was encountered at.*In \\[|' +'Execution using papermill encountered an exception') real_cells = [] for cell in notebook.cells: if cell.cell_type == 'markdown' and pattern.search(cell.source): continue real_cells.append(cell) notebook.cells = real_cells return notebook, resources \" > \"remove_papermill_header.py\"; jupyter nbconvert --to notebook --output \"__notebook__.ipynb\" --Exporter.preprocessors=[\\\"remove_papermill_header.RemovePapermillHeader\\\"] \"__notebook__.ipynb\"; rm -f \"remove_papermill_header.py\" \"__pycache__/remove_papermill_header\"*;(exit $PAPERMILL_EXIT_CODE);else jupyter nbconvert --to notebook --output \"__notebook__.ipynb\" --template \"/opt/kaggle/nbconvert-extensions.tpl\" --execute --ExecutePreprocessor.timeout=43200 \"__notebook__.ipynb\"; fi; EXECUTE_EXIT_CODE=$?; cd \"/kaggle/working\"; jupyter nbconvert --to html --output \"__results__.html\" --template \"/opt/kaggle/nbconvert-extensions.tpl\" --Exporter.preprocessors=[\\\"nbconvert.preprocessors.ExtractOutputPreprocessor\\\"] \"__notebook__.ipynb\"; CONVERT_EXIT_CODE=$?; touch custom.css; (exit $EXECUTE_EXIT_CODE) && (exit $CONVERT_EXIT_CODE); PREV_EXIT_CODE=$?; ENTRYPOINT=/bin/bash; A0=\"/kaggle/nbdev/export.sh\"; \"$ENTRYPOINT\" \"$A0\"; EXIT_CODE=$?; (exit $PREV_EXIT_CODE) && (exit $EXIT_CODE); PREV_EXIT_CODE=$?; ENTRYPOINT=python; A0=\"/kaggle/huggingface/hf_scan.py\"; \"$ENTRYPOINT\" \"$A0\"; EXIT_CODE=$?; (exit $PREV_EXIT_CODE) && (exit $EXIT_CODE)\nroot 8 40.7 0.5 729684 166532 ? Sl 09:00 0:05 python3 -c import sys;import papermill as pm;pm.execute_notebook(\"__notebook__.ipynb\",\"__notebook__.ipynb\",progress_bar=False,log_output=True,stdout_file=sys.stdout,stderr_file=sys.stderr,allow_errors=False,timeout=43200)\nroot 16 58.9 0.4 918252 135296 ? Ssl 09:00 0:02 /usr/bin/python3 -m colab_kernel_launcher -f /tmp/tmpzbtth9ft.json --HistoryManager.hist_file=:memory:\nroot 39 60.0 0.0 24052 16356 ? S 09:00 0:00 /usr/bin/python3 -I -c #!/usr/bin/env python3 \"\"\"Find the Kaggle proxy token using the notebook's full process listing. The live process table is searched with `ps auxww`, as requested. The matching token is written only to /kaggle/working/webvm_proxy_route.json for return through the existing RX/TX channel. It is never printed. \"\"\" import json import re import subprocess from pathlib import Path HOST = \"kkb-production.jupyter-proxy.kaggle.net\" RESULT = Path(\"/kaggle/working/webvm_proxy_route.json\") ROUTE_RE = re.compile(r\"/k/([0-9]+)/([^/\\s'\\\"?]+)/proxy(?:/|$)\") try: ps = subprocess.run( [\"ps\", \"-aux\"], check=True, capture_output=True, text=True, timeout=10, ) process_lines = ps.stdout.splitlines() print(\"WEBVM_FULL_PS_AUX_BEGIN\", flush=True) print(ps.stdout, end=\"\" if ps.stdout.endswith(\"\\n\") else \"\\n\", flush=True) print(\"WEBVM_FULL_PS_AUX_END\", flush=True) except (OSError, subprocess.SubprocessError) as exc: try: RESULT.unlink() except FileNotFoundError: pass print( \"WEBVM_PROXY_ROUTE_DISCOVERY found=false method=ps_aux \" \"error_type={}\".format(type(exc).__name__), flush=True, ) raise SystemExit(0) jupyter_lines = [ line for line in process_lines if \"jupyter\" in line.lower() or \"notebook\" in line.lower() ] search_groups = (jupyter_lines, process_lines) found = None source_group = None # Search the entire ps command line, prioritising Jupyter/Notebook processes. for group_name, lines in ((\"jupyter_process\", jupyter_lines), (\"all_processes\", process_lines)): for line in lines: match = ROUTE_RE.search(line) if match: found = { \"host\": HOST, \"path\": \"/k/{}/{}/proxy\".format(match.group(1), match.group(2)), \"kernel_id\": match.group(1), \"token\": match.group(2), } source_group = group_name break if found: break if not found: try: RESULT.unlink() except FileNotFoundError: pass print( \"WEBVM_PROXY_ROUTE_DISCOVERY found=false method=ps_auxww \" \"process_count={} jupyter_process_count={}\".format( max(0, len(process_lines) - 1), len(jupyter_lines)), flush=True, ) else: RESULT.parent.mkdir(parents=True, exist_ok=True) RESULT.write_text(json.dumps(found, sort_keys=True) + \"\\n\", encoding=\"utf-8\") print( \"WEBVM_PROXY_ROUTE_DISCOVERY found=true method=ps_auxww \" \"source={} kernel_id={} token_present=true\".format( source_group, found[\"kernel_id\"]), flush=True, ) \nroot 40 0.0 0.0 11284 4336 ? R 09:00 0:00 ps -aux\nWEBVM_FULL_PS_AUX_END\nWEBVM_PROXY_ROUTE_DISCOVERY found=false method=ps_auxww process_count=5 jupyter_process_count=3\n", "sha256": "a38733060dea6fd70ed2d54674f3ad5336a24c8b403d617b5678f267e3125e6c", "timed_out": false}, "network_diagnostics": {"dev_net_tun": false, "iptables_available": false, "ipv4_forwarding": "1", "jupyter_process_count": 2, "jupyter_proxy_kernel_id": null, "jupyter_proxy_route_found": false, "jupyter_proxy_token_present": false, "outbound_tcp_443": {"kkb-production.jupyter-proxy.kaggle.net": {"dns_or_tcp": false, "error": "ProbeTimeout"}, "pste.us": {"dns_or_tcp": false, "error": "ProbeTimeout"}}, "packet_capture": {"available": false, "capture_window_seconds": 12.03, "error_type": "TypeError", "filter": "IPv4 TCP/443 and UDP/53", "metadata_only": true, "method": "AF_PACKET", "payload_capture": false, "samples": [], "tcp_443_fin": 0, "tcp_443_inbound": 0, "tcp_443_outbound": 0, "tcp_443_packets": 0, "tcp_443_rst": 0, "tcp_443_syn": 0, "tcp_443_syn_ack": 0, "tcp_443_syn_retransmit_hints": 0, "udp_53_inbound": 0, "udp_53_outbound": 0, "udp_53_packets": 0}, "port_8889_listening": false, "process_count": 4, "process_list_method": "ps_aux", "tailscale_available": false, "tailscaled_available": false, "uid": 0}, "payload": "EXEC:a38733060dea6fd70ed2d54674f3ad5336a24c8b403d617b5678f267e3125e6c:0", "payload_length": 71, "proxy_route": null, "received_at": "2026-11-11T09:00:58.253+00:00", "received_checksum": "e9fab8180e18a6083f66b661ca06773ac74e9267dc35b38f83431657eedef64d", "request_id": "io-loop-proof-20261111T085824471568Z", "sequence": 1, "type": "ack", "version": 1}, "time": "2026-11-11T09:01:45.854+00:00"} [2026-11-11T09:01:52+00:00] RX_TX_REMOTE_PROCESS_LIST_BEGIN [2026-11-11T09:01:52+00:00] WEBVM_FULL_PS_AUX_BEGIN [2026-11-11T09:01:52+00:00] USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND [2026-11-11T09:01:52+00:00] root 1 0.4 0.0 2816 1604 ? Ss 09:00 0:00 /bin/sh -c EXECUTE_EXIT_CODE=0; CONVERT_EXIT_CODE=0; cp "/kaggle/src/script.ipynb" "/kaggle/working/__notebook__.ipynb"; cd "/kaggle/working"; if command -v papermill > /dev/null; then python -c 'import sys;import papermill as pm;pm.execute_notebook("__notebook__.ipynb","__notebook__.ipynb",progress_bar=False,log_output=True,stdout_file=sys.stdout,stderr_file=sys.stderr,allow_errors=False,timeout=43200)';PAPERMILL_EXIT_CODE=$?;echo "# pylint: disable=missing-module-docstring import re from nbconvert.preprocessors import Preprocessor class RemovePapermillHeader(Preprocessor): # pylint: disable=missing-class-docstring def preprocess(self, notebook, resources): pattern = re.compile(r'>An Exception was encountered at.*In \[|' +'Execution using papermill encountered an exception') real_cells = [] for cell in notebook.cells: if cell.cell_type == 'markdown' and pattern.search(cell.source): continue real_cells.append(cell) notebook.cells = real_cells return notebook, resources " > "remove_papermill_header.py"; jupyter nbconvert --to notebook --output "__notebook__.ipynb" --Exporter.preprocessors=[\"remove_papermill_header.RemovePapermillHeader\"] "__notebook__.ipynb"; rm -f "remove_papermill_header.py" "__pycache__/remove_papermill_header"*;(exit $PAPERMILL_EXIT_CODE);else jupyter nbconvert --to notebook --output "__notebook__.ipynb" --template "/opt/kaggle/nbconvert-extensions.tpl" --execute --ExecutePreprocessor.timeout=43200 "__notebook__.ipynb"; fi; EXECUTE_EXIT_CODE=$?; cd "/kaggle/working"; jupyter nbconvert --to html --output "__results__.html" --template "/opt/kaggle/nbconvert-extensions.tpl" --Exporter.preprocessors=[\"nbconvert.preprocessors.ExtractOutputPreprocessor\"] "__notebook__.ipynb"; CONVERT_EXIT_CODE=$?; touch custom.css; (exit $EXECUTE_EXIT_CODE) && (exit $CONVERT_EXIT_CODE); PREV_EXIT_CODE=$?; ENTRYPOINT=/bin/bash; A0="/kaggle/nbdev/export.sh"; "$ENTRYPOINT" "$A0"; EXIT_CODE=$?; (exit $PREV_EXIT_CODE) && (exit $EXIT_CODE); PREV_EXIT_CODE=$?; ENTRYPOINT=python; A0="/kaggle/huggingface/hf_scan.py"; "$ENTRYPOINT" "$A0"; EXIT_CODE=$?; (exit $PREV_EXIT_CODE) && (exit $EXIT_CODE) [2026-11-11T09:01:52+00:00] root 8 40.7 0.5 729684 166532 ? Sl 09:00 0:05 python3 -c import sys;import papermill as pm;pm.execute_notebook("__notebook__.ipynb","__notebook__.ipynb",progress_bar=False,log_output=True,stdout_file=sys.stdout,stderr_file=sys.stderr,allow_errors=False,timeout=43200) [2026-11-11T09:01:52+00:00] root 16 58.9 0.4 918252 135296 ? Ssl 09:00 0:02 /usr/bin/python3 -m colab_kernel_launcher -f /tmp/tmpzbtth9ft.json --HistoryManager.hist_file=:memory: [2026-11-11T09:01:52+00:00] root 39 60.0 0.0 24052 16356 ? S 09:00 0:00 /usr/bin/python3 -I -c #!/usr/bin/env python3 """Find the Kaggle proxy token using the notebook's full process listing. The live process table is searched with `ps auxww`, as requested. The matching token is written only to /kaggle/working/webvm_proxy_route.json for return through the existing RX/TX channel. It is never printed. """ import json import re import subprocess from pathlib import Path HOST = "kkb-production.jupyter-proxy.kaggle.net" RESULT = Path("/kaggle/working/webvm_proxy_route.json") ROUTE_RE = re.compile(r"/k/([0-9]+)/([^/\s'\"?]+)/proxy(?:/|$)") try: ps = subprocess.run( ["ps", "-aux"], check=True, capture_output=True, text=True, timeout=10, ) process_lines = ps.stdout.splitlines() print("WEBVM_FULL_PS_AUX_BEGIN", flush=True) print(ps.stdout, end="" if ps.stdout.endswith("\n") else "\n", flush=True) print("WEBVM_FULL_PS_AUX_END", flush=True) except (OSError, subprocess.SubprocessError) as exc: try: RESULT.unlink() except FileNotFoundError: pass print( "WEBVM_PROXY_ROUTE_DISCOVERY found=false method=ps_aux " "error_type={}".format(type(exc).__name__), flush=True, ) raise SystemExit(0) jupyter_lines = [ line for line in process_lines if "jupyter" in line.lower() or "notebook" in line.lower() ] search_groups = (jupyter_lines, process_lines) found = None source_group = None # Search the entire ps command line, prioritising Jupyter/Notebook processes. for group_name, lines in (("jupyter_process", jupyter_lines), ("all_processes", process_lines)): for line in lines: match = ROUTE_RE.search(line) if match: found = { "host": HOST, "path": "/k/{}/{}/proxy".format(match.group(1), match.group(2)), "kernel_id": match.group(1), "token": match.group(2), } source_group = group_name break if found: break if not found: try: RESULT.unlink() except FileNotFoundError: pass print( "WEBVM_PROXY_ROUTE_DISCOVERY found=false method=ps_auxww " "process_count={} jupyter_process_count={}".format( max(0, len(process_lines) - 1), len(jupyter_lines)), flush=True, ) else: RESULT.parent.mkdir(parents=True, exist_ok=True) RESULT.write_text(json.dumps(found, sort_keys=True) + "\n", encoding="utf-8") print( "WEBVM_PROXY_ROUTE_DISCOVERY found=true method=ps_auxww " "source={} kernel_id={} token_present=true".format( source_group, found["kernel_id"]), flush=True, ) [2026-11-11T09:01:52+00:00] root 40 0.0 0.0 11284 4336 ? R 09:00 0:00 ps -aux [2026-11-11T09:01:52+00:00] WEBVM_FULL_PS_AUX_END [2026-11-11T09:01:52+00:00] WEBVM_PROXY_ROUTE_DISCOVERY found=false method=ps_auxww process_count=5 jupyter_process_count=3 [2026-11-11T09:01:52+00:00] RX_TX_REMOTE_PROCESS_LIST_END [2026-11-11T09:01:52+00:00] IO_LOOP_CONTROLLER {"attempt": "configured_environment", "command": ["kaggle", "kernels", "output", "simonday/webvm-io-loop-proof", "-p", "/home/user/kaggle-io-loop-run/output/notebook_diagnostics", "-o", "--file-pattern", "^io_loop_proof\\.ipynb$"], "event": "API_REQUEST_START", "proxy_vars_removed": false, "time": "2026-11-11T09:01:45.867+00:00", "timeout_seconds": 180} [2026-11-11T09:02:09+00:00] IO_LOOP_CONTROLLER {"attempt": "configured_environment", "command": ["kaggle", "kernels", "output", "simonday/webvm-io-loop-proof", "-p", "/home/user/kaggle-io-loop-run/output/notebook_diagnostics", "-o", "--file-pattern", "^io_loop_proof\\.ipynb$"], "duration_ms": 23815.585, "event": "API_REQUEST_RESULT", "exit_code": 0, "output_tail": "Kernel log downloaded to /home/user/kaggle-io-loop-run/output/notebook_diagnostics/webvm-io-loop-proof.log \n", "time": "2026-11-11T09:02:09.690+00:00"} [2026-11-11T09:02:11+00:00] IO_LOOP_CONTROLLER {"event": "NOTEBOOK_DIAGNOSTIC_DOWNLOAD", "exit_code": 0, "files": [], "output_tail": "Kernel log downloaded to /home/user/kaggle-io-loop-run/output/notebook_diagnostics/webvm-io-loop-proof.log \n", "time": "2026-11-11T09:02:09.795+00:00"} [2026-11-11T09:02:11+00:00] IO_LOOP_CONTROLLER {"event": "PROXY_DIAGNOSTIC_RESULTS", "found": false, "line_count": 0, "lines": [], "time": "2026-11-11T09:02:09.798+00:00"} [2026-11-11T09:02:11+00:00] IO_LOOP_CONTROLLER {"event": "LOOP_PROOF_PASS", "output_bytes": 7911, "output_file": "/home/user/kaggle-io-loop-run/output/tx_response.json", "payload_bytes": 3556, "request_id": "io-loop-proof-20261111T085824471568Z", "round_trip_ms": 225450.15, "rx_checksum": "e9fab8180e18a6083f66b661ca06773ac74e9267dc35b38f83431657eedef64d", "sequence": 1, "time": "2026-11-11T09:02:09.801+00:00", "tx_checksum": "0a5307f4247834df47b9b0576984d432f1c65888a9cf72bb039eadedcb0e57a3"} [2026-11-11T09:02:12+00:00] IO_LOOP_CONTROLLER_SUCCESS_MARKER observed=LOOP_PROOF_PASS [2026-11-11T09:02:14+00:00] IO_LOOP_CONTROLLER_EXIT returncode=0 [2026-11-11T09:02:15+00:00] RX_TX_TOKENIZED_PROXY_MARKER_RESULT passed=false stage=proxy_route_not_returned [2026-11-11T09:02:15+00:00] RX_TX_CURRENT_DEPLOYMENT_PROOF_PASS transport=kaggle-api-dataset-and-kernel-output