From fa06bd77e9856d335146bb0086049ea2810fe6c2 Mon Sep 17 00:00:00 2001 From: Terry Kong Date: Sun, 6 Sep 2026 16:14:24 -0700 Subject: [PATCH] fix(ci): use ++ for token_capture override in SC functional tests The SingleController L1 functional test passes token_capture.enabled=true as a plain Hydra override, but examples/nemo_gym/grpo_qwen3_30ba3b_instruct.yaml does not declare a token_capture block. Hydra composes in struct mode, so the run dies before training starts: omegaconf.errors.ConfigKeyError: Key 'token_capture' is not in struct hydra.errors.ConfigCompositionException: Could not override 'token_capture.enabled'. Use the ++ (add-or-override) prefix, matching how the same script already passes the other SingleController-only knobs to this shared Gym config (++data_plane.*, ++async_rl.*). The downstream if [[ "$*" == *token_capture.enabled=true* ]] check in grpo_async_gym_single_controller.sh still matches, so the finalize/total_ms assertion continues to run. Signed-off-by: Terry Kong --- tests/functional/L1_Functional_Tests_SingleController.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/functional/L1_Functional_Tests_SingleController.sh b/tests/functional/L1_Functional_Tests_SingleController.sh index e8488f5d1b7..5922fa9016d 100755 --- a/tests/functional/L1_Functional_Tests_SingleController.sh +++ b/tests/functional/L1_Functional_Tests_SingleController.sh @@ -181,7 +181,7 @@ run_test fast uv run --no-sync bash ./tests/functional/grpo_dp_single_controller # Token-capture (gate-authoritative) path: same SC+Gym smoke with the gate # custodying token lineage and the finalizer publishing training rows. -run_test uv run --no-sync bash ./tests/functional/grpo_async_gym_single_controller.sh token_capture.enabled=true +run_test uv run --no-sync bash ./tests/functional/grpo_async_gym_single_controller.sh ++token_capture.enabled=true cd ${PROJECT_ROOT}/tests if compgen -G ".coverage*" > /dev/null; then