Skip to content

fix: finish the v0.12.0 Reflex→Tether rename (repair tether-vla breakage + stale reflex text)#221

Merged
rylinjames merged 1 commit into
mainfrom
fix/reflex-leftovers-post-rename
Jun 10, 2026
Merged

fix: finish the v0.12.0 Reflex→Tether rename (repair tether-vla breakage + stale reflex text)#221
rylinjames merged 1 commit into
mainfrom
fix/reflex-leftovers-post-rename

Conversation

@rylinjames

Copy link
Copy Markdown
Collaborator

Why

The v0.12.0 rename sed'd reflex-vlatether-vla, but nothing is named tether-vla: the PyPI package is tether (pyproject) and the repo is FastCrest/tether. github.com/FastCrest/tether-vla 404s and pypi.org/project/tether-vla doesn't exist — so the upgrade checker, generated CI templates, ~56 Modal scripts' git installs, the SBOM identity, and the public README hero image were all broken. Plus a long tail of current-tense reflex commands in help text, docs, infra runbooks, contrib, and launch drafts.

Functional repairs

  • upgrade_check.py — PyPI lookup + distribution() now use tether (was silently dead)
  • cli.py — removed from reflex.embodiments… shim imports that made our own CLI emit DeprecationWarnings to users; fixed GitHub URLs + install hints
  • ci_template.py — generated workflows no longer install from a 404 URL
  • scripts/modal_*.py — git URLs → FastCrest/tether; requirement egg names → tether[...]; historical pins restored to the actually-published artifacts (reflex-vla==0.6.0, ghcr.io/fastcrest/reflex-vla:0.2.0) with comments
  • README — hero gif referenced assets/tether-tweet.gif which didn't exist (live 404); gifs renamed, assets/README flags both as pre-rename recordings needing re-record. Also tether-vlatether in badges/install (11×)
  • pro/fingerprint.py — restored pre-rename salt: the rename rotated it, which would break Pro license node binding for 0.11.x pilots on upgrade (wire contract, now documented inline)
  • comply/sbom.py — SBOM purl/name matches the publishable dist
  • install_digest.py — aggregates reflex-vla (all published downloads) + tether (post-publish)

Branding sweep

help text, so_arm100 docstrings/errors, pyproject comments, examples, launch/ drafts (unpublished), outreach doc, GOALS.yaml checks (src/reflex → src/tether so they evaluate again), infra runbooks, contrib/ros2 (ReflexClientTetherClient), dashboards/reflex_fleet.json → tether_fleet.json, OTel service name → tether.

Deliberately kept (wire contracts / compat)

src/reflex shim + reflex entry point, REFLEX_* env compat, reflex_version cert field, reflex_* Prometheus metrics, REFLEX-XXXX license prefix, D1 database/worker names, CHANGELOG history, reflex_context vault refs.

🤖 Generated with Claude Code

…he rename introduced

The v0.12.0 rename sed'd 'reflex-vla' to 'tether-vla' in many places, but
neither the PyPI package (it's 'tether', per pyproject) nor the GitHub repo
(FastCrest/tether) is named tether-vla. github.com/FastCrest/tether-vla 404s
and pypi.org/project/tether-vla does not exist, so everything that referenced
them was broken. It also left current-tense 'reflex' commands in user-facing
help text, docs, and infra runbooks.

Functional fixes (were broken):
- upgrade_check.py: PyPI URL + distribution() looked up 'tether-vla' ->
  upgrade check could never fire; now 'tether'
- cli.py: shim imports 'from reflex.embodiments...' made tether's own CLI
  emit DeprecationWarnings to users; now imports tether.* directly. Also
  fixed GitHub URLs, install hints, doctor component label
- ci_template.py: generated CI installed from the 404 tether-vla repo URL
- scripts/modal_*.py (56 files): git+ install URLs pointed at the 404
  FastCrest/tether-vla; egg names 'tether-vla[...]' mismatched the real
  dist name. Historical pins restored to the actually-published artifacts
  (reflex-vla==0.6.0, ghcr.io/fastcrest/reflex-vla:0.2.0) with comments
- README hero image referenced assets/tether-tweet.gif which didn't exist
  (404 on the public README); gifs renamed to match. assets/README notes
  both recordings pre-date the rename and need re-recording
- comply/sbom.py: SBOM purl/name now matches the publishable dist 'tether'
- install_digest.py: pypistats now aggregates reflex-vla (where all
  published downloads live) + tether (post-publish)
- pro/fingerprint.py: restore the pre-rename salt b'reflex-vla:pro-
  fingerprint:v1' — the rename rotated it, which would break Pro license
  node binding for 0.11.x pilots on upgrade. Wire contract, documented

Text/branding fixes (stale 'reflex'):
- pyproject extras comments, so_arm100 docstrings + error messages,
  cli.py help text, examples/so_arm100_smolvla.py
- launch/ drafts (unpublished), outreach/gmi doc, GOALS.yaml checks
  (src/reflex paths -> src/tether so the checks evaluate again)
- infra/ worker READMEs + deploy.sh operator instructions (D1 names,
  worker URLs, reflex_version JSON field kept — deployed contracts)
- contrib/ros2: reflex_client.py -> tether_client.py, ReflexClient ->
  TetherClient, shim import fixed
- dashboards/reflex_fleet.json -> tether_fleet.json (description text
  only; reflex_* Prometheus metric names kept — customer wire contract)
- OTel service name 'tether-vla' -> 'tether' (+ docs/otel.md)

Deliberately kept: src/reflex shim + reflex entry point, REFLEX_* env
compat, CHANGELOG history, reflex_version cert field, reflex_* metrics,
REFLEX-XXXX license code prefix, reflex_context vault references.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@rylinjames rylinjames merged commit 3fee474 into main Jun 10, 2026
6 checks passed
@rylinjames rylinjames deleted the fix/reflex-leftovers-post-rename branch June 10, 2026 07:39
rylinjames added a commit that referenced this pull request Jun 10, 2026
…blocked on PyPI) (#222)

* release: set PyPI distribution name to fastcrest-tether (the bare 'tether' name is blocked on PyPI)

PyPI rejects the project name 'tether' ('isn't allowed' — reserved/blocked,
not merely taken). Published v0.12.0 as 'fastcrest-tether' instead. The import
package ('import tether') and the CLI command ('tether ...') are unchanged —
only the pip distribution name differs, the same dist/command split reflex-vla
already used.

- pyproject: name = 'fastcrest-tether'
- All 'pip install tether[...]' / 'tether @ git+...' specs across README,
  docs, install.sh, examples, launch, contrib, ci_template, and the Modal
  scripts -> 'fastcrest-tether' (CLI commands 'tether ...' left untouched)
- PyPI badges + pypistats package -> fastcrest-tether
- Functional metadata lookups rewired to the real dist name so they don't
  silently break (same bug class as #221): upgrade_check distribution(),
  bench/eval report version(), calibration _safe_pkg_version, agent/hardware
  _package_version (JSON key 'tether_version' kept), comply/sbom purl+name,
  doctor component label, telemetry User-Agent, install_digest PACKAGES

Kept as 'tether': import package, CLI command + entry point, git repo +
clone dir (FastCrest/tether), GHCR image, OTel service name, TETHER_* env,
'tether_version' wire field, src/reflex compat shim.

Published: https://pypi.org/project/fastcrest-tether/0.12.0/

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* ci(doctor-smoke): wheel glob dist/tether-*.whl -> dist/fastcrest_tether-*.whl

The dist-name change renamed the built wheel to fastcrest_tether-0.12.0-*.whl,
so the doctor-smoke install step's hardcoded dist/tether-*.whl glob matched
nothing ('ls: cannot access dist/tether-*.whl'). Update to the new filename.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant