Repository navigation
Description
1. raven[sandbox] cannot be installed on Windows
pyproject.toml:
sandbox = [
"boxlite==0.9.5",
"anyio>=4.0",
]boxlite publishes wheels for macOS and Linux only -- it is a microVM runtime built on KVM / Hypervisor.framework, and its PyPI classifiers say so explicitly (Operating System :: MacOS, Operating System :: POSIX :: Linux). That is by design upstream, not an oversight there.
The oversight is on our side: the dependency carries no platform marker, so on Windows the install fails outright:
error: Distribution `boxlite==0.9.5 @ registry+https://pypi.org/simple` can't be
installed because it doesn't have a source distribution or wheel for the current platform
This is purely a packaging defect, because the code already degrades gracefully when boxlite is absent:
raven/sandbox/interfaces.pydeliberately defines the shared types outsideboxlite_executor.pyso they "can be imported without requiring boxlite to be installed... they must not fail just because boxlite is absent".raven/cli/onboard_commands.pyandraven/sandbox/debug_server.pyprobe withtry: import boxlite / except ImportError.
So a Windows user who installs raven[sandbox] gets an install error instead of a Raven that simply reports the sandbox as unavailable.
Two sibling dependencies already do this correctly, which makes the omission clear:
"python-socks[asyncio]>=2.8.0,<3.0.0; sys_platform != 'win32'",
"matrix-nio>=0.25.2; sys_platform != 'win32'",Fix: "boxlite==0.9.5; sys_platform != 'win32'".
2. The retrieval extra has no consumer
retrieval = [
"torch>=2.0.0",
"transformers>=4.45.0",
]A whole-tree grep (excluding .venv, uv.lock, and node_modules) finds torch and transformers in exactly five places: this declaration, two code comments, one doc note, and a CI comment. Nothing imports either package -- not raven/, not tests/, not benchmarks/, scripts/, or demos/. There is no dynamic loading either (no sentence-transformers, AutoModel, from_pretrained, or string-based import), and no doc tells users to install raven[retrieval]. The extra dates back to the initial raven init commit, so it looks like scaffolding that never acquired a consumer.
It is not free to keep:
- torch is a multi-hundred-megabyte download that slows every environment build.
- Its native runtime is a known crash surface here.
raven/cli/_exit.pydocuments that native runtimes loaded by the agent loop segfaultPy_FinalizeEx, and the CLI hard-exits past finalization to dodge it; the test suite needed the same guard once CI started running the full suite.
Removing it changes no behaviour: the suite collects the same 4611 tests with and without it.
Proposed change
- Add the
sys_platform != 'win32'marker to boxlite. - Remove the
retrievalextra (viauv remove, refreshinguv.lock). - Point CI back at
--all-extras, which is now equivalent to today's hand-maintainedchannels + tools + sandboxlist but stays correct as extras change. - Add
windows-latestto the unit matrix, which the boxlite marker unblocks.
Step 4 is a measurement as much as a fix: the suite has never run on Windows, so it may surface platform assumptions. If it does, the marker fix still stands on its own and the matrix entry can wait.
Activity
fix(deps): mark boxlite posix-only, drop unused retrieval extra (#226)
fix(deps): mark boxlite posix-only, drop unused retrieval extra (Ever…