Test unmerged soundverse-py SDK changes
Every tool worker pins the SDK to git main, not a local path. In each tool repo’s
pyproject.toml the dependency reads
"soundverse @ git+https://github.com/soundversegit/soundverse-py.git@main"
(the distribution name is soundverse; the repo on disk is
soundverse-py). That pin is deliberate —
it is what the auto-update PR bot bumps when the SDK’s main
moves — but it means a plain uv run (or any make target) re-syncs the environment back
to the pinned main and silently discards local edits you made to your sibling
soundverse-py checkout.
So to test SDK work that hasn’t merged yet, you overlay your local checkout as an editable
install and then run every command with --no-sync so uv leaves the overlay alone.
The recipe
Section titled “The recipe”Run this from inside the tool repo whose worker you want to exercise (e.g.
core-tool-sansaarm or
core-tool-stitch). Both it and
soundverse-py are submodules directly under core/, so the checkout is one level up at
../soundverse-py.
-
Sync the base env first, so the pinned deps are in place before you overlay:
core-tool-<name>/ uv sync -
Overlay your local checkout as an editable install. This rewrites only the
.venv; it does not touchpyproject.tomloruv.lock, so there is nothing to accidentally commit:core-tool-<name>/ uv pip install -e ../soundverse-py -
Confirm the overlay is live — the location should point at your checkout, not a git cache:
core-tool-<name>/ uv pip show soundverse # look for: Editable project location: .../soundverse-py -
Run your test loop with
--no-syncon every command. This is the whole trick: it tells uv not to reconcile the env to the lockfile, which is what would otherwise reinstallsoundversefrom gitmainand wipe your overlay:core-tool-<name>/ uv run --no-sync ruff check . \&& uv run --no-sync pyright \&& uv run --no-sync pytest -qTo run the worker itself against the overlaid SDK, same flag:
core-tool-<name>/ uv run --no-sync python -m app.main
After your change lands
Section titled “After your change lands”Once the SDK edit merges to soundverse-py’s main, the
cascade fires the soundverse_updated dispatch and opens a
uv.lock bump PR against each tool repo. From then on the pinned main already carries your
change, so drop the overlay and go back to the normal flow:
uv sync # re-pins to git main (now includes your change)make check # plain uv run works againRelated
Section titled “Related”- The soundverse-py SDK —
WorkerFleet+TaskContext, what you’re editing - Add a new generation tool worker — the repo you overlay into
- Drive the proto → deploy cascade — the
@mainauto-bump this works around - Refresh proto stubs — the sibling flow for
soundverse-proto - Make targets & Redis keys — the
makewrappers to avoid mid-overlay - Troubleshooting FAQ — the protobuf-7 import crash and other env traps