Skip to content

[NVBug 6847461] Fix slash-named harness import that crashes nested conversational simulation stack #4497

Closed

Description

@qiaochuz-nv

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.py detected editable layout with a two-level pyproject.toml probe; the 3-level agent dir failed it, so the non-editable branch pinned nemo-gym==<version>, unresolvable on PyPI.
  • Blocker 2 (open): server_utils.py:748 import_module(f"responses_api_agents.{harness}") with harness="conversational_tool_use/simulation" raises ModuleNotFoundError; the policy_model server dies at base_responses_api_model.py:285 during setup_webserver.

Status on main (partially_fixed)

Proposed fix

  • nemo_gym/server_utils.py: import_module("responses_api_agents." + harness.replace("/", ".")).
  • Add a unit test for assistant_message_header with a slash harness key.
  • By inspection (not executed), domain_generation and scenario_generation harnesses have the same exposure (they bind model_server); policy_tool_generation uses other model-server keys.

Validation

  • Unit: new assistant_message_header slash-key test (no GPU).
  • E2E: re-run testcases/environments/conversational_tool_use_simulation.py with 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

  1. added a commit that references this issue on Oct 14, 2026
    07b9e2a
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions