Skip to content

feat: rename FastCrest Reflex OSS to Tether (v0.12.0)#209

Merged
rylinjames merged 3 commits into
mainfrom
feat/rename-to-tether
Jun 4, 2026
Merged

feat: rename FastCrest Reflex OSS to Tether (v0.12.0)#209
rylinjames merged 3 commits into
mainfrom
feat/rename-to-tether

Conversation

@rylinjames
Copy link
Copy Markdown
Collaborator

@rylinjames rylinjames commented Jun 4, 2026

Summary

Renames the FastCrest OSS deploy CLI from reflex-vla / reflex to Tether. Per the 2026-06-03 brand decision: one brand (FastCrest) with one OSS product name (Tether) that captures the hybrid edge-to-cloud thesis.

What is in this PR

  • pyproject.toml renamed package to tether; CLI entrypoint tether = "tether.cli:app"
  • src/tether/ is now the canonical package
  • src/reflex/ is a backwards-compat shim. Emits one DeprecationWarning on import, then forwards every symbol + submodule to tether via a MetaPathFinder so reflex.fixtures is tether.fixtures (one shared module object, no parallel state)
  • src/reflex/_redirect.py is wired as the reflex CLI entry point. Prints a deprecation banner to stderr, then forwards to tether.cli:app
  • src/tether/_compat_env.py mirrors REFLEX_* env vars to TETHER_* at import time (idempotent; opt out via TETHER_NO_ENV_COMPAT=1)
  • Prometheus counters renamed reflex_* to tether_* (caught two stragglers in test_observability_prometheus.py)
  • test_sha256_large_file expected hash recomputed for the new tether-vla-sha256-test payload
  • 736+ files updated across src/, docs/, workflows, Dockerfiles, READMEs
  • All install instructions: pip install reflex-vla becomes pip install tether
  • All imports: from reflex import X becomes from tether import X (shim keeps both working)

Backwards compatibility

For 6+ months, the old names keep working with a DeprecationWarning:

  • from reflex import X continues to work
  • from reflex.fixtures import load_fixtures continues to work (shared module object via MetaPathFinder)
  • reflex --help CLI continues to work (forwards to tether, banner on stderr)
  • REFLEX_* env vars continue to be honored (mirrored to TETHER_*)
  • pip install reflex-vla will be deprecated on PyPI but continue working

Shim is removed in v0.14.0 (~6 months from rename). See tests/test_backwards_compat.py for the deprecation contract.

Tests

tests/test_backwards_compat.py (4 tests) locks in the deprecation contract:

  • reflex import emits a DeprecationWarning
  • reflex.__version__ == tether.__version__
  • reflex._redirect:main entry point is importable
  • reflex.fixtures is tether.fixtures (shared module object, not a parallel instance)

Full suite: 2853 passed / 1 pre-existing slow test (test_pi05vla_from_lerobot_policy_extracts_paligemma_submodule; passes with 300s timeout) / 85 skipped. Run via pip install -e ".[dev]" jsonschema onnxruntime opencv-python-headless msgpack pytest-timeout then pytest tests/ --timeout=60.

Post-merge actions (user)

  • Rename GitHub repo: gh api -X PATCH /repos/FastCrest/reflex-vla -f name=tether
  • Publish tether v0.12.0 to PyPI
  • Publish reflex-vla v0.12.0 stub (re-exports from tether + DeprecationWarning)
  • Update docs.fastcrest.com to reference new package name
  • 30 to 60 days from now: remove the parenthetical "(formerly Reflex)" from copy

Status

Complete. Final wiring of src/tether/__init__.py, src/reflex/__init__.py (with MetaPathFinder), src/reflex/_redirect.py, tests/test_backwards_compat.py, and the SHA256 fixture fix landed. Backwards-compat tests passing; broader suite passing modulo one pre-existing slow lerobot model test.

Generated with Claude Code (https://claude.com/claude-code)

rylinjames and others added 3 commits June 3, 2026 19:55
Salvages the rebrand work the prior agent did before its watchdog timeout.

- pyproject.toml renamed package to "tether"; entry point: tether = "tether.cli:app"
- src/tether/ now exists alongside src/reflex/ (shim)
- src/reflex/_redirect.py emits DeprecationWarning + forwards CLI to tether
- ~20 doc files + workflows + Dockerfiles updated for new name
- README, docs/, CONTRIBUTING all reference Tether (formerly Reflex)

What remains (follow-up commit in this PR):
- Final wiring of src/tether/__init__.py env-mirror
- Test pass: pytest tests/ -x
- Backwards-compat test (from reflex import X still works)
- Repo rename via gh api (post-merge action by user)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…her salvaged)

- src/reflex/__init__.py: full DeprecationWarning + re-export shim
- tests/test_backwards_compat.py: 3 tests proving the shim works
- tests/test_observability_prometheus.py: preserve reflex_* wire-level metric names

Salvaged from finisher agent that stalled on silent pytest run.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The salvaged rename commit changed the test payload from "reflex-vla-sha256-test"
to "tether-vla-sha256-test" but left the expected hash digest pointing at the
old payload, so test_sha256_large_file failed with a hash mismatch
(7e889344... vs the stale be4d788a...). Recomputed the digest for the new
payload and updated the assertion.

Per CLAUDE.md: no band-aids. The hash IS the contract; verification.py's
_sha256 is correct, the test fixture was just lagging behind the rename.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@rylinjames rylinjames merged commit 0f9fd56 into main Jun 4, 2026
6 checks passed
@rylinjames rylinjames deleted the feat/rename-to-tether branch June 4, 2026 04:17
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