Add pi05_libero hosting support + split flash-transport into local packages#6
Merged
Conversation
Adds LIBERO observation factory + image specs to warmup.py, makes prepare-checkpoint's required asset id configurable (so libero's physical-intelligence/libero norm stats can be verified), threads a matching Terraform variable through the cloud-init bootstrap, and adds an --embodiment flag to the QUIC/WS smoke tests so they can target a libero deployment end-to-end. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Drops the dead asset_id fallback block in get_warmup_observation_spec (every registered openpi config matches the class-name tier; the fallback never fired in production), inlines the per-embodiment random_observation_* helpers into the dispatcher, and dedupes the EmbodimentChoice literal so the CLI imports the canonical type from tests.helpers instead of redeclaring it. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…ain guard - Extract hosting/flash_transport_* into two editable local packages under packages/: openpi-flash-transport (transport + codec, numpy-only) and openpi-flash-client (FlashTransportPolicy + openpi-client adapter). - Reduce src/hosting/<same-names>.py to thin compatibility re-exports so existing callers continue to import from hosting.* unchanged. - Migrate direct internal consumers (serve.py, local_policy_socket_server, tests/*) to the new package paths. - Harden FlashTransportPolicy: close-on-init-failure, idempotent close(), __del__ finalizer, no hard import of quic_portal at module scope. - Add tool.uv.exclude-newer = "7 days" across the three pyproject files to refuse PyPI releases younger than 7 days; relock under the new constraint. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The base stage's uv sync was bind-mounting only hosting/uv.lock,
pyproject.toml, and the sibling openpi paths. After the split into
packages/openpi-flash-transport and packages/openpi-flash-client, uv sync
--frozen could no longer locate those editable sources and the CI base
image build failed with:
Distribution not found at: file:///build/hosting/packages/openpi-flash-transport
Add bind mounts for each new package's pyproject.toml and src/ so the
lockfile resolves, then COPY their src/ into /app at runtime and append
the paths to PYTHONPATH so imports work past the bind-mount layer.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Extracts three commits from
experiments/subtask-probethat are scoped to the hosting layer (no experiments/ content).0507769Add first-class pi05_libero support to hosting layer — wires pi05_libero through the dispatch / warmup / config surface.50076dbTighten libero dispatch surface — follow-up cleanup.a98802cSplit flash-transport Python into local packages + add uv supply-chain guard — moves the QUIC transport codec into two editable packages underpackages/(openpi-flash-transport,openpi-flash-client), reduces the oldsrc/hosting/flash_transport_*modules to compat re-exports, hardensFlashTransportPolicy(init-failure cleanup, idempotent close, no module-scopequic_portalimport), and addstool.uv.exclude-newer = "7 days"across the three pyproject files.Test plan
uv synccleanhosting.flash_transport_policy.FlashTransportPolicy is openpi_flash_client.FlashTransportPolicyuv run ruff check/ruff format --checkcleanuv run pytest tests/test_local_frame.py tests/test_arrow_wire.py— 14/14 passedserve.pyinstance and confirm aFlashTransportPolicyclient still connects via the compat shim🤖 Generated with Claude Code