ruvnet / ruvnet/RuView

Split P6 SOTA bindings into separate PyPI packages (aether/mat/meridian)

Open
#1,412 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement
Dominant language
Rust
Stars
94.5k
Forks
12.5k
Avg merge
21h 27m
Merged PRs (30d)
43

Description

Summary

Ship the P6 SOTA subsystems (AETHER / MAT / MERIDIAN) as separate native PyPI packageswifi-densepose-aether, wifi-densepose-mat, wifi-densepose-meridian — that the wifi-densepose[aether] / [mat] / [meridian] extras depend on. This is the only way to honor the deliberate "small base wheel, opt-in SOTA" design (ADR-117 §5.4) while making the extras actually deliver the bindings.

Why now

A pip extra can only pull Python packages; it cannot enable a Rust cargo feature on an already-built wheel. So today the [aether]/[mat]/[meridian]/[sota] extras are = [] and inert: pip install wifi-densepose[aether] installs the base wheel, which has no P6 bindings, and import wifi_densepose.aether fails.

There are only three ways to resolve that: (A) compile SOTA into the single published wheel — abandons the small-base design and, once mat gains ONNX Runtime as anticipated, silently balloons the published wheel past the 5 MiB budget (which only guards the no-features build); (B) split into separate packages — this issue; (C) keep the base small and make P6 source-build-only for now. C was chosen for the current PR (honest error messages + source-build path via --features); B is the proper fix.

Done looks like

  • pip install wifi-densepose → small base wheel, no SOTA (design preserved; base stays budget-guarded).
  • pip install wifi-densepose[aether] → pulls wifi-densepose-aether, and import wifi_densepose.aether works.
  • Each SOTA package is built only with its own cargo feature, so a heavy dep (e.g. ONNX Runtime landing in mat) grows only wifi-densepose-mat, never the base.
  • Each SOTA package has its own size budget check.

Work items

  • Decide the module-resolution model so wifi_densepose.aether resolves from the separate wifi-densepose-aether package (namespace package, or a re-export shim in the base that imports the sibling package when installed).
  • A pyproject.toml / maturin build per SOTA package, each pinning its cargo feature.
  • Per-package cibuildwheel matrix + PyPI trusted-publishing lane (mirror pip-release.yml).
  • Point the base package's extras at the sibling packages (aether = ["wifi-densepose-aether==<ver>"], …).
  • Per-package wheel-size budget job.
  • Remove the interim source-build-only messaging once the packages publish.

Context: the interim C fix landed on feature/python-sota-modernization — release wheels stay feature-less (small base preserved), the import shims now point users to a source build with --features, and the AETHER parity tests were made arch-portable (tolerance vs a golden vector rather than a non-portable f32 byte hash). This issue tracks the follow-up to actually ship P6 in binary wheels.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with ADR-117 §5.4 and the current pyproject.toml extras to understand the small-base design and package boundaries. Then inspect pip-release.yml and the interim work on feature/python-sota-modernization before deciding how the sibling modules resolve. Done means each SOTA extra installs its own package, imports work, and separate build and wheel-size checks are in place.

Written by the indexing model from the issue text.

Assessment

Tech stack
github-actions, python, rust
Domain
build-system, ci-cd, release
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.