diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5e243a3..d9bd73c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -54,3 +54,24 @@ jobs: - name: Test run: uv run pytest -q + + # plugrl-protocol's probe checker, with this client running the probe + # environment (SPEC.md section 8.1). It works out from each feedback + # what the client did with each action, and drives every scenario: + # basic, a resync, a text frame. Once as a version 1 server, once + # offering reuse-feedback-obs (10.1), which this client then uses. + # Each run takes seconds. One run on 2026-10-01 hung until the job's + # 6-hour limit and left no log (not reproduced on a Linux workstation), + # so a hang now fails within minutes and shows what was still running. + - name: Probe this client against SPEC.md + timeout-minutes: 10 + run: | + client=".venv/bin/plugrl-run-env-client probe-v1 --server-host 127.0.0.1 --server-port 8000 --num-envs 3 --num-episodes 1000000" + for features in "" "--features reuse-feedback-obs"; do + echo "::group::plugrl-conformance --probe ${features:-(no features)}" + timeout 240 uv run plugrl-conformance --probe --scenario all --port 8000 \ + --steps 12 --horizon 4 --action-dim 3 --action-dtype float64 \ + --timeout 60 $features --client "$client" \ + || { rc=$?; echo "plugrl-conformance exited $rc"; ps -ef | grep -i "[p]lugrl"; exit $rc; } + echo "::endgroup::" + done diff --git a/pyproject.toml b/pyproject.toml index 7f753b0..b76ad64 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -17,7 +17,7 @@ dependencies = [ "websockets>=15.0.1,<16.0.0", "msgpack>=1.1.1,<2.0.0", "tyro>=0.9.31,<0.10.0", - "plugrl-protocol @ git+https://github.com/PlugRL/plugrl-protocol.git@4c877bc9929fadbf49fbce8a5cd7d141bb3566a3", + "plugrl-protocol @ git+https://github.com/PlugRL/plugrl-protocol.git@0a76192cc2456ee1136c5cbabe5206ca75e38f98", # The recorder's PNG snapshots. Its mp4 videos need ffmpeg: the `video` # extra. "imageio>=2.37.2,<3.0.0", diff --git a/uv.lock b/uv.lock index f8225b3..b6f97f2 100644 --- a/uv.lock +++ b/uv.lock @@ -2388,7 +2388,7 @@ requires-dist = [ { name = "mujoco", marker = "extra == 'libero'", specifier = "==2.3.7" }, { name = "mujoco", marker = "extra == 'robomimic'", specifier = "==2.3.7" }, { name = "patchelf", marker = "extra == 'd4rl'", specifier = ">=0.17.2.4,<0.18.0" }, - { name = "plugrl-protocol", git = "https://github.com/PlugRL/plugrl-protocol.git?rev=4c877bc9929fadbf49fbce8a5cd7d141bb3566a3" }, + { name = "plugrl-protocol", git = "https://github.com/PlugRL/plugrl-protocol.git?rev=0a76192cc2456ee1136c5cbabe5206ca75e38f98" }, { name = "pyopengl", marker = "extra == 'robomimic'", specifier = "==3.1.4" }, { name = "robomimic", marker = "extra == 'robomimic'", git = "https://github.com/ARISE-Initiative/robomimic.git?rev=v0.4.0" }, { name = "robosuite", marker = "extra == 'robomimic'", specifier = "==1.4.1" }, @@ -2407,7 +2407,7 @@ dev = [ [[package]] name = "plugrl-protocol" version = "0.1.0" -source = { git = "https://github.com/PlugRL/plugrl-protocol.git?rev=4c877bc9929fadbf49fbce8a5cd7d141bb3566a3#4c877bc9929fadbf49fbce8a5cd7d141bb3566a3" } +source = { git = "https://github.com/PlugRL/plugrl-protocol.git?rev=0a76192cc2456ee1136c5cbabe5206ca75e38f98#0a76192cc2456ee1136c5cbabe5206ca75e38f98" } dependencies = [ { name = "msgpack" }, { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' or (extra == 'extra-17-plugrl-env-client-libero' and extra == 'extra-17-plugrl-env-client-mujoco') or (extra == 'extra-17-plugrl-env-client-mujoco' and extra == 'extra-17-plugrl-env-client-robomimic')" },