Repository navigation
Conversation
Signed-off-by: yaoyu-33 <yaoyu.094@gmail.com>
Signed-off-by: yaoyu-33 <yaoyu.094@gmail.com>
Signed-off-by: yaoyu-33 <yaoyu.094@gmail.com>
Signed-off-by: yaoyu-33 <yaoyu.094@gmail.com>
Signed-off-by: yaoyu-33 <yaoyu.094@gmail.com>
Signed-off-by: yaoyu-33 <yaoyu.094@gmail.com>
Signed-off-by: yaoyu-33 <yaoyu.094@gmail.com>
Signed-off-by: yaoyu-33 <yaoyu.094@gmail.com>
Signed-off-by: yaoyu-33 <yaoyu.094@gmail.com>
Signed-off-by: yaoyu-33 <yaoyu.094@gmail.com>
Signed-off-by: yaoyu-33 <yaoyu.094@gmail.com>
Signed-off-by: yaoyu-33 <yaoyu.094@gmail.com>
Main now runs the shared supervisor as gym-supervisor from a file without a .py suffix (#4805), and the Copilot test fake still matched process_supervisor.py, so 17 tests failed after merging main. Opt the Copilot runner in the same way as Pi, Codex, OpenCode and OpenClaw: upload it as sandbox_runner and set stdlib_runner, so a task agent's pkill -f python3, pkill python3 or killall python3 cannot stop the runner and end the episode. The post-run compaction probe uses the same file. The session fake now asserts the runner launches as bin/gym-runner. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: yaoyu-33 <yaoyu.094@gmail.com>
Aggregate usage was summed over Copilot's OpenTelemetry chat spans alone, and model-call references came from the spans whenever any existed. If the file exporter lost a span, for example when Copilot stopped before flushing, the response published a subtotal as the total and dropped that call's reference without a gap. Treat any response ID from Copilot's events that has no chat span as missing coverage: usage stays unknown with a model_usage_spans_missing gap, and model-call references are the spans' IDs plus any event-only IDs. The provider-error test now carries the span for its first, successful call. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: yaoyu-33 <yaoyu.094@gmail.com>
svcnvidia-nemo-ci
left a comment
There was a problem hiding this comment.
SHIP WITH CARE — one RISK: partially retained native telemetry can be published as complete token accounting and discard observed model-call references.
Reviewed all 23 changed files and their directly affected lifecycle, model-request, observation, and conformance paths. The sandbox ownership, request-rejection, runtime-installation, and shared-schema changes otherwise showed no qualifying issues. The documented compaction and interruption limits are explicit; the finding below concerns additional evidence loss despite response IDs already being retained.
Static review only. Tests and native CLI probes were not executed, and the PR’s reported real-model results were not independently reproduced.
Review generated by codex. This was a full review. Request a full review with /review reset=true.
copilot_agent.yaml binds resources_server: null and Copilot has no compatibility /run, but the migration script did not know the agent type, so `--check` reported a legacy relay to add and test_repository_configs failed. Exempt Copilot the same way as Stirrup, and add a regression test that the default config composes with exactly one session Environment Server. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: yaoyu-33 <yaoyu.094@gmail.com>
Every session.error became the response error, so a run whose root
agent finished with a final message came back failed, and the default
outcome policy retried or failed it. Copilot 1.0.103's own exit status
ignores errors from sub-agents (agentId, data.agentId or
data.parentToolCallId), hook errors, and a model_call error that a
later root assistant message recovers from (cli-main.js pyo() and its
session status tracker). Apply the same rule; an unrecovered root
model_call error still fails and stays classified.
Also correct two usage gaps:
- Observed or unreadable compaction no longer adds
partial_model_usage_unavailable ("a model call reported no usage"),
which was false when every chat span reported usage.
- Rename native_compaction_state_unavailable to
compaction_state_unavailable, following the AGENTS.md naming rule
before the code reaches retained rollouts.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: yaoyu-33 <yaoyu.094@gmail.com>
The replay normalizer dropped assistant annotations only when null. The openai SDK types Chat Completion annotations as an optional list, and the OpenAI Model Server passes the upstream message through, so a provider that returns "annotations": [] made Copilot's next request fail strict validation with a 422. An empty list carries no citation, so drop it too; non-empty annotations still fail. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: yaoyu-33 <yaoyu.094@gmail.com>
- TB2.1: list Copilot in the intro and in the per-call cap and request-level max_output_tokens sentences, both of which apply to it. - TB2.1: Copilot's context_window is a prompt-token limit, so the 32k smoke example now leaves room for max_output_tokens (24576 + 8192). The adapter README says how to choose it. - Integrate Existing Agents: training-token capture is not wired up for Copilot, matching the other adapters' wording and its README. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: yaoyu-33 <yaoyu.094@gmail.com>
The runner drains Copilot's stdout after Copilot exits without waiting for EOF, because a tool that starts a service can inherit the pipe. Lock that in with real processes: a fake Copilot leaves a sleeping child that holds stdout and ends with an event that has no trailing newline. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: yaoyu-33 <yaoyu.094@gmail.com>
Usage coverage requires a span for every response that Copilot's events report, not equal ID sets. Lock in that background calls, which have chat spans but no assistant event, still add their counts and model-call references. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: yaoyu-33 <yaoyu.094@gmail.com>
|
/ok to test e9a1e9c |
| @@ -0,0 +1,168 @@ | |||
| # SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. | |||
| # SPDX-License-Identifier: Apache-2.0 | |||
| """Install the pinned Copilot CLI binary inside a task sandbox, outside the task repository. | |||
There was a problem hiding this comment.
Is there a way we can do this install without relying on Python? Not all task sandboxes come with Python. For SWE-Together I cached the harness from Gym side and then transferred it to a shared storage that the task mounted.
There was a problem hiding this comment.
Done in 1f7c89b: the sandbox no longer needs Python. The Agent Server probes the OS, CPU and C library with one shell command, picks the npm platform package and reads its tarball URL and sha512 from the registry; install_copilot_runtime.sh then downloads and checks it with curl or wget (installing bash or curl only as root with apk or apt-get), and Copilot runs through the shared harness_runner.sh. install_copilot_runtime.py and sandbox_runner.py are gone.
One difference from your SWE-Together setup: the sandbox still fetches the package from npm itself. Fetching it on the Gym side and uploading it (or mounting a shared cache) would remove that network dependency; I would leave that for a follow-up.
Resolves the conflict in scripts/harness_conformance/ci.py: keep main's locked `uv sync` install from #4837 and keep Copilot in the harnesses that provision their runtime in the task sandbox. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: yaoyu-33 <yaoyu.094@gmail.com>
…uv.lock #4837 replaced server requirements.txt files with committed uv projects and forbids requirements.txt. Copilot's requirement was the same as Pi's (nemo-gym[dev,sandbox] from the repository), so its pyproject.toml mirrors Pi's and its lock is Pi's with only the project name changed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: yaoyu-33 <yaoyu.094@gmail.com>
Main moved typed_exceptions into nemo_gym.core, which exports NgFailureEvent from its public API. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: yaoyu-33 <yaoyu.094@gmail.com>
|
/ok to test ab16997 |
Copilot required the task image's Python for its installer, its runner and its compaction probe, which the harness contract rules out for a CLI harness. Install and launch it the way the other CLI adapters do: - Bootstrap only bash, as root with apk or apt-get, or refuse clearly. - Probe the OS, CPU and C library with one shell command and select the npm platform package on the Agent Server. A non-Linux sandbox, another CPU or glibc older than 2.28 is refused at seed (422); other probe output and registry failures stay errors to retry (500). - Read the package's tarball URL and sha512 from the registry on the Agent Server, once per registry, package and version. - Install with install_copilot_runtime.sh: flock when available, reuse only a runtime with its ready marker that passes a health check, download with curl or wget, check the sha512, unpack the binary with a private HOME, and publish the staged directory atomically. - Launch Copilot through the shared harness_runner.sh with params.sh, and read the persisted session events for compaction on the Agent Server. - Remove sandbox_runner.py, install_copilot_runtime.py and their tests. Also: - Bound the whole seed by sandbox_install_timeout_seconds, so the owned sandbox's TTL holds. - Fail setup with the installer's output when it prints no runtime record. - Treat context_window as the total window: Copilot's prompt limit is context_window minus max_output_tokens, which must be smaller. - Keep aggregate usage unknown when the telemetry file has an unreadable line, with a model_usage_telemetry_malformed gap. - Reject a prompt that cannot be one command-line argument (NUL, 128 KiB). - Drop the unused --usage-output-file. - Declare Copilot in the Terminal-Bench 2.1 benchmark config, add it to the conformance compaction settings, and update the READMEs. Signed-off-by: yaoyu-33 <yaoyu.094@gmail.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
/ok to test 1f7c89b |
…ance scenario The previous commit gave Copilot the 32k compaction window in the conformance episode. Copilot then compacts for real: it sends its summary request in the background, concurrently with the policy loop, and the scripted conformance model answers strictly in sequence, so it refuses those requests and the whole context_compaction scenario fails (71 P1 checks instead of the 3 known compaction-record gaps). Restore Copilot's default window there until the scripted model can serve concurrent background compaction. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: yaoyu-33 <yaoyu.094@gmail.com>
|
/ok to test 6c9a967 |
giuliolovisotto
left a comment
There was a problem hiding this comment.
Two failure-evidence follow-ups below, separate from the existing conformance and benchmark-qualification discussion. Recovered errors should remain observable without failing a successful result; cleanup should preserve the original failure. An extracted-parser probe reproduced recovered-error loss; the cleanup finding is from source inspection. No new native Copilot rollout or adapter test-suite run was performed.
— @codex
Signed-off-by: yaoyu-33 <yaoyu.094@gmail.com>
Signed-off-by: yaoyu-33 <yaoyu.094@gmail.com>
Adds
copilot_agent, a session-only Agent Server for GitHub Copilot CLI 1.0.103. Copilot runs inside the benchmark's task sandbox and sends BYOK Chat Completions through Gym's rollout-prefixed Model Server, including background and compaction calls. No GitHub account is required.The adapter installs the pinned runtime with package-integrity verification and uses Gym's shared sandbox runner, supervisor and session lifecycle. The sandbox needs only bash and standard tools, not Python. It preserves task HOME, closes the agent before verification, and retains messages, reasoning, tool results, model-call references, usage when available, and sandbox execution evidence. Unsupported controls and required Resources tool grants are rejected. The conformance runner and agent catalogs are included. TB2.1 and SWE-bench Pro pairings remain experimental: their
allowed_agentsdeclarations have been removed pending full qualification and benchmark-owner review, and validation runs require--allow-unsupported-pairing. Benchmark prompts, data, and verifiers are unchanged.Real runs exposed two strict Chat request incompatibilities: replayed
annotations: nulland client-only__copilotMessageSourceon background tool results. Focused normalizers preserve content and call identity while continuing to reject other unsupported extras. Regressions reproduce both failures. Copilot's native telemetry also omits compaction usage; the adapter now reports unknown aggregate usage with an explicit gap instead of publishing a partial total. The adapter checks persisted native session events as well as the next-chat marker, covering late background compaction. Per-call counts remain in Gym Model Server captures.The full run also exposed a native CLI parsing failure for a task prompt beginning with
-. The adapter now binds the unchanged prompt to--prompt=; real-CLI red/green probes and session tests cover this. Native startup stderr is retained, bounded to 4,000 characters, before sandbox cleanup.A real-model smoke on November 3 found that Copilot masks its BYOK provider secrets as
******in every event it writes. The adapter had sent the short capture key asx-session-idandEMPTYas the API key, so recorded output masked them inside ordinary text. A timestamp2026-11-03became2026-1******3for capture key1-0, losing tool timing; tool-call IDs containing2-0were rewritten; and model text was altered. The model itself saw the original text, and captures were unaffected. Each session now sends a randomcopilot-<hex>invocation ID asx-session-id(also used in close observations) and a random unused API key. The rollout ID stays in the Model Server URL.Related: follows the
add-harnessworkflow in #5074. A separate issue is unnecessary for this focused adapter.Current review corrections at
e69363b55(November 6)21027c9e9; the conformance setup preserves both Nooa's installer branch and Copilot's sandbox runtime setup.Validation on the final tree:
python -m pytest responses_api_agents/copilot_agent/tests -q -o addopts='': 120 passed on Linux.git diff --check, Fern check (0 errors, 1 warning) and DCO sign-off passed.regex-logsmoke, Docker with NVIDIA NIMnvidia/nemotron-3.5-super-vl-120b-a12b, 300-second harness budget: reward 1.0, completed and unmasked; 11 model responses with no faults, health 1/1 passed, strict sandbox evidence fulfilled, profiling passed. Task sandbox and Gym listeners were removed.Earlier update at
6c9a967bb6c9a967bbreverts one line of1f7c89bb5: the conformance episode again gives Copilot its default window in thecompaction scenario. With the 32k window Copilot compacts for real and sends its summary request in the background,
concurrently with the policy loop. The scripted conformance model answers strictly in sequence, so it refused those
requests and the whole
context_compactionscenario failed (71 P1 checks) instead of the 3 known compaction-recordgaps. Serving concurrent background compaction is a conformance-model change for a separate PR.
scripts/harness_conformance/tests: 185 passed, 10 skipped; pre-commit passed.Linux
run_harness_conformance.py --harness copilotat6c9a967bb: P0 fulfilled in 8/8 scenarios; 696 passed,108 N/A, 3 failed (the known P1 compaction-record checks), the same as at
ab1699750.Linux results at
1f7c89bb5(Docker host; the revert touches only the conformance episode):gym env test +entrypoint=responses_api_agents/copilot_agentafter rootuv sync --locked: 108 passed.run_harness_conformance.py --harness copilot: P0 fulfilled in 8/8 scenarios (625 passed, 111 N/A, 71 failed, allin the P1
context_compactionscenario fixed above).cancel-async-tasksfailed
test_tasks_cancel_above_max_concurrent, the same test as on November 3. 88/88 model calls returned 200,response usage equals the captures, no masked spans. Health: 5 passed, 0 flagged, 0 unobserved; strict
--require-sandboxevidence fulfilled. Agent close finished 0.55–0.86 s before verification in every sandbox.24.04) has no
python3,curlorwget; the installer added curl with apt-get and the task passed. NoAlpine/BusyBox image was tried.
Update at
1f7c89bb5: Copilot runs with only bash in the task sandboxThe previous head needed the task image's Python for its installer, its runner and its compaction probe. The harness contract rules that out for a CLI harness, so Copilot now installs and launches the way the other CLI adapters do:
install_copilot_runtime.shtakesflockwhen available, reuses only a runtime with its ready marker that passes a health check, downloads with curl or wget, checks the sha512, unpacks the binary with a privateHOME, and publishes the staged directory atomically. Setup fails with the installer's output when it prints no runtime record.harness_runner.shwith aparams.sh. The Agent Server reads Copilot's persisted session events for compaction.sandbox_runner.py,install_copilot_runtime.pyand their tests are removed.Also in this commit:
sandbox_install_timeout_seconds, so the owned sandbox's TTL holds.context_windowis the total window. Copilot's prompt limit iscontext_windowminusmax_output_tokens, and a validator rejectsmax_output_tokens >= context_window. The TB2.1 README row is nowcontext_window: 32768withmax_output_tokens: 8192, the same 24576-token prompt limit as before. A config that setcontext_windowas a prompt limit now gets a prompt limit smaller bymax_output_tokens.model_usage_telemetry_malformedgap. The unused--usage-output-fileis dropped.allowed_agentsin the TB2.1 benchmark recipe (terminal_bench_2_1_benchmark.yaml), whichtest_nooa_terminal_bench_2_1.pyrequires. (This commit also added Copilot to the conformance episode's compaction settings;6c9a967bbreverts that.)task_network_policycannot install Copilot, because the sandbox downloads it from npm.Checks on macOS. Each fix was reverted once, and its tests failed.
responses_api_agents/copilot_agent/tests: 108 passed (73 before). The installer tests run real bash with an isolatedPATH, nopython3, a fake curl and a fake tarball. The fake sandbox asserts that no command containspython.benchmarks/terminal_bench_2_1/tests: 16 passed, 1 skipped.tests/unit_tests/core/test_responses_api_types.py271,test_public_api_facades.py803,tooling/test_add_legacy_agent_environment_servers.py119,tooling/test_harness_conformance_ci.py58,tooling/test_migrate_imports.py55 andtest_session_contract_repo.py2: all passed.scripts/harness_conformance/tests: 185 passed, 10 skipped.pre-commit run --files <the changed files>and DCO sign-off: passed.sha512sum,tar,flockandenv -i.Update at
ab1699750This head merges
mainthroughc0a069705. The only conflict was inscripts/harness_conformance/ci.py; the resolutionkeeps main's locked
uv syncinstall and keeps Copilot among the harnesses that install their runtime in the task sandbox.Two adapter changes follow from #4837 and later moves:
d8ec05d35:requirements.txtis replaced bypyproject.tomlanduv.lock. Copilot's requirement was the same as Pi's,so the project mirrors Pi's and the lock is Pi's with only the project name changed.
uv lock --checkpasses.ab1699750: the test importsNgFailureEventfromnemo_gym.core, wheremainnow exports it.Checks:
test_session_contract_repo.py,test_public_api_facades.py,config/test_global_config.pyandcore/test_responses_api_types.py, plustooling/(composition, component dependencies, conformance CI and checks),
cli/(locked env, component compatibility,server config validation) and
scripts/harness_conformance/tests.gym env test +entrypoint=responses_api_agents/copilot_agent, which now builds the server environment withuv sync --locked: 73 passed.The three failures are all P1 checks in
context_compaction, a scenario new onmain(compaction.event,compaction.helper_references,compaction.summary_reuse). They need compaction records, which the adapter hasalways reported as the
compaction_observations_unavailablegap.pre-commit run --files <changed files>and DCO sign-off: passed. Real-model smokes were not rerun for this merge.Validation at
be384a24dThe head merges
mainthrough11b28add6with no conflicts. Since the last tested head (e9a1e9cfe),mainmoved the agent,rollout, orchestration, eval and environment modules and added causal failure reports (#5072). Adapter changes since then:
902e3ca45: the provider-secret masking fix above, with the regression testtest_provider_secrets_cannot_mask_task_text.The test fails with the previous header and key values.
7482fbc28: since feat(eval): report causal failures across service boundaries #5072, the agent route raises anNgFailureEventwhose cause is the adapter'sRuntimeError.test_native_startup_error_preserves_bounded_stderrnow checks the bounded stderr on that cause.Checks on Linux at
7482fbc28.be384a24dadds only the merge of #5527, #5530 and #5525.gym env test +entrypoint=responses_api_agents/copilot_agent: 73 passed.tests/unit_tests/test_session_contract_repo.py,test_add_legacy_agent_environment_servers.py,core/test_responses_api_types.py,test_ci_environment.py,config/test_global_config.py,test_harness_conformance_ci.py,test_harness_conformance_checks.py,test_public_api_facades.pyandscripts/harness_conformance/tests.python scripts/run_harness_conformance.py --harness copilot --output <new-dir>: verdict fulfilled. All eight scenariospass, including
verifier_failure, which is new onmain: 603 checks passed, 101 N/A, zero failures, and all eightartifact gates fulfilled.
At
be384a24d, 1868 focused tests pass locally (adapter, session contract, public API, Responses types,vllm_model).pre-commit run --files <changed files>and DCO sign-off pass. CI for this head was started with/ok to test.Real-model smoke (November 3)
All three attempts ran before the bash-only runtime in
1f7c89bb5.nvidia/nemotron-3.5-super-vl-120b-a12bon NVIDIA NIM (integrate.api.nvidia.com), through Gym's vLLM ModelServer (Chat Completions). Temperature 1.0, top-p 0.95 and
max_tokens32768 are set on the Model Server.context_window131072,max_output_tokens32768 andtimeout900.single_agent_turn(resources_tool_transports: []).Model-call capture is enabled.
7131e4375048a0e408a8fb404b5f499d726b695b, with rowsbyte-identical to that run:
regex-log,cancel-async-tasks,db-wal-recovery,fix-code-vulnerabilityandgit-multibranch.--allow-unsupported-pairingwas needed, because this branch declares Copilot.--require-sandbox)70af8e1b070af8e1b0, two tasks7482fbc28evaluation_completed: trueandmask_sample: false, and the failures sidecar is empty.Response usage equals the summed model-call captures on every row, and strict profiling covers every row.
cancel-async-tasksfailedtest_tasks_cancel_above_max_concurrent. In attempt 3,db-wal-recoveryfailed 2 of 7 tests andfix-code-vulnerabilityfailedtest_cwe_id.regex-loghad 24 masked spans acrossresponse.output,ng_trajectoryandng_agent_observations, andcancel-async-taskslost tool timing. Attempt 3 has no masked spans,apart from a tool output in which the agent printed Copilot's own environment, and no
tool_timing_unavailablegaps.finishing 0.56–0.89 s before the verifier uploads
/testsand runstest.sh. Resources then kills and removes thecontainer. This is measured for every sandbox in attempts 2–3 and three of five in attempt 1, where the daemon's
event buffer dropped the first two. Every owned sandbox was removed.
Commands:
gym env resolve,gym env validate,gym env start, thengym eval run --no-serve --config run.yaml --input tasks.jsonl --output rollouts.jsonl --limit 5 --num-repeats 1 --concurrency 1.After collection:
gym eval health-check <run-dir> --model-call-capture-dir <run-dir>/model-calls,scripts/inspect_harness_conformance.py --bundle <rollouts.jsonl> --capture-dir <model-calls> --output <evidence> --require-sandboxand
gym eval profile.Limits and remaining work
context_compactionchecks fail), and aggregate usage after observed compaction.Timed-out tools keep an incomplete status and can have no output; the retained-artifact checker now accepts that representation. Other unavailable evidence remains explicit.
475b7c902). Theadd-harnessfullevaluation (all tasks × 8 repeats) has not been run on this head.
1f7c89bb5(above) covers it.Alpine/BusyBox images are still untested.
ContextCompactionObservationrecords are not supported.allowed_agentsadditions is still pending.Evidence at earlier heads (October 26–27; not rerun)
Validation at earlier heads
Current source:
e9a1e9cfe48ef465f6d359c0da54aa25d728ade7. It merges currentmaininto709cbc7077625ca14e4a74fce4523bf6205fc912and adds the review fixes below. The full benchmark is pinned to475b7c902a6e3394e32f0d841597432bbe4aa997; later commits repair compaction usage reporting, startup diagnostics, and leading-dash prompt argument handling, and declare tested pairings. The original benchmark artifacts remain unchanged, and final-source diagnostic runs are reported separately. The real-model evidence below predates the review fixes and was not rerun.Review fixes at
e9a1e9cfemain: fix(agents): hide the sandbox supervisor and runners from pkill python #4805 renamed the uploaded supervisor, which broke 17 Copilot tests. The runner now uploads asRUNNER_FILEwithstdlib_runner=True, so a task'spkill python3cannot stop it.test_add_legacy_agent_environment_servers.py::test_repository_configsfailed oncopilot_agent.yaml. Copilot is now exempt, like Stirrup, with a composition regression test.pyo()incli-main.js). Sub-agent errors, hook errors, and amodel_callerror followed by a root assistant message no longer do.model_usage_spans_missing) when an event's response ID has no chat span. Model-call references are the union of span and event IDs, and span-only background calls still count.annotations: []is now dropped likenull; non-empty annotations still fail validation.partial_model_usage_unavailable.native_compaction_state_unavailableis renamedcompaction_state_unavailable.context_windowexample is now 24576, because Copilot's setting is a prompt limit and needs room for 8192 output tokens.Checks at
e9a1e9cfecopilot conformance probes: all seven scenarios exercised; 535 checks passed, 74 N/A, zero failures, includingmain's structured model-failure outcome check. The job's 434 adapter and shared tests passed.Unit tests / Testjob was still running when this section was updated. The non-blocking Kilocode probe and conformance Publish check also fail onmain(20be8ee8d).tests/unit_tests/test_openai_utils.py: 335 passedtests/unit_tests/test_add_legacy_agent_environment_servers.py: 62 passedtests/unit_tests: no new failures. All 50 local failures (macOS environment and optional packages) also fail on a cleanmainworktree.pre-commit runon the changed files and DCO sign-off: passed.Earlier checks at
709cbc707gym env test +entrypoint=responses_api_agents/copilot_agent +skip_venv_if_present=true: 62 passed, one dependency warning.python scripts/run_harness_conformance.py --harness copilot --output <new-dir>after the final prompt fix: all seven scenarios exercised and fulfilled; 535 checks passed, 74 N/A, zero failures. No checker was weakened.6ef8717dd: 819 passed, one dependency warning.pre-commit run --all-files, diff checks, and DCO sign-off passed. Fern check: zero errors, one warning.Real-model evidence at earlier heads
Nemotron 3.5 Super GA, context 262144, per-call output limit 32768, temperature 1.0, top-p 0.95. Gym Environment Server coordinates Resources-owned OpenSandbox task containers. Model-call capture is enabled. Typed task identities, original prompts, and stock verifiers are retained.
Full sandboxed TB2.1: 53/89 successful tasks (59.55%), from 53 passes, 35 stock zero grades, and one unavailable grade. All 89 original task/rollout identities were attempted once and audited; 88 graded rows are completed/unmasked, with zero identity errors. The graded-only rate is 53/88 (60.23%), which is not the headline denominator.
The unavailable task,
pytorch-model-recovery, exited before any model call because of the leading-dash CLI parsing bug. After repair, a separate final-source sandbox run passes all five stock verifier tests: reward 1, nine successful model calls, nine tools, healthy, strict artifact/profile checks passed. This diagnostic is excluded from the original 89-task score.Full-run model capture contains 2,780 HTTP-200 calls and two deadline cancellations. All 137 requests carrying the background-tool client marker succeeded. Original rollout health: 78 healthy / 7 unhealthy / 3 unobserved. Five unhealthy rows have exact compaction-token deficits covered by the reporting fix; two end on cancelled model calls. Three interrupted rows retain unknown aggregate usage. Original artifacts are unchanged.
The strict retained-artifact audit is not fulfilled on 8/88 rows: six have interrupted native tools with no terminal result (
tools.status,tools.output), and two cancelled calls have no policy response/HTTP status (steps.attempt_accounting). The checker exempts unbound HTTP errors with status >=400, but not these cancelled attempts. No result, turn, or status was fabricated and no checker was weakened. Strict full-coverage profiling also fails because the startup failure has no grade; a separately labeled partial profile covers 88/89. These limits are separate from the passing seven-scenario scripted conformance suite.All 12 exact full-run sandbox scopes were re-listed empty; the owned model allocation is stopped and temporary task credential copies are removed. The earlier interrupted 17-task attempt is retained separately and excluded. A 16-task group hit a port collision before collection; startup-only recovery used identical source/input/budgets/identities and preserved concurrency, with no duplicate task attempts. Failed source-staging/import checks also occurred before any model attempt and are retained separately.
pytorch-model-recovery/709cbc707regex-log/475b7c902243cf625dPinned TB task source:
7131e4375048a0e408a8fb404b5f499d726b695b. SWE-Pro dataset:7ab5114912baf22bb098818e604c02fe7ad2c11f; evaluator:ca10a60a5fcae51e6948ffe1485d4153d421e6c5; task image digest:sha256:a2ea931d3b4a4ca9d19cf4577f1f97b970553f459fedb13a18ed01c804d88ace.Pairing commands exercised:
gym env resolve,gym env validate,gym env start,gym eval run --no-serve ... --allow-unsupported-pairing,gym eval health-check <run-dir>, andscripts/inspect_harness_conformance.py --bundle <rollouts.jsonl> --capture-dir <model-calls> --output <evidence> --require-sandbox. Full-run resources use Gym defaults of 4 CPUs, 16 GiB RAM, and 30 GiB storage; this is not a claim that every optional task-specific resource hint is matched.Host execution, Resources tool grants, and training-token capture are unsupported. Subagent hierarchy, native compaction observations, and aggregate usage after observed compaction remain documented gaps. The full run's original compaction health findings are preserved separately from stock verifier grades. Timed-out tools retain incomplete status and absent native results; those partial rollouts can be graded but do not fulfill the strict tool-evidence checks.
🤖 Generated with Claude Code