Skip to content

v0.3.9 — deploy() creates the wrapper install stamp + syncs dev deps

Choose a tag to compare

@myurasov myurasov released this 10 May 02:27
· 18 commits to main since this release

Pairs with v0.3.8. After v0.3.8 the ./spectator wrapper takes a fast path skipping require_uv when .venv/ looks healthy, but on a freshly deploy'd target two things kept that fast path from triggering:

  1. deploy.py ran uv sync (runtime only) over SSH; the wrapper's deps_ready() probe checks for pytest + ruff and refused.
  2. The wrapper's install-stamp file (.venv/.spectator-installed) was never created on the target; the wrapper's mtime check refused the fast path even when deps_ready would have passed.

Net effect: ./spectator <verb> on a deploy'd Spark exploded with "uv is required" on every invocation over a non-interactive SSH session (where ~/.local/bin typically isn't on PATH), even though the venv was fully populated.

Fix: deploy.deploy() now uses uv sync --extra dev and touch .venv/.spectator-installed after the sync. Adds ~30 MB of dev-deps to the target (pytest + ruff + transitives), negligible vs the multi-GB VSS docker images.

50/50 tests pass (was 49, +1: test_deploy_remote_uv_sync_includes_dev_and_writes_install_stamp introspects deploy.deploy source to pin both new lines).