Skip to content

fix(nooa): grade partial output at execution limits - #3843

Merged
init-nikhil merged 1 commit into
mainfrom
init-nikhil/nooa-native-tools
Oct 16, 2026
Merged

init-nikhil merged 1 commit into
mainfrom
init-nikhil/nooa-native-tools

Conversation

@init-nikhil

@init-nikhil init-nikhil commented Oct 1, 2026 •

Copy link
Copy Markdown
Member
  • send partial work to the verifier when the agent hits its call or iteration limit. motivation is we should grade these as 0 reward trajectories instead of discarding them
  • remove the default model-call limit, but let users set one explicitly. This limit was too low to solve tasks on benchmarks we're interested in.
  • extract result formatting and a small model-client interface for sandbox reuse, and tag model requests with the invocation they belong to. This stubs out the model client into a Python protocol, so that sandboxed implementations can pass their own implementation of it. Specifically, we want to enable constructing instances without access to Gym's configuration (since sandboxes won't have them).

Tests and validation

Current revision: df9dc50ff7c728e0042399350cbe19efd394a4f1. Rebased the existing ten-PR stack onto main 9ef5ed0f80a9f81c5d82af6588cd4cc956c4f5d1; assembled tip is 196bd5e333abd6e8ee7a93f4c8805ae33f67a66a (#4357).

Main compatibility adds only two test updates: #3846 gives the fake HTTP response its headers mapping for checkpoint-aware Environment seeding; #4088 checks serialized tool-output snapshots while retaining history, round-trip, and interpreter-object coverage. Both changes were independently reviewed. The rebase preserves upstream NOOA serialization and runtime configuration changes.

Validation on the exact rebased revisions:

Command from each revision's responses_api_agents/nooa_agent: python -m pytest tests --import-mode=importlib -q -o addopts= -o log_cli=false --tb=short -rs. Exact early-layer tests use installed NOOA 051472343211914222e24ce36d8752f4e86bbe43; the assembled tip uses coherent core/CLI/BenchAgent 19caab169b018476ac433d040f6ae3f06aeff101. Commands and logs: /tmp/nooa-merge-main-candidate-20261016/final-tests-{3843,3846,3844,4357}/.

Prior real-model evidence for the unchanged reviewer-fix behavior remains at /tmp/nooa-review-fixes-20261016/live-final/, run on pre-rebase tip 8185eb1f405ba476aab42b00a222f92dbec4364f: real Qwen output-token and iteration exhaustion each verified once; an actual iteration limit followed by injected cleanup failure remained fatal, skipped verification, and closed both sessions. This main sync adds test compatibility rather than new agent behavior, so that smoke was not rerun and is not presented as a smoke of the rebased tree. It used the integration-test Resources fixture and was not a new SWE-bench/OpenSandbox canary.

GitHub CI is requested for the new heads. Optional cross-harness conformance failures also reproduce on main and are separate from the required Nemo_CICD_Test gate. Existing branch names, bases, draft states, native groups, and description text outside this validation section are preserved.

Required branch CI passed on this revision: 8,793 core tests, 921 sandbox tests, 95.07% coverage, and 170 NOOA tests (including Linux installer tests for #3844).

Signed-off-by: Nikhil Deshmudre nikhil.deshmudre@gmail.com

@init-nikhil init-nikhil added the area:agent Agent harnesses and Responses API agent behavior label Oct 1, 2026
@copy-pr-bot

copy-pr-bot Bot commented Oct 1, 2026

Copy link
Copy Markdown

Auto-sync is disabled for draft pull requests in this repository. Workflows must be run manually.

Contributors can view more details about this message here.

@init-nikhil
init-nikhil added this pull request to stack #3852 October 1, 2026 06:39
@init-nikhil
init-nikhil force-pushed the init-nikhil/nooa-native-tools branch from 9a95f38 to 8caa682 Compare October 8, 2026 21:01
@init-nikhil
init-nikhil force-pushed the init-nikhil/nooa-native-tools branch from 8caa682 to 600db3e Compare October 9, 2026 21:58
@init-nikhil
init-nikhil removed this pull request from stack #3852 October 9, 2026 21:59
@init-nikhil
init-nikhil added this pull request to stack #4355 October 9, 2026 22:00
@init-nikhil
init-nikhil removed this pull request from stack #4355 October 10, 2026 05:25
@init-nikhil
init-nikhil force-pushed the init-nikhil/nooa-native-tools branch from 600db3e to dae3b6b Compare October 10, 2026 05:25
@init-nikhil
init-nikhil changed the base branch from init-nikhil/nooa-session-evidence to main October 10, 2026 05:25
@init-nikhil
init-nikhil added this pull request to stack #4367 October 10, 2026 05:25
@init-nikhil init-nikhil changed the title refactor(nooa): [wip] share result projection and preserve model failures refactor(nooa): share result projection and preserve model failures Oct 10, 2026
@init-nikhil
init-nikhil marked this pull request as ready for review October 12, 2026 04:31
@nemo-automation-bot
nemo-automation-bot Bot requested a review from a team October 12, 2026 04:32
@init-nikhil
init-nikhil requested a review from yaoyu-33 October 12, 2026 04:37
@yaoyu-33 yaoyu-33 added bug Something isn't working complexity:medium Single-domain change with interacting parts or a moderate review surface needs-review PR is ready for code review and waiting on a reviewer labels Oct 12, 2026
@github-actions github-actions Bot added the sla:review-overdue Review response is over the one-business-day SLA label Oct 13, 2026
@init-nikhil
init-nikhil force-pushed the init-nikhil/nooa-native-tools branch from dae3b6b to 6fd1756 Compare October 13, 2026 08:22
@init-nikhil
init-nikhil force-pushed the init-nikhil/nooa-native-tools branch from bc5f811 to 186dfa3 Compare October 15, 2026 20:13
@github-actions github-actions Bot added the sla:review-overdue Review response is over the one-business-day SLA label Oct 15, 2026
@init-nikhil
init-nikhil removed this pull request from stack #4367 October 16, 2026 00:16
@init-nikhil
init-nikhil added this pull request to stack #4662 October 16, 2026 00:16
@init-nikhil
init-nikhil force-pushed the init-nikhil/nooa-native-tools branch from 186dfa3 to 81d67a4 Compare October 16, 2026 19:24
@init-nikhil

Copy link
Copy Markdown
Member Author

/ok to test 81d67a4

Project explicit cancellation as cancelled without a response error while
preserving cancellation diagnostics and non-gradable runtime failure handling.
Keep timeout projection and partial execution-limit grading distinct.

Signed-off-by: Nikhil Deshmudre <nikhil.deshmudre@gmail.com>
@github-actions

Copy link
Copy Markdown
Contributor

🔄 Merge queue validation started! You can track the progress here: https://github.com/NVIDIA-NeMo/Gym/actions/runs/38970092729

@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Oct 16, 2026
@init-nikhil
init-nikhil added this pull request to the merge queue Oct 16, 2026
@github-actions

Copy link
Copy Markdown
Contributor

🔄 Merge queue validation started! You can track the progress here: https://github.com/NVIDIA-NeMo/Gym/actions/runs/38970603351

Merged via the queue into main with commit 1c842b7 Oct 16, 2026
42 of 47 checks passed
@init-nikhil
init-nikhil deleted the init-nikhil/nooa-native-tools branch October 16, 2026 21:57
aroshanghias-nvd pushed a commit to aroshanghias-nvd/Gym that referenced this pull request Oct 16, 2026
- move NOOA onto Gym’s existing single-agent-turn environment for setup,
grading, and cleanup.
- keep execution in agent sessions so retries reuse the same run instead
of executing it twice.
- use session-provided tool access and return final cookies and
observations when closing.
- let the model recover from tool input errors; skip grading for tool
5xx/connection failures and unrecovered model failures.
- keep output-token, call, and iteration limits gradable using the
partial result.

## Tests and validation

Current revision: `069ca4ed6ea6626f08e04ee0cb1fb482d8fe504b`. Rebased
the existing ten-PR stack onto main
`9ef5ed0f80a9f81c5d82af6588cd4cc956c4f5d1`; assembled tip is
`196bd5e333abd6e8ee7a93f4c8805ae33f67a66a` (NVIDIA-NeMo#4357).

Main compatibility adds only two test updates: NVIDIA-NeMo#3846 gives the fake HTTP
response its headers mapping for checkpoint-aware Environment seeding;
NVIDIA-NeMo#4088 checks serialized tool-output snapshots while retaining history,
round-trip, and interpreter-object coverage. Both changes were
independently reviewed. The rebase preserves upstream NOOA serialization
and runtime configuration changes.

Validation on the exact rebased revisions:
- NVIDIA-NeMo#3843: **170 passed** (one expected skip-verification
aggregate-metrics warning).
- NVIDIA-NeMo#3846: **195 passed**.
- NVIDIA-NeMo#3844: **218 passed, 8 Linux-only installer skips** on macOS.
- Assembled NVIDIA-NeMo#4357 tip: **373 passed, 16 platform skips** (10 installer
and 6 Linux supervisor tests).
- `pre-commit run --all-files` passed. DCO sign-offs, sequential layer
ancestry, and the focused final diff were checked.

Command from each revision's `responses_api_agents/nooa_agent`: `python
-m pytest tests --import-mode=importlib -q -o addopts= -o log_cli=false
--tb=short -rs`. Exact early-layer tests use installed NOOA
`051472343211914222e24ce36d8752f4e86bbe43`; the assembled tip uses
coherent core/CLI/BenchAgent `19caab169b018476ac433d040f6ae3f06aeff101`.
Commands and logs:
`/tmp/nooa-merge-main-candidate-20261016/final-tests-{3843,3846,3844,4357}/`.

Prior real-model evidence for the unchanged reviewer-fix behavior
remains at `/tmp/nooa-review-fixes-20261016/live-final/`, run on
pre-rebase tip `8185eb1f405ba476aab42b00a222f92dbec4364f`: real Qwen
output-token and iteration exhaustion each verified once; an actual
iteration limit followed by injected cleanup failure remained fatal,
skipped verification, and closed both sessions. This main sync adds test
compatibility rather than new agent behavior, so that smoke was not
rerun and is not presented as a smoke of the rebased tree. It used the
integration-test Resources fixture and was not a new
SWE-bench/OpenSandbox canary.

GitHub CI is requested for the new heads. Optional cross-harness
conformance failures also reproduce on main and are separate from the
required `Nemo_CICD_Test` gate. Existing branch names, bases, draft
states, native groups, and description text outside this validation
section are preserved.

Required [branch
CI](https://github.com/NVIDIA-NeMo/Gym/actions/runs/38964311504) passed
on this revision: 8,793 core tests, 921 sandbox tests, 95.07% coverage,
and 195 NOOA tests (including Linux installer tests for NVIDIA-NeMo#3844).

Signed-off-by: Nikhil Deshmudre <nikhil.deshmudre@gmail.com>
aroshanghias-nvd pushed a commit to aroshanghias-nvd/Gym that referenced this pull request Oct 16, 2026
Stage the portable NOOA runtime for borrowed task sandboxes. This layer
now builds on the standard single-agent-turn session integration.

This is part of the existing NOOA integration stack, based on NVIDIA-NeMo#3848; no
separate issue is needed for this requested architecture revision.
Shared/base environment servers, shared agent contracts, generic sandbox
code, and other harnesses remain fixed.

Patterns adopted from merged NVIDIA-NeMo#3717 (single-agent-turn lifecycle),
NVIDIA-NeMo#3554/NVIDIA-NeMo#3961 (Hermes sessions and sandbox cleanup), NVIDIA-NeMo#3640 (Codex), NVIDIA-NeMo#3626
(Pi), and open NVIDIA-NeMo#4560 (borrowed DeepSWE/OpenCode sandbox): seed
Resources, seed agent, activate, close agent and collect
evidence/cookies, verify, close Resources.

Compatibility: in sandboxed NOOA, agent-owned background services stop
before verification; the Resources-owned sandbox and persisted artifacts
remain available. Tasks requiring a NOOA-started service during grading
are unsupported by this lifecycle. The standard contract has an
episode-wide deadline and no separate NOOA agent deadline;
Terminal-Bench recipes retain verifier timeouts but do not reproduce
canonical per-agent deadlines.

Current revision: `0efed19193e1bb3e906318a6c6486f64078188ee`.

Validation evidence:

Implementation pushed before writing or running new behavior tests or
local checks, as requested. Existing tests received only mechanical
naming/import updates before this push. Checks, exact-layer tests,
live-model smoke rollouts, and current-head CI are pending for this
revision. Earlier test and CI evidence applies only to earlier revisions
and does not validate this change. No new benchmark scores are claimed.

## Tests and validation

Current revision: `a55f1eddbf13448c30728dafd17ef0af8ac26dbc`. Rebased
the existing ten-PR stack onto main
`9ef5ed0f80a9f81c5d82af6588cd4cc956c4f5d1`; assembled tip is
`196bd5e333abd6e8ee7a93f4c8805ae33f67a66a` (NVIDIA-NeMo#4357).

Main compatibility adds only two test updates: NVIDIA-NeMo#3846 gives the fake HTTP
response its headers mapping for checkpoint-aware Environment seeding;
NVIDIA-NeMo#4088 checks serialized tool-output snapshots while retaining history,
round-trip, and interpreter-object coverage. Both changes were
independently reviewed. The rebase preserves upstream NOOA serialization
and runtime configuration changes.

Validation on the exact rebased revisions:
- NVIDIA-NeMo#3843: **170 passed** (one expected skip-verification
aggregate-metrics warning).
- NVIDIA-NeMo#3846: **195 passed**.
- NVIDIA-NeMo#3844: **218 passed, 8 Linux-only installer skips** on macOS.
- Assembled NVIDIA-NeMo#4357 tip: **373 passed, 16 platform skips** (10 installer
and 6 Linux supervisor tests).
- `pre-commit run --all-files` passed. DCO sign-offs, sequential layer
ancestry, and the focused final diff were checked.

Command from each revision's `responses_api_agents/nooa_agent`: `python
-m pytest tests --import-mode=importlib -q -o addopts= -o log_cli=false
--tb=short -rs`. Exact early-layer tests use installed NOOA
`051472343211914222e24ce36d8752f4e86bbe43`; the assembled tip uses
coherent core/CLI/BenchAgent `19caab169b018476ac433d040f6ae3f06aeff101`.
Commands and logs:
`/tmp/nooa-merge-main-candidate-20261016/final-tests-{3843,3846,3844,4357}/`.

Prior real-model evidence for the unchanged reviewer-fix behavior
remains at `/tmp/nooa-review-fixes-20261016/live-final/`, run on
pre-rebase tip `8185eb1f405ba476aab42b00a222f92dbec4364f`: real Qwen
output-token and iteration exhaustion each verified once; an actual
iteration limit followed by injected cleanup failure remained fatal,
skipped verification, and closed both sessions. This main sync adds test
compatibility rather than new agent behavior, so that smoke was not
rerun and is not presented as a smoke of the rebased tree. It used the
integration-test Resources fixture and was not a new
SWE-bench/OpenSandbox canary.

GitHub CI is requested for the new heads. Optional cross-harness
conformance failures also reproduce on main and are separate from the
required `Nemo_CICD_Test` gate. Existing branch names, bases, draft
states, native groups, and description text outside this validation
section are preserved.

Required [branch
CI](https://github.com/NVIDIA-NeMo/Gym/actions/runs/38964312169) passed
on this revision: 8,793 core tests, 921 sandbox tests, 95.07% coverage,
and 226 NOOA tests (including Linux installer tests for NVIDIA-NeMo#3844).

Signed-off-by: Nikhil Deshmudre <nikhil.deshmudre@gmail.com>

This branch was previously deployed

1 inactive deployment
public — df9dc50f Deployed Oct 16, 2026 by copy-pr-bot[bot] via release / finalize / notify #5695
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:agent Agent harnesses and Responses API agent behavior bug Something isn't working complexity:medium Single-domain change with interacting parts or a moderate review surface ready-to-merge PR is approved, current, and waiting for final CI or merge sla:review-overdue Review response is over the one-business-day SLA

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants