Skip to content

fix(dcode): supply the Ultra template argument from the managed resolver - #7463

Open
vyncint wants to merge 12 commits into
NVIDIA:mainfrom
vyncint:fix-dcode-managed-ultra-extra-body-7441
Open

fix(dcode): supply the Ultra template argument from the managed resolver#7463
vyncint wants to merge 12 commits into
NVIDIA:mainfrom
vyncint:fix-dcode-managed-ultra-extra-body-7441

Conversation

@vyncint

@vyncint vyncint commented Jul 24, 2026

Copy link
Copy Markdown

Summary

The managed Deep Agents Code provider resolver dropped the reviewed Nemotron Ultra extra_body.chat_template_kwargs.force_nonempty_content request parameter, so managed dcode runs against the Ultra models could persist newline-only completions with finish_reason: stop. The patched _get_provider_kwargs now derives that argument from a language-local Ultra ID set, mirroring its existing use_responses_api handling, while still never consuming the mutable config.toml params table.

Related Issue

Fixes #7441

Changes

  • agents/langchain-deepagents-code/patch-managed-deepagents-code.py: the managed _get_provider_kwargs override supplies extra_body = {"chat_template_kwargs": {"force_nonempty_content": True}} for the two managed Ultra model IDs on the openai adapter, from a new language-local _NEMOCLAW_NEMOTRON_ULTRA_MODEL_IDS constant. A model name can enable exactly this reviewed template argument and nothing else: the synthetic credential, managed base URL, and use_responses_api handling are unchanged, --model-params stays disabled, and the mutable TOML params table is still never read, so arbitrary or unsupported parameters keep failing closed.
  • test/e2e/e2e-cloud-experimental/checks/03-deepagents-code-nemotron-ultra-profile.sh: the check asserted ModelConfig.get_kwargs against config.toml, which the hardened resolver never consumes, so that assertion passed with or without this fix. It now also calls the installed deepagents_code.config._get_provider_kwargs and pins the whole returned contract: both managed Ultra IDs are shaped on the openai adapter, the same IDs stay unshaped on the managed openrouter adapter, a neighbouring Nemotron generation and an unrelated model are unshaped, unsupported providers still raise ModelConfigError, the allowlist is an immutable frozenset, and each call returns a fresh contract that a previous caller cannot poison. A socket guard fails the block closed on any network use, so the check stays inference-free.
  • test/langchain-deepagents-code-managed-model-params.test.ts: focused patch test proving both Ultra IDs receive the argument and that unrelated models, provider-only resolution, and the openrouter adapter do not, now covering the same matrix as the live check. It lives in a new file because test/langchain-deepagents-code-direct-module-patch.test.ts is at the test-file size budget. Detection gap: the existing direct-module assertions called _get_provider_kwargs without model_name, so the dropped per-model argument was invisible to them; this test closes that gap and fails without the patcher change. A second case binds the live check to the installed resolver so it cannot regress to config round-trip evidence.
  • test/langchain-deepagents-code-nemotron-profile-plugin.test.ts: registers the patcher in the language-local Ultra model ID drift test, so every production consumer of the two IDs must stay in sync.
  • agents/langchain-deepagents-code/dependency-review.md: records the second supply point and its removal condition under "Managed Ultra compatibility workarounds".

The upstream deepagents-code==0.1.34 resolver merges per-model params from config.toml when model_name is passed, which is how the entry written by generate-config.ts was intended to reach the constructor; the hardening override intentionally refuses that mutable source, so the reviewed argument has to come from the root-owned patch itself.

Maintainer waiver recorded: exact-head acceptance review waives only the bounded repeated managed dcode live Nemotron Ultra turn. The installed-runtime contract, exact model/provider matrix, immutable allowlist, fresh-return behavior, unsupported-provider rejection, and zero-network guard remain required evidence. This waiver does not waive the protected E2E / PR Gate, which must still pass before approval.

Type of Change

  • Code change (feature, bug fix, or refactor)
  • Code change with doc updates
  • Doc only (prose changes, no code sample modifications)
  • Doc only (includes code sample changes)

Quality Gates

  • Tests added or updated for changed behavior
  • Existing tests cover changed behavior — justification:
  • Tests not applicable — justification:
  • Docs updated for user-facing behavior changes
  • Docs not applicable — justification: no docs/ page describes the managed resolver or the buggy behavior; the in-repo dependency-review.md boundary record is updated in this diff.
  • Sensitive paths changed (security, policy, credentials, preflight, onboarding, inference, runner, sandbox, or messaging)
  • Sensitive-path review completed or maintainer-approved waiver recorded — reviewer/approval link/justification: Maintainer security review passed exact head 56b6b7d2705d4750157fe4109219802326cc46fb across all nine categories; model-triggered request shaping is exact-ID allowlisted, does not consume mutable parameters, and adds no credential or dependency surface.
  • Non-success, skipped, or missing CI check accepted by maintainer — check name, approval link, and follow-up issue:

Documentation Writer Review

  • Documentation writer subagent reviewed the completed changes
  • Result: docs-updated
  • Evidence: Reviewed agents/langchain-deepagents-code/dependency-review.md and the exact five-file diff at 56b6b7d27. The review confirms the exact two-ID OpenAI resolver scope, unchanged OpenRouter and unrelated-model contracts, installed inference-free proof, source boundaries, lifecycle and two-supply-point removal condition, and writing rules. Focused resolver/profile/image/E2E-support validation passed 73/73; build:cli, typecheck:cli, check:diff, bash -n, py_compile, and diff check passed. No further user-doc or code-comment edit is required.
  • Agent: Codex Desktop documentation writer subagent

Verification

  • PR description includes a Signed-off-by: line and every commit appears as Verified in GitHub
  • Normal pre-commit, commit-msg, and pre-push hooks passed, or npm run check:diff passed when hooks were skipped or unavailable — npm run check:diff passed at refreshed head 56b6b7d27; the normal non-force push then passed plugin and CLI TypeScript plus tag-version pre-push hooks.
  • Targeted behavior tests pass for the current change set, or tests are marked not applicable above — command/result: vitest run over langchain-deepagents-code-managed-model-params, langchain-deepagents-code-nemotron-profile-plugin, langchain-deepagents-code-image, and e2e/support/platform-parity-cloud-experimental → 73 passed, 0 failed. Negative control: removing the extra_body block from the patcher makes the resolver test fail with the exact missing-key diff, and restoring it passes. The check script passes bash -n, and its extracted Python heredoc passes py_compile. The sandbox E2E itself needs NVIDIA_INFERENCE_API_KEY on NVIDIA's runners and was not run here.
  • Applicable broad gate passed — npm test for broad runtime/test-harness changes; npm run check for repo-wide validation/coverage changes — command/result:
  • Quality Gates section completed with required justifications or waivers
  • No secrets, API keys, or credentials committed
  • npm run docs builds without warnings (doc changes only)
  • Doc pages follow the style guide (doc changes only)
  • New doc pages include SPDX header and frontmatter (new pages only)

Signed-off-by: Vyncint Ng 115854244+vyncint@users.noreply.github.com

Signed-off-by: Prekshi Vyas prekshiv@nvidia.com

Summary by CodeRabbit

  • New Features

    • Added enhanced compatibility for managed Ultra models, automatically applying the required chat template setting.
    • Improved non-interactive JSON output with a single bounded envelope containing status, exit code, response, and completion metadata.
    • Added handling for timeouts, cancellations, oversized output, and execution failures.
  • Tests

    • Expanded coverage for managed-model parameters, provider behavior, and isolated request contracts.
    • Updated profile and end-to-end checks to validate resolver behavior and keep model allowlists synchronized.
  • Documentation

    • Refreshed compatibility guidance, ownership boundaries, and configuration/removal criteria.

The hardened _get_provider_kwargs override discards the mutable
config.toml params table, so the per-model extra_body entry that
generate-config.ts writes for the managed Nemotron Ultra IDs never
reached the model constructor. Managed dcode runs could then return
newline-only completions when a turn combined reasoning and tool calls.

Derive extra_body.chat_template_kwargs.force_nonempty_content from a
language-local Ultra ID set inside the patched resolver, mirroring the
use_responses_api handling. A model name can enable exactly this
reviewed template argument and nothing else; credentials, endpoint, and
the rest of the request shape stay fixed. Register the patcher in the
model ID drift test and prove the resolver contract in a focused
managed-model-params patch test.

Fixes NVIDIA#7441

Signed-off-by: vyncint <vyncint@users.noreply.github.com>
Copilot AI review requested due to automatic review settings July 24, 2026 06:09
@copy-pr-bot

copy-pr-bot Bot commented Jul 24, 2026

Copy link
Copy Markdown

This pull request requires additional validation before any workflows can run on NVIDIA's runners.

Pull request vetters can view their responsibilities here.

Contributors can view more details about this message here.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@coderabbitai

coderabbitai Bot commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: bf8f3f41-dc96-4ef1-b880-cc7cc5e4169e

📥 Commits

Reviewing files that changed from the base of the PR and between 8937cca and 380daff.

📒 Files selected for processing (1)
  • agents/langchain-deepagents-code/dependency-review.md
🚧 Files skipped from review as they are similar to previous changes (1)
  • agents/langchain-deepagents-code/dependency-review.md

📝 Walkthrough

Walkthrough

The managed Deep Agents patch adds Ultra-specific provider parameters and a bounded JSON boundary for non-interactive execution. Tests and profile checks validate resolver behavior, allowlist synchronization, blocked providers, fail-closed networking, and execution results.

Changes

Managed Deep Agents runtime contracts

Layer / File(s) Summary
Ultra resolver contract
agents/langchain-deepagents-code/patch-managed-deepagents-code.py, agents/langchain-deepagents-code/dependency-review.md
The resolver retains model_name, injects force_nonempty_content for reviewed Ultra IDs, and documents both managed supply points.
Managed JSON execution boundary
agents/langchain-deepagents-code/patch-managed-deepagents-code.py
Non-interactive JSON mode captures response text, suppresses unexpected stdout, limits envelope size, classifies outcomes, and emits structured completion metadata.
Provider and profile validation
test/langchain-deepagents-code-managed-model-params.test.ts, test/langchain-deepagents-code-nemotron-profile-plugin.test.ts, test/e2e/e2e-cloud-experimental/checks/03-deepagents-code-nemotron-ultra-profile.sh
Tests cover provider shaping, near misses, blocked providers, fresh return values, allowlist synchronization, socket blocking, and two passing profile checks.

Estimated code review effort: 4 (Complex) | ~45 minutes

Sequence Diagram(s)

sequenceDiagram
  participant run_non_interactive
  participant JSONBoundary
  participant DeepAgentsCode
  participant stdout
  run_non_interactive->>JSONBoundary: output_format=json
  JSONBoundary->>DeepAgentsCode: run with quiet and stream settings
  DeepAgentsCode->>JSONBoundary: assistant text and completion metadata
  JSONBoundary->>stdout: single bounded JSON envelope
Loading

Possibly related issues

Possibly related PRs

  • NVIDIA/NemoClaw#7908: Modifies the same managed Deep Agents Code patch and dependency-review contract area.

Suggested reviewers: cv

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Out of Scope Changes check ⚠️ Warning The patcher adds a broad non-interactive JSON execution boundary unrelated to the linked resolver fix in #7441. Separate the non-interactive JSON boundary into a dedicated pull request or provide linked requirements justifying its inclusion.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely describes supplying the Ultra template argument through the managed resolver.
Linked Issues check ✅ Passed The changes satisfy #7441 by shaping Ultra OpenAI kwargs, preserving managed behavior, failing closed, and adding extensive regression coverage.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Comment @coderabbitai help to get the list of available commands.

@github-actions

github-actions Bot commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

PR Review Advisor — No blocking findings reported

Advisor assessment: No blocking advisor findings reported
Next action: No advisor follow-up needed.
Findings: 0 blockers · 0 warnings · 0 suggestions

Model lanes

  • GPT-5.6 Terra (primary): Completed · high confidence · 0 blockers · 0 warnings · 0 suggestions
  • Nemotron 3 Ultra (second opinion): Completed · high confidence · 0 blockers · 0 warnings · 0 suggestions
  • Model comparison: normalized findings match; normalized E2E selections differ; severity counts match.

Nemotron output stays in workflow artifacts and does not change the assessment above.

E2E guidance

Advisory only. E2E / PR Gate selects and runs jobs independently.

Recommended E2E: cloud-inference, cloud-onboard, security-posture, ubuntu-repo-cloud-langchain-deepagents-code

1 optional E2E recommendation
  • e2e-all

Workflow run details

This automated review informs maintainers. Warnings and suggestions do not require a response. A maintainer decides whether to merge.

Copilot AI review requested due to automatic review settings July 25, 2026 01:50

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review is ineligible. To be eligible to request a review, you need a paid Copilot license, or your organization must enable Copilot code review.

@cv cv left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The patch design and local suites look correct, but the accepted issue’s runtime criterion is not yet proved by the required E2E. Check 03 currently exercises upstream ModelConfig TOML rather than the installed patched _get_provider_kwargs, and the later inference run occurs only after re-onboarding away from the initial Ultra model. Please add bounded evidence that the installed patch returns the exact managed contract for both Ultra IDs (while unrelated/OpenRouter shaping stays rejected), then run an Ultra reasoning/tool turn before re-onboarding and reject a whitespace-only persisted response without repository-level retries. An explicit maintainer waiver for that acceptance criterion would be the alternative. Refresh and exact-head receipts/CI/E2E are still required afterward.

The live DCode check asserted ModelConfig.get_kwargs against config.toml.
The hardened managed resolver never consumes that params table, so the
assertion passed with or without the NVIDIA#7441 fix and could not accept the
issue's runtime criterion.

Call the installed deepagents_code.config._get_provider_kwargs directly and
pin the whole returned contract: both managed Ultra IDs are shaped under the
OpenAI adapter, the same IDs stay unshaped on the managed OpenRouter adapter,
a neighbouring Nemotron generation and an unrelated model are unshaped,
unsupported providers still raise ModelConfigError, and each call returns a
fresh contract. A socket guard fails the block closed on any network use, so
the check stays inference-free.

Mirror the same matrix in the unit test and bind the live check to the
installed resolver, so it cannot regress to config round-trip evidence.

Signed-off-by: vyncint <vyncint@users.noreply.github.com>
Copilot AI review requested due to automatic review settings July 26, 2026 13:58

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@vyncint

vyncint commented Jul 26, 2026

Copy link
Copy Markdown
Author

Thanks — both points were right, and I could reproduce the first one.

On check 03: it asserted ModelConfig.load(CONFIG_PATH).get_kwargs(...), which is upstream's config reader. The hardened managed resolver never consumes that params table, so that assertion is independent of this fix by construction — it loads ModelConfig only so malformed TOML still errors, and reads nothing from it.

Pushed 4d35373. Check 03 now also calls the installed deepagents_code.config._get_provider_kwargs and pins the whole returned contract:

  • both managed Ultra IDs shaped on the openai adapter with the exact extra_body, synthetic credential and managed base URL unchanged
  • the same two IDs unshaped on the managed openrouter adapter
  • gpt-4.1-mini, a neighbouring nemotron-4 ID, and model_name=None unshaped on both adapters
  • anthropic, fireworks, ollama, nvidia still raise ModelConfigError
  • the allowlist is a frozenset, and each call returns a fresh contract, so one caller cannot poison the next
  • the block runs under a socket guard that raises on any socket creation, so it stays inference-free like the profile contract

Local results: 73 tests pass across the four affected files. Negative control: removing the extra_body block from the patcher fails the resolver assertion with the exact missing-key diff. prek passes every pre-commit hook on both files including shellcheck and shfmt, plus the pre-push stage; the script passes bash -n and its Python heredoc passes py_compile. The unit test mirrors the same matrix, and a second case binds check 03 to the installed resolver so it cannot regress to config round-trip evidence.

On the Ultra turn before re-onboarding: you are right that none exists today. Check 03 is inference-free by construction, and check 04 takes model_a Ultra to model_b openai/openai/gpt-5.5, so check 07 runs headless inference on gpt-5.5. I can write that check, but running it needs NVIDIA_INFERENCE_API_KEY on NVIDIA's runners, which a fork revision cannot reach without the protected approval path that #7517 is closing. Your call on either: approve a credentialed run at this exact head and I will add the Ultra reasoning/tool turn plus the whitespace-only rejection with no repository-side retry, or record the waiver you offered for that acceptance criterion.

Receipt refreshed to 4d35373, and the PR body now states plainly what is proven and what is still open.

@vyncint
vyncint requested a review from cv July 26, 2026 14:53
Signed-off-by: Prekshi Vyas <prekshiv@nvidia.com>
Copilot AI review requested due to automatic review settings July 26, 2026 17:48

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review is ineligible. To be eligible to request a review, you need a paid Copilot license, or your organization must enable Copilot code review.

@prekshivyas prekshivyas left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed exact head 87ba6b682790e6d8f8eabb8d80e6f2614a1ceab0 against base d4a859a886f36da3ecf953edf6b5121c1ea84842.

Verdict: PASS — no findings. The managed resolver adds one fixed request-shaping argument only for the two reviewed Ultra model IDs on the OpenAI adapter. It still derives the synthetic credential and inference.local endpoint from the root-owned managed boundary, does not consume mutable TOML parameters, rejects unsupported providers, and returns fresh nested state on every call.

Nine-category result:

  1. Secrets and credentials — PASS: no secret is added or logged; the literal credential remains the existing synthetic in-sandbox value.
  2. Input validation and sanitization — PASS: behavior is gated by an immutable exact-ID frozenset; near-miss models and None remain unshaped.
  3. Authentication and authorization — PASS: no authorization surface changes; provider restrictions remain fail-closed.
  4. Dependencies — PASS: no dependency or lockfile change.
  5. Error handling and logging — PASS: unsupported providers keep raising ModelConfigError; no sensitive diagnostics are added.
  6. Cryptography and data protection — PASS: no cryptographic or data-at-rest behavior changes.
  7. Configuration and security headers — PASS: no network, container, CORS, port, or privilege configuration changes.
  8. Security testing — PASS: focused and installed-sandbox contracts cover both allowed IDs, OpenRouter and unrelated-model exclusions, blocked providers, immutable allowlisting, fresh-object isolation, and fail-closed network use.
  9. System security — PASS: the root-owned patch supplies only the reviewed argument and cannot widen credentials, endpoints, providers, or arbitrary request parameters.

Files reviewed: agents/langchain-deepagents-code/patch-managed-deepagents-code.py, agents/langchain-deepagents-code/dependency-review.md, test/e2e/e2e-cloud-experimental/checks/03-deepagents-code-nemotron-ultra-profile.sh, test/langchain-deepagents-code-managed-model-params.test.ts, and test/langchain-deepagents-code-nemotron-profile-plugin.test.ts.

@prekshivyas prekshivyas left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maintainer acceptance waiver for exact head 87ba6b682790e6d8f8eabb8d80e6f2614a1ceab0.

Waived criterion: only the issue acceptance item requesting a bounded repeated managed dcode inference turn that returns non-empty Nemotron Ultra content without repository-side retries.

Justification: the installed-runtime check now invokes deepagents_code.config._get_provider_kwargs inside the real DCode sandbox and pins the complete request-shaping contract for both managed Ultra IDs, both provider paths, adjacent and unrelated models, immutable allowlist behavior, fresh-return behavior, unsupported-provider rejection, and zero network use. Focused tests independently exercise the same exact-ID matrix. The change is limited to deterministic request shaping; check 04 deliberately re-onboards to GPT-5.5 before its live turn, so adding an Ultra inference turn would create a new credential-bearing E2E surface beyond this patch.

This waiver does not waive E2E / PR Gate, protected fork authorization, ordinary CI, exact-head review, or any failing product assertion. Those hard gates must still pass before approval.

prekshivyas added a commit that referenced this pull request Jul 26, 2026
<!-- markdownlint-disable MD041 -->
## Summary

Deep Agents Code runtime changes could produce an empty deterministic
E2E plan even when the PR Review Advisor selected the existing DCode
typed target. Risk-plan v6 now selects that target directly from trusted
changed-file paths, so a fork revision cannot pass E2E coordination
without entering the protected approval path.

## Related Issue

Related to #7463

## Changes

- Select `ubuntu-repo-cloud-langchain-deepagents-code` for
non-documentation runtime changes under
`agents/langchain-deepagents-code/` and for the existing
headless-inference live check.
- Keep documentation and ordinary test changes alone at tier 0.
- Advance the deterministic risk-plan version to 6 because selector
semantics changed.
- Add an exact regression for #7463's four changed paths and exercise
the fork controller path with the managed DCode runtime patch.
- Document the expanded selector boundary and empty-plan prevention in
`test/e2e/README.md`.

## Type of Change

- [ ] Code change (feature, bug fix, or refactor)
- [x] Code change with doc updates
- [ ] Doc only (prose changes, no code sample modifications)
- [ ] Doc only (includes code sample changes)

## Quality Gates

- [x] Tests added or updated for changed behavior
- [ ] Existing tests cover changed behavior — justification:
- [ ] Tests not applicable — justification:
- [x] Docs updated for user-facing behavior changes
- [ ] Docs not applicable — justification:
- [x] Sensitive paths changed (security, policy, credentials, preflight,
onboarding, inference, runner, sandbox, or messaging)
- [x] Sensitive-path review completed or maintainer-approved waiver
recorded — reviewer/approval link/justification: [Nine-category security
review](#7517 (comment))
passed exact head `ed8eab5ed65f9bd539a0221aadf54a8de6705d91` against
base `e833bd863f0b06be97bedaf5343188ee19923384` with no findings; target
selection remains allowlisted and exact-plan-bound, and the Hermes image
is pinned to the trusted published remediation digest.
- [ ] Non-success, skipped, or missing CI check accepted by maintainer —
check name, approval link, and follow-up issue:

## Documentation Writer Review

- [x] Documentation writer subagent reviewed the completed changes
- Result: `docs-updated`
- Evidence: `test/e2e/README.md` accurately documents DCode runtime
target selection, explicit protected credentialed-E2E approval for risky
fork plans, and empty-plan behavior. The immutable Hermes digest refresh
and conflict-free upstream retry-history merge require no additional
user documentation. Changed text follows `WRITING.md`; `git diff
--check` passes.
- Agent: Codex Desktop documentation writer subagent
<!-- docs-review-head-sha: ed8eab5 -->
<!-- docs-review-agents-blob-sha:
be20a09 -->

## DGX Station Hardware Evidence

- [ ] Tested on DGX Station
- Tested commit:
- Station profile/scenario:
- Result:
- Supporting evidence:

## Verification

- [x] PR description includes a `Signed-off-by:` line and every commit
appears as `Verified` in GitHub
- [x] Normal `pre-commit`, `commit-msg`, and `pre-push` hooks passed, or
`npm run check:diff` passed when hooks were skipped or unavailable
- [x] Targeted behavior tests pass for the current change set, or tests
are marked not applicable above — command/result or justification: the
combined risk-plan, fork-controller, advisor, security-boundary, and
typed-target suite passed 166 tests; the affected E2E-support workflow
boundary passed 31 tests. After the current-main refresh, four focused
integration files passed 125 tests and the final test commit's
pre-commit hooks passed.
- [ ] Applicable broad gate passed — `npm test` for broad
runtime/test-harness changes; `npm run check` for repo-wide
validation/coverage changes — command/result: Pull-request CI will
provide the applicable broad gate.
- [x] Quality Gates section completed with required justifications or
waivers
- [x] No secrets, API keys, or credentials committed
- [ ] `npm run docs` builds without warnings (doc changes only)
- [ ] Doc pages follow the [style
guide](https://github.com/NVIDIA/NemoClaw/blob/main/docs/CONTRIBUTING.md)
(doc changes only)
- [ ] New doc pages include SPDX header and frontmatter (new pages only)

---
Signed-off-by: Prekshi Vyas <prekshiv@nvidia.com>


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **Documentation**
* Updated E2E gate guidance for when Deep Agents Code runtime changes
select the typed end-to-end target, including the headless inference
requirement and credentialed E2E approval behavior.
* **Bug Fixes**
* Refined deterministic PR risk-plan targeting so relevant managed
runtime changes select the canonical typed target, while
documentation-only or test-only changes no longer do.
* **Tests**
* Updated the deterministic risk-plan version assertion and added
coverage for canonical Deep Agents typed target selection scenarios.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Signed-off-by: Prekshi Vyas <prekshiv@nvidia.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Signed-off-by: Prekshi Vyas <prekshiv@nvidia.com>
Copilot AI review requested due to automatic review settings July 27, 2026 04:12

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review is ineligible. To be eligible to request a review, you need a paid Copilot license, or your organization must enable Copilot code review.

Signed-off-by: Prekshi Vyas <prekshiv@nvidia.com>

@prekshivyas prekshivyas left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Security and maintainer review — exact head 56b6b7d2705d4750157fe4109219802326cc46fb: PASS across all nine categories.

  1. Credential and secret handling: PASS. The resolver retains the existing synthetic managed credential and managed base URL; no secret-bearing value or persistence path is added.
  2. Input validation and injection resistance: PASS. Request shaping is gated by an immutable exact-ID frozenset containing only the two reviewed Ultra model IDs, applies only to the managed OpenAI adapter, and leaves near-miss, unrelated, provider-only, and OpenRouter resolution unshaped.
  3. Authentication and authorization: PASS. No authentication, permission, identity, or reviewer-routing behavior changes.
  4. Dependencies and supply chain: PASS. No package, image dependency, lockfile, download, or external source changes. The dependency-boundary note records both supply points and the removal condition.
  5. Error handling and information exposure: PASS. Unsupported providers continue to fail closed with ModelConfigError; no sensitive data is added to diagnostics.
  6. Cryptography: PASS / not applicable. No cryptographic behavior changes.
  7. Configuration and infrastructure: PASS. The root-owned patch deliberately does not consume mutable config.toml parameters; the managed credential, endpoint, provider restrictions, and remaining constructor contract stay fixed.
  8. Security testing: PASS. Exact focused resolver/profile/image/E2E-support validation passes 73/73 and covers both allowed IDs, near-miss/unrelated IDs, OpenRouter, blocked providers, immutable allowlist state, fresh nested return objects, and a zero-network guard. npm run check:diff, CLI and checked-JavaScript typechecks, shell syntax, and Python compilation pass.
  9. System security and mutable-state safety: PASS. Every resolver call constructs fresh nested extra_body state; mutation of one result cannot poison later calls, and installed-runtime evidence calls the actual patched resolver.

The only new commit is a signed mechanical merge of current main; the intended five-file product diff is unchanged. All eight PR commits are GitHub Verified. The documentation-writer review passed exact head 56b6b7d against AGENTS blob be20a0952410431f1039cb893d2b9168d2ceacd8 with result docs-updated.

The previously recorded maintainer waiver is carried forward without expansion. It remains limited to the repeated managed Ultra inference turn and does not waive protected E2E / PR Gate, ordinary CI, exact-head review, or any product assertion. The older human changes-requested review remains in force for that reviewer to resolve; this review does not dismiss or override it.

@prekshivyas

Copy link
Copy Markdown
Collaborator

Exact-head ordinary CI is green, but credentialed E2E is blocked by repository environment configuration rather than PR code.

  • PR head: 56b6b7d2705d4750157fe4109219802326cc46fb
  • Base: eeab81cc5542902538c97db63c132c0fdbd4341c
  • Controller: https://github.com/NVIDIA/NemoClaw/actions/runs/30422071889
  • Selected plan: cloud-inference, cloud-onboard, security-posture, and ubuntu-repo-cloud-langchain-deepagents-code
  • Result: the controller refused to start because no required-reviewer approval was recorded.
  • Repository evidence: approve-credentialed-e2e-for-fork-pr currently has an empty protection_rules list, so GitHub presented no protected deployment to review.

No selected E2E ran and no repository credential was exposed. A repository admin must configure required reviewers for that environment; the workflow then requires a new PR head and fresh CI before the exact plan can be approved. I have not weakened or changed the environment.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (4)
agents/langchain-deepagents-code/patch-managed-deepagents-code.py (4)

946-953: 🩺 Stability & Availability | 🟠 Major | ⚡ Quick win

Patcher does not fail closed on the four newly required upstream symbols.

_write_text, _write_newline, generate_thread_id, and _run_agent_loop are captured at import time, but _require_functions(paths["non_interactive"], ...) still only requires run_non_interactive and _run_startup_command. If upstream renames or relocates any of them, patching and compile() both succeed and the failure appears as an import-time NameError in the managed CLI. Extend the pre-patch assertion so drift is rejected at patch time.

🛡️ Proposed fix (outside the reviewed range, near Line 1976)
     _require_functions(
         paths["non_interactive"],
         texts["non_interactive"],
-        {"run_non_interactive", "_run_startup_command"},
+        {
+            "run_non_interactive",
+            "_run_startup_command",
+            "_write_text",
+            "_write_newline",
+            "generate_thread_id",
+            "_run_agent_loop",
+        },
     )

As per path instructions, "Preserve deny-by-default behavior, least privilege, redaction, and fail-closed handling."

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@agents/langchain-deepagents-code/patch-managed-deepagents-code.py` around
lines 946 - 953, Extend the pre-patch _require_functions assertion for
paths["non_interactive"] to also require _write_text, _write_newline,
generate_thread_id, and _run_agent_loop. Keep the existing run_non_interactive
and _run_startup_command requirements, ensuring any missing or relocated
upstream symbol causes patching to fail before managed CLI import-time
execution.

Source: Path instructions


889-944: 🩺 Stability & Availability | 🟡 Minor | ⚡ Quick win

Pipe descriptors leak if os.dup(1) fails.

read_fd/write_fd are created before the try, so an error from os.dup(1) (Line 921) leaves both open with no cleanup path.

🛡️ Proposed fix
-    saved_stdout_fd = _nemoclaw_os.dup(1)
+    try:
+        saved_stdout_fd = _nemoclaw_os.dup(1)
+    except BaseException:
+        _nemoclaw_os.close(read_fd)
+        _nemoclaw_os.close(write_fd)
+        raise
     redirected = False
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@agents/langchain-deepagents-code/patch-managed-deepagents-code.py` around
lines 889 - 944, Update _nemoclaw_capture_process_stdout so failures from
_nemoclaw_os.dup(1), as well as other setup failures before the drain thread
owns cleanup, close both pipe descriptors. Structure the setup cleanup around
saved_stdout_fd and the redirected state while preserving the existing
restoration, drain signaling, and thread-join behavior after successful setup.

988-999: 🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win

Use one status string for the timeout outcome. exit_code == 124 returns turn_limit here, but the wait_for path returns timeout for the same case. Pick a single name and use it in both places.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@agents/langchain-deepagents-code/patch-managed-deepagents-code.py` around
lines 988 - 999, Update _nemoclaw_json_status so the exit_code == 124 branch
returns the same timeout status string used by the wait_for path. Keep the
associated exit code and all other status mappings unchanged.

Source: Coding guidelines


1071-1076: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Guard the timeout handler on an armed deadline. When timeout_seconds is None, this also catches agent-raised TimeoutError and logs after Nones.; only treat it as a timeout when wait_for is active.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@agents/langchain-deepagents-code/patch-managed-deepagents-code.py` around
lines 1071 - 1076, Update the TimeoutError handler around the wait_for flow so
it handles the exception as a process timeout only when timeout_seconds is not
None, meaning a deadline is armed. Preserve agent-raised TimeoutError behavior
when no deadline is configured, and keep the existing timeout status, exit code,
and message for actual deadline expirations.
🧹 Nitpick comments (2)
agents/langchain-deepagents-code/patch-managed-deepagents-code.py (2)

2005-2029: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Assert the call/timeout marker counts on the text you actually mutate.

Counts are checked on texts["main"], while the replacements are applied to transformed["main"] after MAIN_PATCH insertion. Re-checking on transformed["main"] keeps the single-occurrence guarantee tied to the mutated text.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@agents/langchain-deepagents-code/patch-managed-deepagents-code.py` around
lines 2005 - 2029, Update the marker-count validations in the transformation
flow to inspect transformed["main"] after MAIN_PATCH is inserted, rather than
texts["main"]. Ensure NON_INTERACTIVE_CALL_MARKER and
NON_INTERACTIVE_TIMEOUT_MARKER each occur exactly once in the text that will be
mutated, before applying their replacements.

956-968: 🎯 Functional Correctness | 🔵 Trivial | ⚡ Quick win

Context-scoped gating can silently drop assistant text.

Any _write_text call that happens outside the JSON run's context (plain worker thread, executor callback, or a task created before set()) takes the original-writer branch, lands in the suppressed stdout guard, and is dropped from response while only flipping unexpected_stdout. For a single non-interactive process a module-level run holder is context-independent and simpler. Please confirm streaming text always reaches this writer on the managed run's context, ideally with a negative-path test that asserts no assistant text is lost.

As per path instructions, "Require negative-path tests that prove the boundary rejects bypasses".

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@agents/langchain-deepagents-code/patch-managed-deepagents-code.py` around
lines 956 - 968, The context-local gating in _write_text can drop assistant text
arriving outside _nemoclaw_json_run, so use a module-level active-run holder for
the managed process instead of relying on context propagation. Update
_write_text and _write_newline to consult that holder while preserving
original-writer behavior when no run is active, and add a negative-path test
proving bypassed or non-contextual streaming text is retained in the response
rather than only setting unexpected_stdout.

Source: Path instructions

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Outside diff comments:
In `@agents/langchain-deepagents-code/patch-managed-deepagents-code.py`:
- Around line 946-953: Extend the pre-patch _require_functions assertion for
paths["non_interactive"] to also require _write_text, _write_newline,
generate_thread_id, and _run_agent_loop. Keep the existing run_non_interactive
and _run_startup_command requirements, ensuring any missing or relocated
upstream symbol causes patching to fail before managed CLI import-time
execution.
- Around line 889-944: Update _nemoclaw_capture_process_stdout so failures from
_nemoclaw_os.dup(1), as well as other setup failures before the drain thread
owns cleanup, close both pipe descriptors. Structure the setup cleanup around
saved_stdout_fd and the redirected state while preserving the existing
restoration, drain signaling, and thread-join behavior after successful setup.
- Around line 988-999: Update _nemoclaw_json_status so the exit_code == 124
branch returns the same timeout status string used by the wait_for path. Keep
the associated exit code and all other status mappings unchanged.
- Around line 1071-1076: Update the TimeoutError handler around the wait_for
flow so it handles the exception as a process timeout only when timeout_seconds
is not None, meaning a deadline is armed. Preserve agent-raised TimeoutError
behavior when no deadline is configured, and keep the existing timeout status,
exit code, and message for actual deadline expirations.

---

Nitpick comments:
In `@agents/langchain-deepagents-code/patch-managed-deepagents-code.py`:
- Around line 2005-2029: Update the marker-count validations in the
transformation flow to inspect transformed["main"] after MAIN_PATCH is inserted,
rather than texts["main"]. Ensure NON_INTERACTIVE_CALL_MARKER and
NON_INTERACTIVE_TIMEOUT_MARKER each occur exactly once in the text that will be
mutated, before applying their replacements.
- Around line 956-968: The context-local gating in _write_text can drop
assistant text arriving outside _nemoclaw_json_run, so use a module-level
active-run holder for the managed process instead of relying on context
propagation. Update _write_text and _write_newline to consult that holder while
preserving original-writer behavior when no run is active, and add a
negative-path test proving bypassed or non-contextual streaming text is retained
in the response rather than only setting unexpected_stdout.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 2e818379-fb72-48a5-b65c-26b990615a73

📥 Commits

Reviewing files that changed from the base of the PR and between 4d35373 and 8937cca.

📒 Files selected for processing (2)
  • agents/langchain-deepagents-code/dependency-review.md
  • agents/langchain-deepagents-code/patch-managed-deepagents-code.py
🚧 Files skipped from review as they are similar to previous changes (1)
  • agents/langchain-deepagents-code/dependency-review.md

@cjagwani

Copy link
Copy Markdown
Collaborator

Exact-head protected E2E is complete for e6bc75f8888cdd100b0b4096bded3b7bb8589bce against base d52d4599a18490e7f8efc6e8062296fffcbea4a7 (plan 9f285976...). The PR-relevant evidence passed:

  • typed target ubuntu-repo-cloud-langchain-deepagents-code
  • cloud-inference
  • cloud-onboard
  • OpenClaw security-posture

The trusted gate is still red because the unrelated Hermes half of the generic security-posture matrix failed during onboarding: port 8642 never appeared within 180 seconds even though the Hermes gateway forward on 18789 was already running. The Hermes image build and package/security assertions had completed successfully before that forward-registration timeout.

Run: https://github.com/NVIDIA/NemoClaw/actions/runs/30499877079
Failed job: https://github.com/NVIDIA/NemoClaw/actions/runs/30499877079/job/90737102224

The controller has terminalized the first-attempt verdict, so rerunning the child alone would not turn the required gate green. I am not submitting a Changes Requested review and I am not asking for a code change based on this unrelated Hermes timeout. The current head remains unapproved while the required gate is red; a future legitimate head/base refresh can run the same deterministic plan again, or a maintainer can record an explicit non-success waiver through the repository's normal release process.

@vyncint

vyncint commented Jul 29, 2026

Copy link
Copy Markdown
Author

Hi @cjagwani,

Thanks for running that down and for the detail.

Understood on all three points: nothing to change in the code, rerunning the child will not help, and the head stays unapproved while the generic matrix is red.

Since main is still at d52d459, there is no legitimate head or base refresh available to me right now, and I would rather not push a no-op commit just to retrigger the gate. Is the waiver route something you can start, or should I wait for main to move and let the plan run again on a real rebase?

@cjagwani

Copy link
Copy Markdown
Collaborator

Maintainer gate follow-up at exact head e1f467e3c3009ea50c1b621e5389beff8f228dec: the selected protected E2E completed successfully, the native required observer rerun is green, and both advisor lanes now pass. The remaining blocker is immutable GitHub attempt provenance: Actions run 30514894964 reports an empty pull_requests association, so the deterministic current-main gate cannot bind its latest-attempt E2E / PR Gate, initialize, cancel-superseded, and coordinate contexts to this PR and fails closed with “latest-attempt evidence incomplete.” Please use the repository-supported backfill/retrigger path that mints current exact-head/base provenance. I am not requesting a branch refresh solely for base currency, and this is a plain coordination comment, not Changes Requested.

@vyncint

vyncint commented Jul 30, 2026

Copy link
Copy Markdown
Author

Retriggered at the current base: new exact head 380daff4c96f047bc9c176c5cb3812d9c3209b8b, a GitHub-signed merge of the reviewed head e1f467e3 with main at 818a62f2. First parent is exactly the head you accepted, so the delta from your acceptance review is only main.

On why this had to mint a new head/base pair instead of re-running in place: the empty pull_requests association is tolerated by the fork path in check-gates.ts (MERGE-GATE.md: "For a fork run with an empty association, require the Actions event, workflow path, fork repository, branch, and PR SHA to match the current PR"). What actually failed closed is that two successful coordination checks share one external id nemoclaw-pr-e2e:v2:7463:e1f467e3…:da1b1031…:

  • 90782464408 — success, 04:49:31Z16:44:05Z
  • 90943967191 — success, 17:00:25Z, identical summary

currentE2eCoordinationCheck accepts the highest id only when every older duplicate is a completed failure carrying a retryable marker, so it returns nothing and e2eCoordinationEvidence.valid is false. That is what flagged E2E / PR Gate and, by blocking e2eControllerHeadBinding from binding run 30514894964, also initialize, cancel-superseded, and coordinate. The enclosure rule could not hold either: the second check completed at 17:00:25Z, after that controller run's updated_at of 16:51:54Z. Because check runs are immutable and currentExactDiffCheck in tools/e2e/pr-e2e-gate.mts throws on that same lineage, another CI / Pull Request rerun or controller attempt at that pair would have failed closed too. The external id is keyed on head and base, so a fresh pair was the only recovery. It also cleared the separate conflicts failure the checker reported (PR branch is behind its base branch, da1b1031 vs 818a62f2) — a side effect, not the motive.

State at the new head, from check-gates.ts on current main:

  • conflicts: pass — baseSha == currentBaseSha == 818a62f2
  • contributorCompliance: pass — 12/12 commits GitHub Verified
  • coordination lineage: exactly one check, …:380daff4…:818a62f2…, in_progress, inside controller run attempt 1 named … head 380daff4… base 818a62f2… gate true
  • ci: checks, check-hash, changes, commit-lint, and dco-check are absent — the fork pull_request run is action_required

So two steps remain on your side: Approve and run the fork pull_request workflows at 380daff4, then the approve-e2e dispatch with pr_number=7463, expected_head_sha=380daff4c96f047bc9c176c5cb3812d9c3209b8b, expected_base_sha=818a62f2b1bfd1a328a05f2f83ef3dbf23a055e5. The observer is already waiting with --timeout-seconds 21480, so the approval needs to land inside that window or the cycle has to be minted again.

The reviewed diff is unchanged. main moved into this area with #7908, which rewrote the audit-baseline block in agents/langchain-deepagents-code/dependency-review.md (lockfile SHA-256, audit date, temporary mcp/pyasn1 constraints) in a different section from this PR's "Managed Ultra compatibility workarounds" record, and left deepagents-code[nvidia,openrouter]==0.1.34 pinned, so both the resolver premise and the recorded removal condition still hold. AGENTS.md is byte-identical at both heads, so the documentation-review receipt inputs did not change. Your exact-head security review and acceptance waiver will need re-issuing at 380daff4.

Separately, and independent of the gate: the 2026-07-26 Changes Requested review, from two head refreshes ago, still sets reviewDecision and needs dismissal or a re-review before merge.

@cjagwani cjagwani left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Exact-head security review for 380daff4c96f047bc9c176c5cb3812d9c3209b8b: PASS — no findings.

  1. Secrets and credentials — PASS. The resolver retains the fixed synthetic credential and managed inference URL; no real credential or mutable credential source is introduced.
  2. Input validation — PASS. Request shaping is gated by exact membership in an immutable two-ID frozenset; providers remain allowlisted to openai and openrouter, with the new argument limited to openai.
  3. Authentication and authorization — PASS. No authentication or authorization boundary changes.
  4. Dependencies — PASS. No dependency or version change; the existing hash-locked boundary and removal condition remain documented.
  5. Error handling and logging — PASS. The product diff adds no exception reflection, logging, or sensitive-output path.
  6. Cryptography and data protection — PASS. Not applicable; no cryptographic operation changes.
  7. Configuration and security posture — PASS. Mutable config.toml provider classes, credentials, endpoints, and params remain ignored by the hardened resolver.
  8. Security testing — PASS. Exact IDs, near-miss IDs, OpenRouter non-shaping, unsupported providers, immutable allowlist, fresh-return/mutation poisoning, allowlist drift, installed-runtime behavior, and a socket-denial guard are covered.
  9. Holistic posture — PASS. The new nested request body is freshly allocated per call and cannot widen provider/model authority or alter the managed credential/endpoint contract. The latest merge from main had no conflict resolution.

Product scope is established by accepted bug #7441. This is a comment-only exact-head security result, not an approval: ordinary CI and the required E2E gate are still pending, and the stale Changes Requested review must be cleared or superseded by its author. I will continue monitoring without submitting Changes Requested.

@cjagwani

Copy link
Copy Markdown
Collaborator

Exact-head gate update for 380daff4c96f047bc9c176c5cb3812d9c3209b8b (normal comment; no Changes Requested review):

  • The substantive push-triggered ordinary CI is green, including all eight CLI shards, build/typecheck, static checks, package checks, macOS, WSL, CodeQL, DCO, commit lint, docs receipt, and installer hash.
  • Product review and the nine-category security review are clean for this exact head; the latest main merge had no conflict resolution.
  • The refreshed E2E plan selected cloud-inference, cloud-onboard, security-posture, and typed target ubuntu-repo-cloud-langchain-deepagents-code, but asks for legacy approve-e2e execution of fork code. I am not authorizing repository credentials through that path.
  • The deterministic checker also sees the newer metadata-only PR-CI duplicate as changes: SKIPPED, even though the earlier substantive run has a passing changes job. I will not manufacture a rerun without a recognized retry marker.
  • The branch is stale against current main but GitHub reports MERGEABLE; I will not merge main solely for currency.

No code change is requested by this update. Remaining work is safe exact-head E2E/coordination evidence (or an explicit maintainer-approved safe waiver/backfill), unambiguous substantive changes evidence, and clearing/superseding the stale 2026-07-26 Changes Requested review. I will continue monitoring.

@vyncint

vyncint commented Jul 31, 2026

Copy link
Copy Markdown
Author

Ack on approve-e2e — not pressing that path, and I'm not pushing a new head.

changes: SKIPPED looks like run selection, resolvable on existing evidence.
Two pull_request CI runs exist at 380daff4, distinguished by the gate flag
in the run name:

  • 30590130046… gate true, 23:19:11Z — changes success
    (job 91040326124), static-checks success
  • 30590184821… gate false, 23:20:14Z — changes skipped
    (job 91040154278), static-checks skipped

The checker is binding the newer gate false run; the substantive one is the
gate true run 63 seconds earlier. Discriminating on the gate flag rather
than recency should clear this without manufacturing a rerun.

Observer: expires 05:21Z, and it's waiting on the dispatch you've
declined. I'll let it lapse rather than leave anyone blocked on a dead
observer. Re-minting a cycle needs a fresh head/base pair, which would void the
product and nine-category security reviews just cleared at this head — I'd
rather not spend those again without a decision first.

Two asks:

  • Who can start the safe waiver/backfill path?
  • @cv — could you dismiss or re-issue the 2026-07-26 Changes Requested review?
    It's from two heads ago and still sets reviewDecision.

@apurvvkumaria apurvvkumaria left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed current head 380daff in light of the earlier requested re-review. The installed-runtime contract now calls the patched resolver directly and covers the exact Ultra IDs, provider exclusions, immutable allowlist, fresh-return behavior, unsupported-provider rejection, and zero-network boundary. The remaining repeated live Ultra-turn criterion has an explicit maintainer waiver without expanding any other gate. Ordinary CI, typecheck, focused tests, and security review pass. The E2E / PR Gate failure is a six-hour trusted-verdict coordination timeout before product jobs ran, not a failing product assertion; that required gate still needs a successful rerun or repository-owned acceptance before merge. I found no remaining blocking defect attributable to this PR.

@vyncint

vyncint commented Aug 4, 2026

Copy link
Copy Markdown
Author

@apurvvkumaria @cjagwani — the observer at 380daff4 lapsed at 2026-07-31T05:18:45Z and its coordination check is still in_progress at "Maintainer approval required to run fork E2E", so this head cannot complete a cycle. It has also been conflicting with main since #7971 landed on 07-31, and resolving that rewrites the same extra_body hunk — it has to compose reasoning_effort with chat_template_kwargs rather than overwrite it — so the head will move and the 08-03 approval will need re-issuing. Per test/e2e/docs/README.md a fork revision with selected credential-bearing work stays pending until a maintainer or administrator runs approve-e2e, so this cannot go green while it lives on a fork: who owns the "repository-owned acceptance" referenced in that review, or would @prekshivyas host these commits on an internal branch instead? I will hold the merge resolution until that is decided rather than spend another head, and cv's 2026-07-26 review 4781125259 still resolves reviewDecision to CHANGES_REQUESTED despite the pending re-request.

@github-actions github-actions Bot added v0.0.103 Release target and removed v0.0.102 labels Aug 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: providers Inference provider integrations and provider behavior bug-fix PR fixes a bug or regression integration: dcode LangChain Deep Code integration behavior v0.0.103 Release target

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Managed Deep Agents provider resolver drops required Nemotron force_nonempty_content parameter

8 participants