Skip to content

feat(rlix-validation): C24 — fail fast on RLix + experimental rollout refactor#33

Open
JunzheJoe wants to merge 1 commit into
zhenyu/m11-mvp-testfrom
joe/rlix-forbid-experimental-refactor
Open

feat(rlix-validation): C24 — fail fast on RLix + experimental rollout refactor#33
JunzheJoe wants to merge 1 commit into
zhenyu/m11-mvp-testfrom
joe/rlix-forbid-experimental-refactor

Conversation

@JunzheJoe

Copy link
Copy Markdown

What

Review finding F9-REFACTOR-HOOKS (F1-F12 code review).

RolloutManager._get_rollout_data only threads rlix_hooks through the legacy call_rollout_fn path; the experimental refactor's call_rollout_function does not accept them. Under RLix mode with MILES_EXPERIMENTAL_ROLLOUT_REFACTOR=1, that silently kills the entire F9 progress channel:

  • begin_progress_batch / bump_completed fall back to NoOpRLixHooks — the coordinator never sees rollout progress
  • clear_progress_stream never fires, so the scheduler's rollout_open_pipelines entry lingers with a stale demand estimate
  • nothing crashes, so the misconfiguration is invisible (mitigated only by the signal_rollout_demand pre-signal path, which prevents the hang but not the degradation)

None of the C1-C23 startup checks guarded this combination.

Fix

Add C24 to assert_rlix_topology, same fail-fast discipline as the existing checks: RLIX_CONTROL_PLANE=rlix + MILES_EXPERIMENTAL_ROLLOUT_REFACTOR=1 is rejected at startup with a message pointing at the two ways out (unset the env, or thread rlix_hooks through call_rollout_function first).

Scoping notes:

  • rlix-scoped: standalone runs keep the experimental refactor fully available (the fast-test conftest's autouse MILES_EXPERIMENTAL_ROLLOUT_REFACTOR=1 is unaffected — those tests don't set RLIX_CONTROL_PLANE)
  • temporary by design: the guard should be deleted in the same PR that threads rlix_hooks through the refactored path

Tests

tests/fast/utils/test_rlix_validation_refactor_guard.py (stdlib-only, same style as test_rlix_offload_defaults.py):

  • rlix + refactor → raises C24
  • rlix without refactor → full C1-C23 pass (tmpfs checks monkeypatched for non-Linux dev hosts)
  • standalone + refactor → not gated

8 passed locally (3 new + the 5 existing test_rlix_offload_defaults ones).

… refactor

RolloutManager._get_rollout_data only threads rlix_hooks through the
legacy call_rollout_fn path; the experimental refactor's
call_rollout_function does not accept them. Under RLix that silently
kills the whole F9 progress channel: begin_progress_batch /
bump_completed no-op, clear_progress_stream never fires, and the
scheduler's rollout_open_pipelines entry lingers with a stale demand
estimate. Nothing crashes, so the misconfiguration is invisible.

Add C24 to assert_rlix_topology (same fail-fast discipline as C1-C23):
RLIX_CONTROL_PLANE=rlix + MILES_EXPERIMENTAL_ROLLOUT_REFACTOR=1 is
rejected at startup with a message pointing at the two ways out. The
guard is rlix-scoped — standalone keeps the refactor available — and is
meant to be deleted once the refactored path threads rlix_hooks.

Tests: tests/fast/utils/test_rlix_validation_refactor_guard.py
(stdlib-only, same style as test_rlix_offload_defaults.py).
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