Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions docker/miles-ports/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
# the build host has no docker). The script produces the real image with
# `crane append` (one layer from docker/miles-ports/make_layer.py) because the
# build host has no docker daemon. Pushed PRIVATE to
# ghcr.io/michaellchung/yeto-miles-ports:<miles7>-<sglang7>.
# ghcr.io/agentenv/yeto-miles-ports:<miles7>-<sglang7>.
#
# docker build --platform linux/amd64 -f docker/miles-ports/Dockerfile \
# --build-arg MILES_COMMIT=... --build-arg SGLANG_COMMIT=... \
Expand All @@ -18,9 +18,9 @@
# the fork sources and regenerates the version metadata.
FROM docker.io/radixark/miles@sha256:4d69750720eb1a4b99976a3fed45ed018e1fc4fff3d240667fa17d258dfc6e0c

ARG MILES_REPOSITORY=https://github.com/michaellchung/miles
ARG MILES_REPOSITORY=https://github.com/agentenv/miles
ARG MILES_COMMIT=44d41efd0a0428cb12b4ee34422de6f5e1ccb9d9
ARG SGLANG_REPOSITORY=https://github.com/michaellchung/sglang
ARG SGLANG_REPOSITORY=https://github.com/agentenv/sglang
ARG SGLANG_COMMIT=2fa880182eefdb31e64d8ea70317be27f9f32121
# setuptools-scm version of SGLANG_COMMIT (describe v0.5.20-69-g4e4148f1b);
# pinned because the one-commit clone has no tags to describe.
Expand Down
2 changes: 1 addition & 1 deletion docker/ppu-train/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ RUN git init -q /opt/miles && cd /opt/miles \
# verl fork at the commit yeto pins (yeto/rl/adapters/verl/pins.py). Its
# runtime deps are in requirements.txt; vllm is not installed (the PPU
# sampler is SGLang).
ARG VERL_REPOSITORY=https://github.com/michaellchung/verl
ARG VERL_REPOSITORY=https://github.com/agentenv/verl
ARG VERL_COMMIT=acad9875a8bdfc81afbcb0a50d146b2630f44093
RUN git init -q /opt/verl && cd /opt/verl \
&& git remote add origin "${VERL_REPOSITORY}" \
Expand Down
2 changes: 1 addition & 1 deletion docker/yeto-release/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ the base image, the tag, the layer sha256 and (after a push) the image digest.

| Date | Commit | Image | Layer |
|---|---|---|---|
| 2026-10-19 | eb516a2a | `ghcr.io/michaellchung/yeto-release@sha256:4681b4dce5ce8494101c5d4d116593572afd3fa46ca3087fa2685ff83e3d0220` | 25.96 MB, sha256 c9e2f69a… |
| 2026-10-19 | eb516a2a | `ghcr.io/agentenv/yeto-release@sha256:4681b4dce5ce8494101c5d4d116593572afd3fa46ca3087fa2685ff83e3d0220` | 25.96 MB, sha256 c9e2f69a… |

## Not verified

Expand Down
12 changes: 6 additions & 6 deletions docs/MILES_RL.md
Original file line number Diff line number Diff line change
Expand Up @@ -389,11 +389,11 @@ claimed to be optimal for every model.
either. A Modal island needs a syncer address reachable from Modal (head
public IP, or `--syncer-public-addr` under `--controller local`).
- **Images and pins** (`yeto/rl/__init__.py`). `--rl-engine ports` (default)
uses `MILES_NEXT_IMAGE` = `ghcr.io/michaellchung/yeto-miles-ports@sha256:37ac689e...`
uses `MILES_NEXT_IMAGE` = `ghcr.io/agentenv/yeto-miles-ports@sha256:37ac689e...`
(tag `c35702e-4e4148f`, linux/amd64, **public** since 2026-10-07: pulled
anonymously; a private `--rl-image` takes its login from `SKYPILOT_DOCKER_*`
or `--rl-image-private`, see `launcher.registry_login_for`), which extends the public `radixark/miles` image with the
pinned forks: Miles `MILES_NEXT_COMMIT` = `c35702ee` (michaellchung/miles
pinned forks: Miles `MILES_NEXT_COMMIT` = `c35702ee` (agentenv/miles
`yeto/ports` line) and SGLang `SGLANG_NEXT_COMMIT` = `4e4148f1`;
`/opt/yeto/image-manifest.json` records every SHA. `--rl-image` overrides the
digest. On Nebius a baked VM image holding these layers is used when the
Expand Down Expand Up @@ -782,7 +782,7 @@ launcher no longer forwards it.

| engine source | who owns the island loop |
| --- | --- |
| `michaellchung/miles` at `MILES_NEXT_COMMIT` and `michaellchung/sglang` at `SGLANG_NEXT_COMMIT`, baked into `MILES_NEXT_IMAGE` (no bundle) | Yeto's `IslandDriver`; upstream Miles is used as a library through role ports |
| `agentenv/miles` at `MILES_NEXT_COMMIT` and `agentenv/sglang` at `SGLANG_NEXT_COMMIT`, baked into `MILES_NEXT_IMAGE` (no bundle) | Yeto's `IslandDriver`; upstream Miles is used as a library through role ports |

The learner verifies its source (repository, commit, clean detached checkout,
import path) before any model is loaded
Expand Down Expand Up @@ -1321,7 +1321,7 @@ enters the algorithm hash. Each round emits `rl_advantage_transform`
### Policy-loss variants (`rl-algo-loss-variants`)

> **Status: expressible, not opened.** Route B (user decision 2026-09-30):
> the computation is a variant branch in the Miles fork (`michaellchung/miles`
> the computation is a variant branch in the Miles fork (`agentenv/miles`
> `yeto/ports`, `--policy-loss-variant`); yeto only describes, translates and
> validates. The variants arrived in fork commit 5c1b49eb; the current
> `MILES_NEXT_COMMIT` (ddce2099) descends from it and is listed in
Expand Down Expand Up @@ -1444,7 +1444,7 @@ and the image digest (this makes the single-island
All four algorithms are the Miles shared actor/critic PPO (`--advantage-estimator
ppo`; Miles derives `use_critic`) and differ only in the GAE variant, the value
loss and a few loss terms. Yeto declares, validates, translates and orchestrates;
the math lives in Miles or in the fork (`michaellchung/miles`).
the math lives in Miles or in the fork (`agentenv/miles`).

**Fork pin and overlay.** The GAE variants, the positive-example LM loss, the SAO
math, the tied-embedding critic value head and `--critic-updates-per-step` exist
Expand Down Expand Up @@ -1716,7 +1716,7 @@ which loads `fn_path` and calls it with the actor on every rank. The
trainable-state export/apply and grad-norm plugins live in Yeto. This and the
other compatibility changes (elastic M1-M6 verbs, loss variants, Qwen3.8-Next
LoRA layout, engine-failure propagation) are carried as commits on
`michaellchung/miles` `yeto/ports`; they are **not** proposed upstream
`agentenv/miles` `yeto/ports`; they are **not** proposed upstream
(radixark/miles). `MILES_NEXT_COMMIT` must name a commit carrying them,
otherwise `--rl-engine ports` refuses to start (before any Miles component or
model is created) with an error naming the pin.
Expand Down
4 changes: 2 additions & 2 deletions examples/stage1/glm5next-mini-modal-dense.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -62,8 +62,8 @@ store_access:
head: direct

images:
sampler: ghcr.io/michaellchung/yeto-miles-ports@sha256:5b9dc2a9e6e315d73dabfbc6faae428b59cc01aabec6189645a5c8c80d6e3721
trainer: ghcr.io/michaellchung/yeto-miles-ports@sha256:5b9dc2a9e6e315d73dabfbc6faae428b59cc01aabec6189645a5c8c80d6e3721
sampler: ghcr.io/agentenv/yeto-miles-ports@sha256:5b9dc2a9e6e315d73dabfbc6faae428b59cc01aabec6189645a5c8c80d6e3721
trainer: ghcr.io/agentenv/yeto-miles-ports@sha256:5b9dc2a9e6e315d73dabfbc6faae428b59cc01aabec6189645a5c8c80d6e3721
docker_device_args: [--gpus, all] # unused on Modal; the containers get the GPUs

trainer:
Expand Down
4 changes: 2 additions & 2 deletions examples/stage1/glm5next-mini-modal-g1c.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -68,8 +68,8 @@ store_access:
head: direct

images:
sampler: ghcr.io/michaellchung/yeto-miles-ports@sha256:5b9dc2a9e6e315d73dabfbc6faae428b59cc01aabec6189645a5c8c80d6e3721
trainer: ghcr.io/michaellchung/yeto-miles-ports@sha256:5b9dc2a9e6e315d73dabfbc6faae428b59cc01aabec6189645a5c8c80d6e3721
sampler: ghcr.io/agentenv/yeto-miles-ports@sha256:5b9dc2a9e6e315d73dabfbc6faae428b59cc01aabec6189645a5c8c80d6e3721
trainer: ghcr.io/agentenv/yeto-miles-ports@sha256:5b9dc2a9e6e315d73dabfbc6faae428b59cc01aabec6189645a5c8c80d6e3721
docker_device_args: [--gpus, all] # unused on Modal; the containers get the GPUs

trainer:
Expand Down
4 changes: 2 additions & 2 deletions examples/stage1/glm5next-mini-modal.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,8 @@ store_access:
head: direct

images:
sampler: ghcr.io/michaellchung/yeto-miles-ports@sha256:5b9dc2a9e6e315d73dabfbc6faae428b59cc01aabec6189645a5c8c80d6e3721
trainer: ghcr.io/michaellchung/yeto-miles-ports@sha256:5b9dc2a9e6e315d73dabfbc6faae428b59cc01aabec6189645a5c8c80d6e3721
sampler: ghcr.io/agentenv/yeto-miles-ports@sha256:5b9dc2a9e6e315d73dabfbc6faae428b59cc01aabec6189645a5c8c80d6e3721
trainer: ghcr.io/agentenv/yeto-miles-ports@sha256:5b9dc2a9e6e315d73dabfbc6faae428b59cc01aabec6189645a5c8c80d6e3721
docker_device_args: [--gpus, all] # unused on Modal; the containers get the GPUs

trainer:
Expand Down
4 changes: 2 additions & 2 deletions examples/stage1/modal-mini-inventory.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ nodes:
hbm_gib: 80
host_memory_gib: 400
mounts: {/data: /data}
image: ghcr.io/michaellchung/yeto-miles-ports@sha256:5b9dc2a9e6e315d73dabfbc6faae428b59cc01aabec6189645a5c8c80d6e3721
image: ghcr.io/agentenv/yeto-miles-ports@sha256:5b9dc2a9e6e315d73dabfbc6faae428b59cc01aabec6189645a5c8c80d6e3721
runtime: docker
roles: [trainer]
- name: modal-sampler
Expand All @@ -26,6 +26,6 @@ nodes:
hbm_gib: 80
host_memory_gib: 100
mounts: {/data: /data}
image: ghcr.io/michaellchung/yeto-miles-ports@sha256:5b9dc2a9e6e315d73dabfbc6faae428b59cc01aabec6189645a5c8c80d6e3721
image: ghcr.io/agentenv/yeto-miles-ports@sha256:5b9dc2a9e6e315d73dabfbc6faae428b59cc01aabec6189645a5c8c80d6e3721
runtime: docker
roles: [sampler]
4 changes: 2 additions & 2 deletions scripts/build_miles_ports_image.sh
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
# (default: shallow fetch into $OUT/megatron-lm)
# MILES_COMMIT / SGLANG_COMMIT override the pinned fork commits
# CRANE crane binary (go-containerregistry >= 0.20)
# DEST_REPO ghcr.io/michaellchung/yeto-miles-ports (private)
# DEST_REPO ghcr.io/agentenv/yeto-miles-ports (private)
# Registry auth: crane reads ~/.docker/config.json; nothing is printed.
# Writes: $OUT/{layer.tar,image-manifest.json,build-record.json}
set -euo pipefail
Expand All @@ -21,7 +21,7 @@ PUSH=0; [ "${1:-}" = "--push" ] && PUSH=1
CRANE=${CRANE:-crane}
MILES_SRC=${MILES_SRC:-$HOME/work/miles-next}
SGLANG_SRC=${SGLANG_SRC:-$HOME/work/sglang-next}
DEST_REPO=${DEST_REPO:-ghcr.io/michaellchung/yeto-miles-ports}
DEST_REPO=${DEST_REPO:-ghcr.io/agentenv/yeto-miles-ports}
OUT=${OUT:-$(mktemp -d /tmp/img-build-XXXXXX)}

# radixark/miles multi-arch index (upstream docker/Dockerfile at radixark
Expand Down
2 changes: 1 addition & 1 deletion scripts/build_verl_npu_image.sh
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ VLLM_ASCEND_BRANCH="releases/v0.23.0"
MINDSPEED_BRANCH="core_r0.18.0"
MEGATRON_TAG="core_v0.18.0"
TRANSFORMERS_VERSION="5.10.4"
VERL_REPOSITORY="https://github.com/michaellchung/verl"
VERL_REPOSITORY="https://github.com/agentenv/verl"
VERL_COMMIT="acad9875a8bdfc81afbcb0a50d146b2630f44093"

mkdir -p "$OUT_DIR"
Expand Down
4 changes: 2 additions & 2 deletions scripts/build_yeto_release_image.sh
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
#
# Inputs (env):
# CRANE crane binary (go-containerregistry >= 0.20)
# DEST_REPO ghcr.io/michaellchung/yeto-release
# DEST_REPO ghcr.io/agentenv/yeto-release
# OUT output directory (default: a new /tmp/yeto-release-XXXXXX)
# Registry auth: crane reads ~/.docker/config.json; nothing is printed.
# Writes: $OUT/{layer.tar,release-manifest.json,build-record.json[,image.tar]}
Expand All @@ -18,7 +18,7 @@ set -euo pipefail
cd "$(dirname "$0")/.."
PUSH=0; [ "${1:-}" = "--push" ] && PUSH=1
CRANE=${CRANE:-crane}
DEST_REPO=${DEST_REPO:-ghcr.io/michaellchung/yeto-release}
DEST_REPO=${DEST_REPO:-ghcr.io/agentenv/yeto-release}
OUT=${OUT:-$(mktemp -d /tmp/yeto-release-XXXXXX)}
PREFIX=opt/yeto/src

Expand Down
7 changes: 5 additions & 2 deletions scripts/check_miles_ports_image.sh
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,11 @@ chk sglang_version "$(sed -n 's/^__version__ = version = .\([^"'"'"']*\).*/\1/p'
chk sglang_dist_info "$(ls opt/sglang/lib/python3.12/site-packages/ | grep -c "^sglang-${SGLANG_VERSION//+/_}.*dist-info$\|^sglang-${SGLANG_VERSION}.dist-info$")" 1
chk manifest_miles "$(python3 -c 'import json;print(json.load(open("opt/yeto/image-manifest.json"))["miles"]["commit"])')" "$MILES_SHA"
chk manifest_sglang "$(python3 -c 'import json;print(json.load(open("opt/yeto/image-manifest.json"))["sglang"]["commit"])')" "$SGLANG_SHA"
chk miles_origin "$(git config -f root/miles/.git/config remote.origin.url)" "https://github.com/michaellchung/miles"
chk sglang_origin "$(git config -f sgl-workspace/sglang/.git/config remote.origin.url)" "https://github.com/michaellchung/sglang"
# Images built before 2026-10-22 carry the forks' former home (michaellchung);
# the SHAs are the same on agentenv.
chk_origin() { case "$2" in "https://github.com/agentenv/$3"|"https://github.com/michaellchung/$3") chk "$1" "$2" "$2" ;; *) chk "$1" "$2" "https://github.com/agentenv/$3" ;; esac; }
chk_origin miles_origin "$(git config -f root/miles/.git/config remote.origin.url)" miles
chk_origin sglang_origin "$(git config -f sgl-workspace/sglang/.git/config remote.origin.url)" sglang
chk m3_lora_plugin_present "$(test -f root/miles/miles_plugins/models/qwen3_8_next/lora.py && echo yes)" yes
chk qwen4exp_lora_hooks "$(grep -c supported_lora_modules sgl-workspace/sglang/python/sglang/srt/models/qwen4_exp.py | awk '{print ($1>0)?"yes":"no"}')" yes
chk a27_workers_lost "$(grep -c workers_lost root/miles/miles/utils/workers/ray_worker_manager.py | awk '{print ($1>0)?"yes":"no"}')" yes
Expand Down
2 changes: 1 addition & 1 deletion scripts/modal_qwen3_8_next_4layer_lora.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
import modal

IMAGE = (
"ghcr.io/michaellchung/yeto-miles-ports:c35702e-4e4148f"
"ghcr.io/agentenv/yeto-miles-ports:c35702e-4e4148f"
"@sha256:37ac689e29caeecf9faf8587a3ad58c154ecffc7798711d5bd59d792d002b9f9"
)
ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
Expand Down
2 changes: 1 addition & 1 deletion tests/rl_loss_variant_reference.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
"""Independent reference formulas for rl-algo-loss-variants (design D3, task 2.1).

Written from the papers with plain torch on small tensors; imports neither
yeto nor miles, so it can check the Miles fork (``michaellchung/miles``
yeto nor miles, so it can check the Miles fork (``agentenv/miles``
``--policy-loss-variant``) and yeto's translation without sharing code.

Notation: rho_t = exp(logp_t - old_logp_t), A_t the advantage, mask the loss
Expand Down
41 changes: 39 additions & 2 deletions tests/test_rl_engine_pins.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ def test_legacy_pins_and_bundle_are_gone():

def _assert_ports_checkout(script: str, path: str) -> None:
lowered = script.lower()
assert "bundle" not in lowered and "agentenv" not in lowered
assert "bundle" not in lowered and "michaellchung" not in lowered
for repository, commit, name in (
(rl.MILES_NEXT_REPOSITORY, rl.MILES_NEXT_COMMIT, "miles"),
(rl.SGLANG_NEXT_REPOSITORY, rl.SGLANG_NEXT_COMMIT, "sglang"),
Expand Down Expand Up @@ -114,10 +114,47 @@ def test_verify_miles_revision_ports_rejects_commit_mismatch(tmp_path, monkeypat
verify(tmp_path, expected=rl.MILES_NEXT_PINS)


def test_miles_fork_lives_on_agentenv():
from yeto.rl.adapters.miles import pins

assert rl.MILES_NEXT_REPOSITORY == "https://github.com/agentenv/miles"
assert rl.SGLANG_NEXT_REPOSITORY == "https://github.com/agentenv/sglang"
assert rl.MILES_NEXT_IMAGE.startswith("docker:ghcr.io/agentenv/yeto-miles-ports@sha256:")
assert rl.MILES_NEXT_PINS.former_repositories == pins.MILES_NEXT_FORMER_REPOSITORIES


@pytest.mark.parametrize(
"origin",
[
"https://github.com/agentenv/miles",
"https://github.com/agentenv/miles.git",
# Images built before the move keep the former origin in /root/miles.
"https://github.com/michaellchung/miles",
"https://github.com/michaellchung/miles.git/",
],
)
def test_verify_miles_revision_accepts_current_and_former_origin(
tmp_path, monkeypatch, origin
):
verify, _ = _fake_git(monkeypatch, tmp_path, commit=rl.MILES_NEXT_COMMIT, origin=origin)
assert verify(tmp_path, expected=rl.MILES_NEXT_PINS) == tmp_path.resolve()


def test_island_commit_override_keeps_former_origins():
from types import SimpleNamespace

from yeto.rl.adapters.miles.island_entry import miles_revision_pins

pins = miles_revision_pins(SimpleNamespace(miles_commit="a" * 40))
assert pins.repository == rl.MILES_NEXT_REPOSITORY
assert pins.accepts_origin("https://github.com/michaellchung/miles.git")
assert not pins.accepts_origin("https://github.com/radixark/miles")


def test_verify_miles_revision_ports_rejects_origin_mismatch(tmp_path, monkeypatch):
verify, _ = _fake_git(
monkeypatch, tmp_path, commit=rl.MILES_NEXT_COMMIT,
origin="https://github.com/agentenv/miles"
origin="https://github.com/radixark/miles"
)
with pytest.raises(RuntimeError, match="origin mismatch"):
verify(tmp_path, expected=rl.MILES_NEXT_PINS)
Expand Down
2 changes: 1 addition & 1 deletion tests/test_rl_engine_selection.py
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,7 @@ def test_rl_image_default_is_the_ports_image(monkeypatch):
ports = _cli(("--rl-engine", "ports"))
_prepare_rl_args(ports)
assert ports.rl_image == MILES_NEXT_IMAGE
assert "ghcr.io/agentenv" not in ports.rl_image
assert "/yeto-miles-ports@sha256:" in ports.rl_image # not the legacy agentenv/miles image
assert _island_task(ports, monkeypatch).resources.image_id == MILES_NEXT_IMAGE
explicit = "docker:example/miles@sha256:" + "e" * 64
pinned = _cli(("--rl-engine", "ports", "--rl-image", explicit))
Expand Down
2 changes: 1 addition & 1 deletion tests/test_rl_ports_image.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ def login(monkeypatch):
def test_ports_image_is_the_private_digest_pinned_fork_image():
assert rl.default_rl_image() == rl.MILES_NEXT_IMAGE
assert re.fullmatch(
r"docker:ghcr\.io/(michaellchung|agentenv)/yeto-miles-ports@sha256:[0-9a-f]{64}",
r"docker:ghcr\.io/agentenv/yeto-miles-ports@sha256:[0-9a-f]{64}",
rl.MILES_NEXT_IMAGE,
)
assert rl.MILES_NEXT_BASE_IMAGE.startswith("docker:docker.io/radixark/miles@sha256:")
Expand Down
2 changes: 1 addition & 1 deletion tests/test_rl_reconfig_e1.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
"""rl-infra-spec 3.1-3.7 (E1) CPU tests: journal, ledger, controller, driver safe point.

The fakes below model the fork's membership contract (michaellchung/miles
The fakes below model the fork's membership contract (agentenv/miles
yeto/ports 0af62f4d: epoch CAS, idempotent repeat right after commit,
``incomplete`` after a half-failed stop, cordon/in-flight drain, cordoned
admission). They are CPU stand-ins for protocol tests only; the GPU
Expand Down
2 changes: 1 addition & 1 deletion tools/probes/e2_cut_harness.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ def _current_miles_commit() -> str:
raise RuntimeError("cannot find MILES_NEXT_COMMIT in yeto/rl/adapters/miles/pins.py")
return m.group(1)

IMAGE = f"ghcr.io/michaellchung/yeto-miles-ports@{IMAGE_DIGEST}"
IMAGE = f"ghcr.io/agentenv/yeto-miles-ports@{IMAGE_DIGEST}"
MILES_COMMIT = _current_miles_commit()
IMAGE_TAG = f"{MILES_COMMIT[:7]}@{IMAGE_DIGEST[7:15]}" # label only; the digest is the pin
MODELS = {
Expand Down
2 changes: 1 addition & 1 deletion tools/probes/s25_g1/image_probe.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import modal

# Same digest as yeto.rl.adapters.miles.pins.MILES_NEXT_IMAGE (the container has no yeto).
MILES_NEXT_IMAGE = ("docker:ghcr.io/michaellchung/yeto-miles-ports@sha256:"
MILES_NEXT_IMAGE = ("docker:ghcr.io/agentenv/yeto-miles-ports@sha256:"
"5b9dc2a9e6e315d73dabfbc6faae428b59cc01aabec6189645a5c8c80d6e3721")

app = modal.App("yeto-s25-g1-probe")
Expand Down
2 changes: 1 addition & 1 deletion tools/probes/s25_g1/modal_app.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@
# T-G1B: YETO_G1_PLAN=examples/stage1/glm5next-mini-modal-dense.yaml (set at deploy time;
# the image env carries it into every container, so all of them plan the same file)
PLAN = os.environ.get("YETO_G1_PLAN", "examples/stage1/glm5next-mini-modal.yaml")
IMAGE = ("ghcr.io/michaellchung/yeto-miles-ports@sha256:"
IMAGE = ("ghcr.io/agentenv/yeto-miles-ports@sha256:"
"5b9dc2a9e6e315d73dabfbc6faae428b59cc01aabec6189645a5c8c80d6e3721")
MILES_COMMIT = "1618b5c38db80e17ec928cfa47fe832cb18565fc" # s25-distopt
MODELS_VOLUME, STORE_VOLUME = "yeto-s25-g1-models", "yeto-s25-g1-store"
Expand Down
2 changes: 1 addition & 1 deletion yeto/rl/adapters/miles/algorithm_flags.py
Original file line number Diff line number Diff line change
Expand Up @@ -249,7 +249,7 @@ def _builtin_rows() -> list[FlagMapping]:
# (arguments.py:3194-3199), i.e. arbitrary overrides incl. use_tis/eps_clip:
# it would bypass the spec entirely, so it is refused like any unmapped flag.
"--custom-config-path",
# Miles fork (michaellchung/miles yeto/ports, rl-algo-loss-variants route
# Miles fork (agentenv/miles yeto/ports, rl-algo-loss-variants route
# B): mapped by yeto.rl.algos.loss_variants; listed here so they are
# adapter-owned from import time. Upstream only once the pin carries them
# (loss_variants.FORK_COMMITS).
Expand Down
10 changes: 8 additions & 2 deletions yeto/rl/adapters/miles/island_entry.py
Original file line number Diff line number Diff line change
Expand Up @@ -1108,14 +1108,20 @@ def miles_revision_pins(args: Any) -> Any:
"""The Miles commit the island checks for ``--miles-commit`` (full SHA); None
without it (``verify_miles_revision`` then checks the pinned MILES_NEXT_PINS)."""
from yeto.provenance import is_immutable_commit
from yeto.rl.adapters.miles.pins import MILES_NEXT_REPOSITORY, MilesRevisionPins
from yeto.rl.adapters.miles.pins import (
MILES_NEXT_FORMER_REPOSITORIES,
MILES_NEXT_REPOSITORY,
MilesRevisionPins,
)

commit = getattr(args, "miles_commit", None)
if not commit:
return None
if not is_immutable_commit(commit) or len(str(commit)) != 40:
raise ValueError(f"--miles-commit must be a full 40-hex commit, got {commit!r}")
return MilesRevisionPins(MILES_NEXT_REPOSITORY, str(commit).lower())
return MilesRevisionPins(
MILES_NEXT_REPOSITORY, str(commit).lower(), MILES_NEXT_FORMER_REPOSITORIES
)


def _preflight_codex_harness(args) -> None:
Expand Down
Loading
Loading