René's URL Explorer Experiment


Title: feat(runtime-core,cli,mcp): typed runtime failures, fail-fast shutdown, and real toolkit integration tests by jamesbhobbs · Pull Request #519 · deepnote/deepnote · GitHub

Open Graph Title: feat(runtime-core,cli,mcp): typed runtime failures, fail-fast shutdown, and real toolkit integration tests by jamesbhobbs · Pull Request #519 · deepnote/deepnote

X Title: feat(runtime-core,cli,mcp): typed runtime failures, fail-fast shutdown, and real toolkit integration tests by jamesbhobbs · Pull Request #519 · deepnote/deepnote

Description: Stacked on #518 (interpreter resolution for #288); merge that first. Part of #162: for headless execution to be a first-class feature, the runtime has to fail loudly, fail fast, and be tested against the real toolkit. Warm server pooling for the MCP is deliberately not in this PR. It lands as a follow-up stacked on this one (#520), with real concurrency and crash-recovery tests, so the reliability work here can be reviewed and merged on its own. Problems Read against the runtime as it stands on main: Nothing in CI starts the toolkit. The "CLI E2E" job runs --version and --help; every engine and kernel test mocks the Jupyter client. A toolkit release or a @jupyterlab/services bump can break deepnote run with all checks green. A dead server hangs the run. If the Jupyter server dies mid-run, the websocket drops and the Jupyter client retries with backoff for about two minutes without ever marking the kernel dead; the in-flight execution waits forever. The server starter only watches for process exit during startup. A failed start delays exit by two minutes. When python -m deepnote_toolkit server exits immediately (toolkit not installed), the startup race rejects at once, but the health-check loop is never cancelled and keeps polling until the 120 s startup timeout. The CLI has already printed its error and sits there. Measured at 2:00 before, 0.3 s after. Every start failure says "install deepnote-toolkit". The CLI appends that hint to any engine.start() error, including port conflicts, timeouts and bad --python paths. Machine output has no failure category, and exit code 1 covers infra failures and user code alike. Interpreter fallback ignores a project .venv. #518 adds the extension sidecar and DEEPNOTE_PYTHON; a .venv next to the notebook was still ignored in favour of bare python. Timeouts are constants (30 s kernel idle, 120 s server start) and server logs are dropped unless the process dies during startup. Stopping the server can leak Jupyter. stopServer SIGKILLs the toolkit supervisor two seconds after SIGTERM. The supervisor terminates each child and waits up to five seconds for it, so under load it is still shutting Jupyter down when it is killed, and the Jupyter server, language server and kernel are orphaned. Found while adding a leaked-process check to the integration tests; it reproduced twice in full runs and never in isolation. Changes Typed failures (@deepnote/runtime-core). New RuntimeError family with a closed category: server-launch, kernel-launch, kernel-died, server-exited, execution-timeout, plus in-block for the block's own code. Errors carry an optional hint. startServer names the real cause (toolkit missing for that interpreter, a missing server dependency, process exit with stderr tail, health-check timeout). BlockExecutionResult and ExecutionSummary gain failureCategory. No more hangs. ServerInfo.exited settles when the process ends; the engine fails the in-flight execution with ServerExitedError when that happens mid-run, through a removable process listener it detaches on stop. The kernel client fails in-flight executions with KernelDiedError on dead/autorestarting status (and translates the client's opaque "Canceled future" rejection), and runs a connection watchdog: a dropped websocket that is not back within 10 s is probed; a dead server or missing kernel fails immediately, a server that still answers gets exactly one more grace period. After a fatal error every later execute() rejects immediately, and a client can connect() again from a clean slate. Integration tests measure a dead kernel reported in ~8 s and a killed Jupyter server in ~14 s. Fast startup failure. The health-check loop is abortable and is aborted when startup fails, and every health request is bounded by the time left in the startup timeout, so a server that accepts the connection but never answers cannot stall past --startup-timeout. Kernel disposal detaches the kernel's Lumino listeners when the connection is down, because @jupyterlab/services awaits its post-restart reconnect() without handling rejection; disposing mid-reconnect otherwise surfaces an unhandled rejection. Adds @lumino/signaling as a direct dependency (already in the tree). No more orphaned servers. The toolkit supervisor starts Jupyter and the language server in their own sessions, so nothing but its explicit cleanup ever reaches them. startServer records those child pids once the server is ready, and stopServer waits up to 10 s for the supervisor to finish its own cleanup, kills the children before force-killing a supervisor that ignores SIGTERM (also on a failed startup), and afterwards terminates any recorded child that outlived the supervisor. Every integration test file checks after each test that no toolkit, Jupyter, language-server or kernel process from the interpreter's environment was left behind, and prints the toolkit server's log when one is. Configurable timeouts and logs. RuntimeConfig gains serverStartupTimeoutMs, kernelStartupTimeoutMs, blockTimeoutMs and onServerLog. A block that exceeds the block timeout is interrupted and the run fails with execution-timeout. CLI: --startup-timeout (applied to server and kernel) and --block-timeout ; deepnote --debug run streams the toolkit server log as [server stdout]/[server stderr]. CLI reporting. The blanket install hint is gone; Failed to start server: is followed by the runtime's hint (and the interpreter hint from #518 when only a bare python was available). -o json/-o toon add failureCategory on the run and on the failed block, and hint; a startup failure emits { success: false, error, failureCategory, hint }. Exit codes are unchanged. MCP reporting. deepnote_run responses now report success: false when a block failed (previously hardcoded true), plus failureCategory and hint; a runtime that cannot start returns a structured error with the same fields. Each call still starts and stops its own server; reuse is the follow-up PR. Interpreter resolution. resolveProjectPython gains a tier between the IDE sidecar and the system default: a .venv/venv found from the notebook's directory upward whose interpreter can import deepnote_toolkit. A venv without the toolkit is skipped with a warning, so an unrelated project venv never shadows a working system Python (source: venv). Integration tests in CI. *.integration.test.ts files are excluded from pnpm test and run by pnpm test:integration (vitest.integration.config.ts). New job "Runtime Integration (deepnote-toolkit)" installs Python 3.12 + deepnote-toolkit[server], builds, and runs them with DEEPNOTE_PYTHON set. Eleven tests against the real server: engine success/in-block/kernel-died/server-exited/block-timeout/missing-toolkit, the built CLI for success/in-block/--block-timeout/missing toolkit (asserting the fast exit), and the pre-existing local-runner test, which now runs instead of skipping. A leak guard keyed on the interpreter's sys.prefix flags any process a test left behind. Docs skills/deepnote/references/cli-run.md (new flags, failure-category table, venv tier, cloud-ignored flags), cli-analysis.md, SKILL.md, packages/cli/README.md, packages/mcp/README.md (failure fields, venv tier), AGENTS.md and CONTRIBUTING.md (pnpm test:integration). Tests Unit: the full suite passes; new coverage for the server starter (exit tracking, abort, cause detection, log forwarding, child cleanup), kernel client (typed failures, timeout + interrupt, watchdog with bounded retry, reconnect after failure, listener detachment), engine (categories, server exit, listener detachment), the venv tier, the CLI (hints, timeouts, debug logs, JSON fields) and the MCP (structured failures, engine lifecycle). Integration: 11 tests pass locally against deepnote-toolkit 2.6.0 (pnpm test:integration, ~65 s) and in the new CI job, with no leaked processes. pnpm typecheck, pnpm lintAndFormat, pnpm spell-check clean. Not in this PR: warm server pooling for the MCP (follow-up); --kernel / non-Python kernels (see #154, #162); .venv discovery does not consult pyproject.toml; and if the toolkit supervisor itself is SIGKILLed (for example by the OOM killer) its already-orphaned children are cleaned up only when stopServer runs, which is only fully fixable on the toolkit side (a process group or PR_SET_PDEATHSIG for its children). 🤖 Generated with Claude Code Summary by CodeRabbit New Features Added startup and per-block timeout options for local runs. Added virtual-environment discovery and improved interpreter selection. Added structured runtime failure categories, actionable hints, and machine-readable results. Added debug-mode server log forwarding. Bug Fixes Improved detection, reporting, and cleanup for kernel, server, startup, and timeout failures. Improved execution lifecycle handling and process cleanup. Documentation Expanded CLI and integration-testing guidance, including CI fail-fast examples. Tests Added integration coverage for successful runs, failures, timeouts, and process cleanup.

Open Graph Description: Stacked on #518 (interpreter resolution for #288); merge that first. Part of #162: for headless execution to be a first-class feature, the runtime has to fail loudly, fail fast, and be tested again...

X Description: Stacked on #518 (interpreter resolution for #288); merge that first. Part of #162: for headless execution to be a first-class feature, the runtime has to fail loudly, fail fast, and be tested again...

Opengraph URL: https://github.com/deepnote/deepnote/pull/519

X: @github

direct link

Domain: github.com

react-profiling0
react-import-mapreact,react-dom,react-dom/client,react-dom/profiling,react-is,react-reconciler,react/compiler-runtime,react/jsx-dev-runtime,react/jsx-runtime,scheduler@d5750093facf
route-pattern/:user_id/:repository/pull/:id/commits/:range(.:format)
route-controllerpull_requests
route-actioncommits
fetch-noncev2:547e8786-3443-94ee-46be-0397137b77a5
current-catalog-service-hashae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b
request-idDC44:35A861:A0F05B:DAC839:6AEDCE5E
html-safe-noncea473b2ff20e675e442fffbc80b0290e24415520b081b2b9698af9b92d663f5ce
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJEQzQ0OjM1QTg2MTpBMEYwNUI6REFDODM5OjZBRURDRTVFIiwidmlzaXRvcl9pZCI6IjcwMDE3NDkzNzcxMTU2MjMzNCIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9
visitor-hmacb9919d689e4f36d2cda17b7c09d98e8028d9839d2af7e6ed5c4ef62068ceacc1
hovercard-subject-tagpull_request:4485761092
github-keyboard-shortcutsrepository,pull-request-list,pull-request-conversation,pull-request-files-changed,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///pull_requests/show/commits
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/deepnote/deepnote/pull/519/commits/df389aad56173563a612ca88a98a209f8d85ad25
twitter:imagehttps://avatars.githubusercontent.com/u/15235276?s=400&v=4
twitter:cardsummary_large_image
og:imagehttps://avatars.githubusercontent.com/u/15235276?s=400&v=4
og:image:altStacked on #518 (interpreter resolution for #288); merge that first. Part of #162: for headless execution to be a first-class feature, the runtime has to fail loudly, fail fast, and be tested again...
og:site_nameGitHub
og:typeobject
hostnamegithub.com
expected-hostnamegithub.com
Nonef60373873bb1ef795e8511ea1f2a76997e9c649d72b02942aedf2def3423a0ce
turbo-cache-controlno-preview
diff-viewunified
go-importgithub.com/deepnote/deepnote git https://github.com/deepnote/deepnote.git
octolytics-dimension-user_id45339858
octolytics-dimension-user_logindeepnote
octolytics-dimension-repository_id1066509034
octolytics-dimension-repository_nwodeepnote/deepnote
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id1066509034
octolytics-dimension-repository_network_root_nwodeepnote/deepnote
turbo-body-classeslogged-out env-production page-responsive full-width
disable-turbofalse
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
release0f55cfa61438c7dc93d1024a1e5e5182b36830e2
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/deepnote/deepnote/pull/519/commits/df389aad56173563a612ca88a98a209f8d85ad25#start-of-content
https://github.com/
Sign inhttps://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fdeepnote%2Fdeepnote%2Fpull%2F519%2Fcommits%2Fdf389aad56173563a612ca88a98a209f8d85ad25
GitHubRepository hosting, code review, and collaborationhttps://github.com/platform
CopilotAI coding agent for tasks, projects, and automated workhttps://github.com/features/copilot
ActionsCI/CD and automationhttps://github.com/features/actions
Code QualityQuality analysis, fixes, and enforcementhttps://github.com/features/code-quality
CodespacesCloud development environmentshttps://github.com/features/codespaces
Code SecurityVulnerability detection and remediationhttps://github.com/security/advanced-security/code-security
Secret ProtectionSecret scanning and leak preventionhttps://github.com/security/advanced-security/secret-protection
All Featureshttps://github.com/features
Documentationhttps://docs.github.com/en
Traininghttps://learn.github.com/skills
Certificationshttps://learn.github.com/credentials
Build with Copilothttps://github.com/features/ai
Customize Copilothttps://docs.github.com/en/copilot/how-tos/copilot-on-github/customize-copilot/customize-copilot-overview
Integrationshttps://github.com/marketplace
Trending reposhttps://github.com/trending
GitHub Sponsorshttps://github.com/open-source/sponsors
Developer articleshttps://github.com/resources/articles
ChangelogYour source for the latest features, improvements, and fixes across GitHub products, all in one place.https://github.blog/changelog/
Enterpriseshttps://github.com/enterprise
Teamhttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
See all industrieshttps://github.com/solutions/industry
Why GitHubhttps://github.com/why-github
Customer Storieshttps://github.com/customer-stories
Business insightshttps://github.com/solutions/executive-insights
Trust Centerhttps://github.com/trust-center
GitHub Advanced SecurityEnterprise-grade code securityhttps://github.com/security/advanced-security
Copilot for businessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/enterprise/premium-support
Documentationhttps://docs.github.com/en
Resource centerhttps://github.com/resources
Bloghttps://github.blog/
Events & webinarshttps://github.com/resources/events
Community Forumhttps://github.com/orgs/community/discussions
Customer Storieshttps://github.com/customer-stories
Integrationshttps://github.com/marketplace
Customer supporthttps://help.github.com/
Traininghttps://learn.github.com/skills
GitHub Statushttps://www.githubstatus.com/
Abouthttps://github.com/about
Partnershttps://github.com/partners
Changeloghttps://github.blog/changelog/
GitHub UniverseThe event for developers, by developers — talks, workshops, and what’s next for GitHub.https://githubuniverse.com/
Pricinghttps://github.com/pricing
Sign inhttps://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fdeepnote%2Fdeepnote%2Fpull%2F519%2Fcommits%2Fdf389aad56173563a612ca88a98a209f8d85ad25
Sign uphttps://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fpull_requests%2Fshow%2Fcommits&source=header-repo&source_repo=deepnote%2Fdeepnote
Reloadhttps://github.com/deepnote/deepnote/pull/519/commits/df389aad56173563a612ca88a98a209f8d85ad25
Reloadhttps://github.com/deepnote/deepnote/pull/519/commits/df389aad56173563a612ca88a98a209f8d85ad25
Reloadhttps://github.com/deepnote/deepnote/pull/519/commits/df389aad56173563a612ca88a98a209f8d85ad25
deepnotehttps://github.com/deepnote
deepnotehttps://github.com/deepnote/deepnote
Codehttps://github.com/deepnote/deepnote
Issues14 (14)https://github.com/deepnote/deepnote/issues
Pull requests24 (24)https://github.com/deepnote/deepnote/pulls
Discussionshttps://github.com/deepnote/deepnote/discussions
Actionshttps://github.com/deepnote/deepnote/actions
Security and qualityhttps://github.com/deepnote/deepnote/security
Insightshttps://github.com/deepnote/deepnote/pulse
Sign up for GitHub https://github.com/signup?return_to=%2Fdeepnote%2Fdeepnote%2Fissues%2Fnew%2Fchoose
terms of servicehttps://docs.github.com/terms
privacy statementhttps://docs.github.com/privacy
Sign inhttps://github.com/login?return_to=%2Fdeepnote%2Fdeepnote%2Fissues%2Fnew%2Fchoose
jamesbhobbshttps://github.com/jamesbhobbs
mainhttps://github.com/deepnote/deepnote/tree/main
feat/runtime-hardeninghttps://github.com/deepnote/deepnote/tree/feat/runtime-hardening
Conversation 57 https://github.com/deepnote/deepnote/pull/519
Commits 34 https://github.com/deepnote/deepnote/pull/519/commits
Checks 21 https://github.com/deepnote/deepnote/pull/519/checks
Files changed https://github.com/deepnote/deepnote/pull/519/files
Please reload this pagehttps://github.com/deepnote/deepnote/pull/519/commits/df389aad56173563a612ca88a98a209f8d85ad25
feat(runtime-core,cli,mcp): typed runtime failures, fail-fast shutdown, and real toolkit integration tests https://github.com/deepnote/deepnote/pull/519/commits/df389aad56173563a612ca88a98a209f8d85ad25#top
Show all changes 34 commits https://github.com/deepnote/deepnote/pull/519/files
c159ebc feat(runtime-core,cli,mcp): use the Deepnote extension's environment … jamesbhobbs Sep 9, 2026 https://github.com/deepnote/deepnote/pull/519/commits/c159ebcf2909215e2a8904e03d1381930e271db3
df389aa fix(cli): report an explicit --python interpreter in human output jamesbhobbs Sep 9, 2026 https://github.com/deepnote/deepnote/pull/519/commits/df389aad56173563a612ca88a98a209f8d85ad25
1717109 docs(skill): fix stale .agent/ folder and scope the lint python claim… jamesbhobbs Sep 9, 2026 https://github.com/deepnote/deepnote/pull/519/commits/17171099daa340ab5b743f229a80b5b6d567f873
d77732c feat(runtime-core,cli,mcp): typed runtime failures, fail-fast shutdow… jamesbhobbs Sep 9, 2026 https://github.com/deepnote/deepnote/pull/519/commits/d77732cb3e6e53b04d4c52205fd322f5ea88f360
1f201e4 chore(repo): merge feat/ide-python-resolution into feat/runtime-harde… jamesbhobbs Sep 9, 2026 https://github.com/deepnote/deepnote/pull/519/commits/1f201e4cfc5d6e3773b1b98441f252e5fb584efb
6fd96d2 fix(runtime-core): address review feedback on runtime hardening jamesbhobbs Sep 9, 2026 https://github.com/deepnote/deepnote/pull/519/commits/6fd96d265637b992c21978aca0949c44f519b848
90ea0a4 refactor(runtime-core,mcp): move warm server pooling to a follow-up PR jamesbhobbs Sep 9, 2026 https://github.com/deepnote/deepnote/pull/519/commits/90ea0a44158ea9c7d030f82ef2a4f525b0fad0c7
6fa4c0e fix(runtime-core): bound every startup health request by the remainin… jamesbhobbs Sep 9, 2026 https://github.com/deepnote/deepnote/pull/519/commits/6fa4c0e4cc666c3dc74a8520e045957c200358e3
85e7d6b fix(runtime-core): never return an exited server, stop waiting exactl… jamesbhobbs Sep 9, 2026 https://github.com/deepnote/deepnote/pull/519/commits/85e7d6b9f2d28295fc2a5384e44d111bb8b9494a
99637fa docs: note that integration suites must not run concurrently on one m… jamesbhobbs Sep 9, 2026 https://github.com/deepnote/deepnote/pull/519/commits/99637fafd592a7637960bd54076bc59899462d3b
88a1476 feat(runtime-core): accept interpreter-only Deepnote extension sidecars jamesbhobbs Sep 10, 2026 https://github.com/deepnote/deepnote/pull/519/commits/88a14769534ad989e4a57fec5e3f28f61ab3e163
5bd95ca docs(cli): describe the extension tier as the selected interpreter in… jamesbhobbs Sep 10, 2026 https://github.com/deepnote/deepnote/pull/519/commits/5bd95ca419bcb25c7067dfa91a100f50524f11a3
387bda3 chore(repo): merge feat/ide-python-resolution into feat/runtime-harde… jamesbhobbs Sep 10, 2026 https://github.com/deepnote/deepnote/pull/519/commits/387bda3cc11a92f5f63d600f892614632a826215
7118d3b chore(repo): merge feat/ide-python-resolution into feat/runtime-harde… jamesbhobbs Sep 10, 2026 https://github.com/deepnote/deepnote/pull/519/commits/7118d3b631c5bdcc1795becc6dc074b80b75d0f1
938cbc4 docs(skill): point the interpreter prerequisite at pythonInterpreter,… jamesbhobbs Sep 10, 2026 https://github.com/deepnote/deepnote/pull/519/commits/938cbc49523027a46c493bd9b16bb1003ac1714e
e4bb755 chore(repo): merge feat/ide-python-resolution into feat/runtime-harde… jamesbhobbs Sep 10, 2026 https://github.com/deepnote/deepnote/pull/519/commits/e4bb755d3e9a9327452c49fc0aa1db11fba44a44
da10623 fix(runtime-core): list every sidecar location in the bare-Python hint jamesbhobbs Sep 10, 2026 https://github.com/deepnote/deepnote/pull/519/commits/da10623564f14f7c3fa27b2ef480f5aec4386ed3
d3cfaf9 chore(repo): merge feat/ide-python-resolution into feat/runtime-harde… jamesbhobbs Sep 10, 2026 https://github.com/deepnote/deepnote/pull/519/commits/d3cfaf97cb704b39fc35f4ab0083a56d34c53a34
b7f4954 fix(mcp): search the workspace root for the sidecar by default, and d… jamesbhobbs Sep 10, 2026 https://github.com/deepnote/deepnote/pull/519/commits/b7f495481d4506e7d414817051d59cb04261ecd2
bf976e5 chore(repo): merge feat/ide-python-resolution into feat/runtime-harde… jamesbhobbs Sep 10, 2026 https://github.com/deepnote/deepnote/pull/519/commits/bf976e53239cf651eae961a27514517fb0bccdcb
70ba6d3 docs(mcp): mention the .venv tier in the deepnote_run interpreter docs jamesbhobbs Sep 10, 2026 https://github.com/deepnote/deepnote/pull/519/commits/70ba6d334a24aa4ce5fdecc13d1af7b7b1f1bb8b
4cb3b49 docs(mcp): say the venv search also starts from the workspace root jamesbhobbs Sep 10, 2026 https://github.com/deepnote/deepnote/pull/519/commits/4cb3b496c8a7a591d36791107fc71072100d9d6c
4e038d1 feat(runtime-core,cli,mcp): use the Deepnote extension's environment … jamesbhobbs Sep 9, 2026 https://github.com/deepnote/deepnote/pull/519/commits/4e038d1adec4c04e874ed3367aef2d4eb9884c0a
a5eb73f fix(cli): report an explicit --python interpreter in human output jamesbhobbs Sep 9, 2026 https://github.com/deepnote/deepnote/pull/519/commits/a5eb73f072650e3814268baee83006e667de2610
27181f5 docs(skill): fix stale .agent/ folder and scope the lint python claim… jamesbhobbs Sep 9, 2026 https://github.com/deepnote/deepnote/pull/519/commits/27181f5c90e3470d71d69ee05e67510374331dc5
c0d220f feat(runtime-core): accept interpreter-only Deepnote extension sidecars jamesbhobbs Sep 10, 2026 https://github.com/deepnote/deepnote/pull/519/commits/c0d220f6134f8283be395fe5f61415c30bfc72cd
c70381a docs(cli): describe the extension tier as the selected interpreter in… jamesbhobbs Sep 10, 2026 https://github.com/deepnote/deepnote/pull/519/commits/c70381aaca4695b7bd2aa871791e3c1119b695e8
6827457 docs(skill): point the interpreter prerequisite at pythonInterpreter,… jamesbhobbs Sep 10, 2026 https://github.com/deepnote/deepnote/pull/519/commits/6827457c5a3021f4109b1282fa174220d9b45458
760fc03 fix(runtime-core): list every sidecar location in the bare-Python hint jamesbhobbs Sep 10, 2026 https://github.com/deepnote/deepnote/pull/519/commits/760fc0389ee69bdafeb402df0ab0bab6a36f6def
7de8b74 fix(mcp): search the workspace root for the sidecar by default, and d… jamesbhobbs Sep 10, 2026 https://github.com/deepnote/deepnote/pull/519/commits/7de8b746ec292ff9aa686548196a1104eff7c0d4
29983a7 chore(repo): merge feat/ide-python-resolution into feat/runtime-harde… jamesbhobbs Sep 14, 2026 https://github.com/deepnote/deepnote/pull/519/commits/29983a7b9e6255ce6307d7e287e9f015f021ca82
855ca21 Merge remote-tracking branch 'origin/main' into feat/runtime-hardening dinohamzic Sep 15, 2026 https://github.com/deepnote/deepnote/pull/519/commits/855ca21850cacfe45a8e88eac5c798ffaf99c30c
60dc951 fix(runtime-core): enforce agent block timeout jamesbhobbs Sep 16, 2026 https://github.com/deepnote/deepnote/pull/519/commits/60dc951c46d7f15519566c5d5639c7c3ac4708b3
6d2c570 fix(runtime-core): abort agents on generated code runtime failures jamesbhobbs Sep 16, 2026 https://github.com/deepnote/deepnote/pull/519/commits/6d2c57022b18f7f5955473a08d98d4c5ad2a1fcf
Clear filters https://github.com/deepnote/deepnote/pull/519/commits/df389aad56173563a612ca88a98a209f8d85ad25
Please reload this pagehttps://github.com/deepnote/deepnote/pull/519/commits/df389aad56173563a612ca88a98a209f8d85ad25
Please reload this pagehttps://github.com/deepnote/deepnote/pull/519/commits/df389aad56173563a612ca88a98a209f8d85ad25
python-resolution.test.ts https://github.com/deepnote/deepnote/pull/519/commits/df389aad56173563a612ca88a98a209f8d85ad25#diff-6936228c1b7c9b21234ef31f917f8a83aea66b7d7541b5df2e08f89deb7a4c5f
python-resolution.ts https://github.com/deepnote/deepnote/pull/519/commits/df389aad56173563a612ca88a98a209f8d85ad25#diff-3e2d43c3b3f83efd66575d25e2ebe82117dbe0f0526887fb11c15d26ee5b086e
Prev https://github.com/deepnote/deepnote/pull/519/commits/c159ebcf2909215e2a8904e03d1381930e271db3
Next https://github.com/deepnote/deepnote/pull/519/commits/17171099daa340ab5b743f229a80b5b6d567f873
Please reload this pagehttps://github.com/deepnote/deepnote/pull/519/commits/df389aad56173563a612ca88a98a209f8d85ad25
https://github.com/jamesbhobbs
https://github.com/claude
jamesbhobbshttps://github.com/deepnote/deepnote/commits?author=jamesbhobbs
claudehttps://github.com/deepnote/deepnote/commits?author=claude
packages/cli/src/utils/python-resolution.test.tshttps://github.com/deepnote/deepnote/pull/519/commits/df389aad56173563a612ca88a98a209f8d85ad25#diff-6936228c1b7c9b21234ef31f917f8a83aea66b7d7541b5df2e08f89deb7a4c5f
View file https://github.com/deepnote/deepnote/blob/df389aad56173563a612ca88a98a209f8d85ad25/packages/cli/src/utils/python-resolution.test.ts
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/deepnote/deepnote/pull/519/commits/{{ revealButtonHref }}
https://github.com/deepnote/deepnote/pull/519/commits/df389aad56173563a612ca88a98a209f8d85ad25#diff-6936228c1b7c9b21234ef31f917f8a83aea66b7d7541b5df2e08f89deb7a4c5f
https://github.com/deepnote/deepnote/pull/519/commits/df389aad56173563a612ca88a98a209f8d85ad25#diff-6936228c1b7c9b21234ef31f917f8a83aea66b7d7541b5df2e08f89deb7a4c5f
packages/cli/src/utils/python-resolution.tshttps://github.com/deepnote/deepnote/pull/519/commits/df389aad56173563a612ca88a98a209f8d85ad25#diff-3e2d43c3b3f83efd66575d25e2ebe82117dbe0f0526887fb11c15d26ee5b086e
View file https://github.com/deepnote/deepnote/blob/df389aad56173563a612ca88a98a209f8d85ad25/packages/cli/src/utils/python-resolution.ts
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/deepnote/deepnote/pull/519/commits/{{ revealButtonHref }}
https://github.com/deepnote/deepnote/pull/519/commits/df389aad56173563a612ca88a98a209f8d85ad25#diff-3e2d43c3b3f83efd66575d25e2ebe82117dbe0f0526887fb11c15d26ee5b086e
https://github.com/deepnote/deepnote/pull/519/commits/df389aad56173563a612ca88a98a209f8d85ad25#diff-3e2d43c3b3f83efd66575d25e2ebe82117dbe0f0526887fb11c15d26ee5b086e
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.