Skip to content

Packaging: sandbox extra breaks install on Windows, retrieval extra has no consumer #225

Closed

Description

@0xKT

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.py deliberately defines the shared types outside boxlite_executor.py so they "can be imported without requiring boxlite to be installed... they must not fail just because boxlite is absent".
  • raven/cli/onboard_commands.py and raven/sandbox/debug_server.py probe with try: 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.py documents that native runtimes loaded by the agent loop segfault Py_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

  1. Add the sys_platform != 'win32' marker to boxlite.
  2. Remove the retrieval extra (via uv remove, refreshing uv.lock).
  3. Point CI back at --all-extras, which is now equivalent to today's hand-maintained channels + tools + sandbox list but stays correct as extras change.
  4. Add windows-latest to 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

  1. added a commit that references this issue on Jul 28, 2026
    16719d0
  2. added a commit that references this issue on Sep 14, 2026
    130d359
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions