Repository navigation
[NVBug 6847461] Fix slash-named harness import that crashes nested conversational simulation stack #4497
Description
Queue rank 10/48 · Difficulty 2/5 · Status on main: partially_fixed
NVBug: https://nvbugspro.nvidia.com/bug/6847461 · NVBug priority: Unprioritized · ARB: Ananth Subramaniam
GitHub: #4464 (merged, fixes blocker 1) · #3711 (introduced blocker 2) · no PR yet for blocker 2
Summary
The nested 3-level agent conversational_tool_use/simulation could not start from a source checkout. Two blockers were reported. Blocker 1 (venv misdetected as a wheel install) is now fixed on main. Blocker 2 (model server crashes importing a slash-named harness) is still present, so the stack still fails to start and the QA testcase still fails.
Reproduction
gym env start --config resources_servers/conversational_tool_use_simulation/configs/conversational_tool_use_simulation.yaml --model-type openai_model --model-url "$MODEL_BASE_URL" --model "$MODEL_NAME" '+policy_api_key=${oc.env:MODEL_API_KEY}'
Or QA: testcases/environments/conversational_tool_use_simulation.py.
Root cause
- Blocker 1 (fixed):
setup_command.pydetected editable layout with a two-levelpyproject.tomlprobe; the 3-level agent dir failed it, so the non-editable branch pinnednemo-gym==<version>, unresolvable on PyPI. - Blocker 2 (open):
server_utils.py:748import_module(f"responses_api_agents.{harness}")withharness="conversational_tool_use/simulation"raisesModuleNotFoundError; the policy_model server dies atbase_responses_api_model.py:285duringsetup_webserver.
Status on main (partially_fixed)
nemo_gym/cli/setup_command.py:181nowany((dir_path.resolve() / up / "pyproject.toml").exists() for up in ("../..", "../../.."))— blocker 1 fixed by fix(cli): treat servers nested three levels deep as editable installs #4464 (ac8057c, merged 2026-10-12).nemo_gym/server_utils.py:748still imports the raw slash key (added by [1/5] feat(opencode): link assistant messages to captured model calls #3711, 31bbba1; PR merged 2026-09-28, landed on main 2026-10-06; unchanged). Config harness keyconversational_tool_use/simulationpresent at yaml:54. Crash path confirmed; blocker 2 NOT fixed.
Proposed fix
nemo_gym/server_utils.py:import_module("responses_api_agents." + harness.replace("/", ".")).- Add a unit test for
assistant_message_headerwith a slash harness key. - By inspection (not executed),
domain_generationandscenario_generationharnesses have the same exposure (they bindmodel_server);policy_tool_generationuses other model-server keys.
Validation
- Unit: new
assistant_message_headerslash-key test (no GPU). - E2E: re-run
testcases/environments/conversational_tool_use_simulation.pywith a live model; the QA testcase uses expect_servers=4 (the 5th is the failing agent), so confirm all 4 servers + the agent start, rollouts run, and the agent venv installed nemo-gym from the checkout (not a wheel).
Triage
Difficulty 2/5 — remaining fix is a one-line slash-to-dot change with root cause pinpointed and unit-testable; blocker 1 already merged. Needs GPU/model: yes (full QA testcase validation needs a live model). External dependency: none.
Reviewer notes
Verifier confirmed partially_fixed and difficulty 2: blocker 1 fixed by #4464 (editable probe now checks ../../..), blocker 2 unchanged at server_utils.py:748 (simulation/init is license-only, caller unguarded). Corrections: domain/scenario_generation exposure is by-inspection inference, not an executed fact; the QA testcase expects 4 servers plus the failing agent; #3711 merged 2026-09-28, landed 2026-10-06.
Activity
fix(conversational_tool_use): start the nested simulation stack, cons…