Skip to content

feat: enable Nemotron 3.5 Lightning defaults - #430

Merged
rapids-bot[bot] merged 1 commit into
release/2.2from
ajay/enable-nemotron-35-lightning-defaults
Aug 11, 2026
Merged

rapids-bot[bot] merged 1 commit into
release/2.2from
ajay/enable-nemotron-35-lightning-defaults

Conversation

@AjayThorve

@AjayThorve AjayThorve commented Aug 11, 2026

Copy link
Copy Markdown
Member

Summary

  • make nvidia/nemotron-3.5-lightning-30b-a3b the default model for intent classification and shallow research
  • retain Nemotron 3 Ultra for clarification and every deep-research role
  • update public configs, documentation, examples, skills, notebooks, and regression guards to use the launched Build model ID and the standard https://integrate.api.nvidia.com/v1 endpoint
  • retain the OpenAI provider configuration for GPT Sol/Luna in the frontier profile
  • carry forward the tool-gated shallow-research prompt and enforce evidence collection before synthesis
  • make the FreshQA configs runnable on the current release by using tavily_web_search and registering it as a citable data source

This replaces the closed placeholder PR #419. The branch contains no preview model name or Inference Hub base URL.

Live model validation

NVIDIA Build

  • authenticated model-catalog lookup found nvidia/nemotron-3.5-lightning-30b-a3b
  • raw chat completion passed
  • structured web-search tool call passed
  • shipped config_cli_default.yml completed two AIQ end-to-end prompts with live Tavily calls and source capture

Inference Hub

The provider-specific evaluation overlay used nvidia/nvidia/nemotron-3.5-lightning; that alias and endpoint are not checked into the repository.

  • semantic smoke: 12/12 workflows and 12/12 judges, zero errors, 10/12 correct
  • held-out FreshQA TEST: 500/500 workflows and 500/500 judges, zero errors, zero retries
  • accuracy: 355/500 (71.0%)
  • concurrency: 10
  • prior Nano 3.5 preview reference on the same TEST IDs: 335/500 (67.0%)
  • Ultra reference on the same TEST IDs: 381/500 (76.2%)

The TEST comparison is useful launch evidence, but the Lightning run used the current release's Tavily adapter and source-registry contract, so historical deltas should not be interpreted as a model-only causal estimate.

Validation

  • uv run pytest -q: 2,142 passed, 13 skipped
  • focused model/shallow tests: 64 passed
  • changed-file pre-commit suite: passed, including Ruff, YAML validation, secret detection, notebook sanitation, and Markdown link checking
  • commit is GPG verified and DCO signed

Scope

This changes only intent/shallow defaults. Nemotron 3 Ultra remains unchanged for clarification and all deep-research roles.

Summary by CodeRabbit

  • New Features

    • Updated intent classification and shallow research to use Nemotron 3.5 Lightning models.
    • Added configurable NVIDIA API authentication and refined model settings.
    • Added registered web-search sources to FreshQA examples.
  • Bug Fixes

    • Shallow research now requires evidence before answering and retries when results are insufficient.
    • Prevented intermediate research output and suppressed artifacts from appearing in responses.
    • Improved handling of invalid or incomplete tool interactions.
  • Documentation

    • Updated setup guides, examples, hardware requirements, and model configuration references.

@AjayThorve
AjayThorve requested a review from a team August 11, 2026 15:33
@coderabbitai

coderabbitai Bot commented Aug 11, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Enterprise

Run ID: 13dbb0a3-c17a-49d3-a943-03847152a0a6

📥 Commits

Reviewing files that changed from the base of the PR and between c3c0545 and 9243641.

⛔ Files ignored due to path filters (1)
  • frontends/ui/package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (1)
  • docs/source/customization/configuration-reference.md
📜 Recent review details
⏰ Context from checks skipped due to timeout. (7)
  • GitHub Check: UI Unit Tests
  • GitHub Check: UI Lint
  • GitHub Check: UI Type Check
  • GitHub Check: Pytest and Coverage
  • GitHub Check: Lint and Hooks
  • GitHub Check: Helm Lint
  • GitHub Check: Script Validation
🧰 Additional context used
📓 Path-based instructions (4)
**/*

📄 CodeRabbit inference engine (CONTRIBUTING.md)

**/*: Do not include secrets, credentials, private hostnames, internal-only logs, customer data, or generated local artifacts.
Add or update tests for behavior changes.

**/*: For substantial behavior, authentication, UI, or architecture changes, open a design discussion before coding rather than landing a large unreviewed change.
Keep changes scoped to this repository and avoid editing adjacent repositories; treat each sources/* package independently and prefer the smallest package-scoped change.
Keep pull requests scoped, avoid unrelated files and generated artifacts, provide validation evidence, and ensure every commit has DCO sign-off.

Files:

  • docs/source/customization/configuration-reference.md
**/*.{py,pyi,js,jsx,ts,tsx,yml,yaml,json,env,md}

📄 CodeRabbit inference engine (AGENTS.md)

Never commit secrets, tokens, or environment-specific hostnames; use environment variables and SecretStr, and resolve API keys at runtime.

Files:

  • docs/source/customization/configuration-reference.md
docs/source/**/*

📄 CodeRabbit inference engine (AGENTS.md)

Update canonical documentation under docs/source/ when behavior, configuration, or workflows change; do not duplicate full documentation pages in skills.

Files:

  • docs/source/customization/configuration-reference.md
{docs/**,README.md,CONTRIBUTING.md,SECURITY.md,CODE-OF-CONDUCT.md}

⚙️ CodeRabbit configuration file

{docs/**,README.md,CONTRIBUTING.md,SECURITY.md,CODE-OF-CONDUCT.md}: Review documentation for command accuracy, branch-name consistency, current CI and copy-pr-bot behavior, public
vs internal boundary clarity, stale examples, and links that no longer match the repository layout.

Files:

  • docs/source/customization/configuration-reference.md
🔇 Additional comments (1)
docs/source/customization/configuration-reference.md (1)

122-122: LGTM!

Also applies to: 131-132, 382-382, 591-613, 660-660, 675-675, 713-713


Walkthrough

The pull request migrates intent classification and shallow research to Nemotron Lightning profiles. It also enforces research-tool use before shallow-research answers and suppresses intermediate output artifacts.

Changes

Model and shallow research updates

Layer / File(s) Summary
Lightning model profiles and wiring
.agents/skills/..., configs/*, tests/aiq_agent/test_default_model_profiles.py, mcp/tests/*
Default configurations use separate Lightning profiles for intent classification and shallow research. Tests validate model, endpoint, generation, tool-call, and thinking settings.
FreshQA research source wiring
frontends/benchmarks/freshqa/configs/*
FreshQA registers web search as a data source, uses Tavily web search, and connects research agents to the Lightning profile.
Documentation and example alignment
README.md, docs/notebooks/*, docs/source/*
Documentation and examples replace Super references with Lightning references for intent classification and shallow research.
Evidence-backed shallow research
src/aiq_agent/agents/shallow_researcher/*, src/aiq_agent/common/callbacks.py, frontends/aiq_api/src/aiq_api/jobs/callbacks.py, tests/aiq_agent/*
The shallow researcher requires an initial allowed tool call when tools exist, retries once, suppresses intermediate artifacts, and raises RuntimeError for invalid responses. Tests cover these paths.

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

Sequence Diagram(s)

sequenceDiagram
  participant ShallowResearcher
  participant ResearchLLM
  participant ResearchTool
  participant OutputCallbacks
  ShallowResearcher->>ResearchLLM: Request initial research response
  alt No tool call
    ShallowResearcher->>ResearchLLM: Retry with one allowed tool call
    ResearchLLM->>ResearchTool: Execute research query
    ResearchTool-->>ResearchLLM: Return research results
    ResearchLLM-->>ShallowResearcher: Return evidence-backed answer
  else Invalid retry response
    ShallowResearcher-->>ShallowResearcher: Raise RuntimeError
  end
  ShallowResearcher->>OutputCallbacks: Suppress tagged tokens and artifacts
Loading

Possibly related PRs

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (2 warnings)

Check name Status Explanation Resolution
Description check ⚠️ Warning The description explains the change and validation, but it omits the required DCO sign-off, checklist sections, reviewer starting point, and related-issues section. Add the required template sections, replace the DCO placeholder with the exact signed-off identity, complete the validation checklist, and specify reviewer starting points and related issues.
Docstring Coverage ⚠️ Warning Docstring coverage is 75.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title follows Conventional Commits format, uses an allowed type, stays under 72 characters, and accurately describes the model-default change.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch ajay/enable-nemotron-35-lightning-defaults

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

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 5

🤖 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.

Inline comments:
In `@configs/config_web_default_llamaindex.yml`:
- Line 72: ShallowResearcherAgent.agent_node must pass the configured
parallel_tool_calls value to llm.bind_tools instead of hard-coding true, and add
an agent-level regression test verifying the binding. The anchor
configs/config_web_default_llamaindex.yml:72, configs/config_web_frag.yml:74,
configs/config_web_frag_mcp_auth.yml:81, and
configs/config_web_opensearch.yml:73 require no direct change;
docs/notebooks/0_Getting_Started_with_AIQ.ipynb:328 and
docs/source/customization/configuration-reference.md:122, 132, 613 likewise
require no direct change. Update
tests/aiq_agent/test_default_model_profiles.py:104-113 as needed to cover the
runtime binding behavior.

In `@docs/notebooks/0_Getting_Started_with_AIQ.ipynb`:
- Around line 807-813: Update the Together.ai guidance text in the notebook to
refer to the defined “Lightning or Ultra LLM block” profiles instead of “Nano or
Ultra LLM block,” keeping the surrounding provider-change example unchanged.

In `@docs/source/examples/minimal-shallow-only.md`:
- Around line 28-29: Update the description near the model configuration to
identify the role-specific model as Nemotron 3.5 Lightning instead of Nano,
while preserving the existing explanation that the NIM type connects to NVIDIA
API Catalog.

In `@src/aiq_agent/agents/shallow_researcher/agent.py`:
- Around line 252-260: Update the response flow around the initial model
invocation and the tool-use check so callbacks cannot publish either rejected
no-tool response, including when the retry also lacks tool calls and run()
raises. Buffer or suppress final-answer callbacks until a valid tool call
succeeds, while preserving normal callback delivery afterward, and add a
regression test covering the callback behavior for this failure path.
- Around line 254-264: Update the retry path in
src/aiq_agent/agents/shallow_researcher/agent.py around the
llm_with_tools.ainvoke call to use a retry-specific tool binding with
parallel_tool_calls=False, then reject responses unless they contain exactly one
call to an allowed research tool before ToolNode execution. Preserve the
existing failure behavior for invalid retries. Add the requested two-call retry
regression test in tests/aiq_agent/agents/shallow_researcher/test_agent.py at
the cited range, asserting the retry fails closed without executing multiple
calls or exceeding max_tool_iterations.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Enterprise

Run ID: 27d47083-c4db-4832-b183-1215d187b30f

📥 Commits

Reviewing files that changed from the base of the PR and between 160d05e and 1cf8424.

📒 Files selected for processing (33)
  • .agents/skills/aiq-configure-workflow/assets/config-scaffold.yml
  • .agents/skills/aiq-configure-workflow/references/config-profiles.md
  • .secrets.baseline
  • README.md
  • configs/config_cli_default.yml
  • configs/config_frontier_models.yml
  • configs/config_mcp.yml
  • configs/config_openshell.yml
  • configs/config_web_azure_ai_search.yml
  • configs/config_web_default_guardrails.yml
  • configs/config_web_default_llamaindex.yml
  • configs/config_web_frag.yml
  • configs/config_web_frag_mcp_auth.yml
  • configs/config_web_opensearch.yml
  • docs/notebooks/0_Getting_Started_with_AIQ.ipynb
  • docs/source/customization/configuration-reference.md
  • docs/source/customization/mcp-tools.md
  • docs/source/customization/swapping-models.md
  • docs/source/customization/tools-and-sources.md
  • docs/source/examples/full-pipeline-llamaindex.md
  • docs/source/examples/full-pipeline-web.md
  • docs/source/examples/hybrid-frontier-model.md
  • docs/source/examples/minimal-shallow-only.md
  • docs/source/extending/adding-a-tool.md
  • docs/source/get-started/installation.md
  • docs/source/resources/troubleshooting.md
  • frontends/benchmarks/freshqa/configs/config_full_workflow.yml
  • frontends/benchmarks/freshqa/configs/config_shallow_research_only.yml
  • mcp/tests/test_preclassification_integration.py
  • src/aiq_agent/agents/shallow_researcher/agent.py
  • src/aiq_agent/agents/shallow_researcher/prompts/researcher.j2
  • tests/aiq_agent/agents/shallow_researcher/test_agent.py
  • tests/aiq_agent/test_default_model_profiles.py
📜 Review details
⏰ Context from checks skipped due to timeout. (2)
  • GitHub Check: Lint and Hooks
  • GitHub Check: Pytest and Coverage
🧰 Additional context used
📓 Path-based instructions (15)
**/*

📄 CodeRabbit inference engine (CONTRIBUTING.md)

**/*: Do not include secrets, credentials, private hostnames, internal-only logs, customer data, or generated local artifacts.
Add or update tests for behavior changes.

**/*: For substantial behavior, authentication, UI, or architecture changes, open a design discussion before coding rather than landing a large unreviewed change.
Keep changes scoped to this repository and avoid editing adjacent repositories; treat each sources/* package independently and prefer the smallest package-scoped change.
Keep pull requests scoped, avoid unrelated files and generated artifacts, provide validation evidence, and ensure every commit has DCO sign-off.

Files:

  • docs/source/customization/mcp-tools.md
  • src/aiq_agent/agents/shallow_researcher/prompts/researcher.j2
  • src/aiq_agent/agents/shallow_researcher/agent.py
  • docs/source/examples/minimal-shallow-only.md
  • configs/config_web_default_guardrails.yml
  • docs/source/examples/full-pipeline-llamaindex.md
  • docs/source/get-started/installation.md
  • configs/config_openshell.yml
  • configs/config_web_azure_ai_search.yml
  • configs/config_frontier_models.yml
  • mcp/tests/test_preclassification_integration.py
  • docs/source/customization/tools-and-sources.md
  • configs/config_cli_default.yml
  • docs/source/resources/troubleshooting.md
  • docs/source/customization/swapping-models.md
  • docs/source/extending/adding-a-tool.md
  • docs/source/examples/hybrid-frontier-model.md
  • configs/config_mcp.yml
  • configs/config_web_frag_mcp_auth.yml
  • frontends/benchmarks/freshqa/configs/config_full_workflow.yml
  • tests/aiq_agent/agents/shallow_researcher/test_agent.py
  • docs/notebooks/0_Getting_Started_with_AIQ.ipynb
  • configs/config_web_default_llamaindex.yml
  • frontends/benchmarks/freshqa/configs/config_shallow_research_only.yml
  • docs/source/examples/full-pipeline-web.md
  • tests/aiq_agent/test_default_model_profiles.py
  • docs/source/customization/configuration-reference.md
  • configs/config_web_frag.yml
  • README.md
  • configs/config_web_opensearch.yml
**/*.{py,pyi,js,jsx,ts,tsx,yml,yaml,json,env,md}

📄 CodeRabbit inference engine (AGENTS.md)

Never commit secrets, tokens, or environment-specific hostnames; use environment variables and SecretStr, and resolve API keys at runtime.

Files:

  • docs/source/customization/mcp-tools.md
  • src/aiq_agent/agents/shallow_researcher/agent.py
  • docs/source/examples/minimal-shallow-only.md
  • configs/config_web_default_guardrails.yml
  • docs/source/examples/full-pipeline-llamaindex.md
  • docs/source/get-started/installation.md
  • configs/config_openshell.yml
  • configs/config_web_azure_ai_search.yml
  • configs/config_frontier_models.yml
  • mcp/tests/test_preclassification_integration.py
  • docs/source/customization/tools-and-sources.md
  • configs/config_cli_default.yml
  • docs/source/resources/troubleshooting.md
  • docs/source/customization/swapping-models.md
  • docs/source/extending/adding-a-tool.md
  • docs/source/examples/hybrid-frontier-model.md
  • configs/config_mcp.yml
  • configs/config_web_frag_mcp_auth.yml
  • frontends/benchmarks/freshqa/configs/config_full_workflow.yml
  • tests/aiq_agent/agents/shallow_researcher/test_agent.py
  • configs/config_web_default_llamaindex.yml
  • frontends/benchmarks/freshqa/configs/config_shallow_research_only.yml
  • docs/source/examples/full-pipeline-web.md
  • tests/aiq_agent/test_default_model_profiles.py
  • docs/source/customization/configuration-reference.md
  • configs/config_web_frag.yml
  • README.md
  • configs/config_web_opensearch.yml
docs/source/**/*

📄 CodeRabbit inference engine (AGENTS.md)

Update canonical documentation under docs/source/ when behavior, configuration, or workflows change; do not duplicate full documentation pages in skills.

Files:

  • docs/source/customization/mcp-tools.md
  • docs/source/examples/minimal-shallow-only.md
  • docs/source/examples/full-pipeline-llamaindex.md
  • docs/source/get-started/installation.md
  • docs/source/customization/tools-and-sources.md
  • docs/source/resources/troubleshooting.md
  • docs/source/customization/swapping-models.md
  • docs/source/extending/adding-a-tool.md
  • docs/source/examples/hybrid-frontier-model.md
  • docs/source/examples/full-pipeline-web.md
  • docs/source/customization/configuration-reference.md
{docs/**,README.md,CONTRIBUTING.md,SECURITY.md,CODE-OF-CONDUCT.md}

⚙️ CodeRabbit configuration file

{docs/**,README.md,CONTRIBUTING.md,SECURITY.md,CODE-OF-CONDUCT.md}: Review documentation for command accuracy, branch-name consistency, current CI and copy-pr-bot behavior, public
vs internal boundary clarity, stale examples, and links that no longer match the repository layout.

Files:

  • docs/source/customization/mcp-tools.md
  • docs/source/examples/minimal-shallow-only.md
  • docs/source/examples/full-pipeline-llamaindex.md
  • docs/source/get-started/installation.md
  • docs/source/customization/tools-and-sources.md
  • docs/source/resources/troubleshooting.md
  • docs/source/customization/swapping-models.md
  • docs/source/extending/adding-a-tool.md
  • docs/source/examples/hybrid-frontier-model.md
  • docs/notebooks/0_Getting_Started_with_AIQ.ipynb
  • docs/source/examples/full-pipeline-web.md
  • docs/source/customization/configuration-reference.md
  • README.md
{skills/**,.agents/skills/**,.claude/skills/**,.github/skill-eval/**}

⚙️ CodeRabbit configuration file

{skills/**,.agents/skills/**,.claude/skills/**,.github/skill-eval/**}: Review Agent Skill and skill-eval changes for valid skill metadata, deterministic eval specs, safe handling of
credentials, and clear generated-output boundaries. Do not flag SKILL.md files for missing SPDX headers when the
entrypoint intentionally starts with YAML frontmatter.

Files:

  • .agents/skills/aiq-configure-workflow/references/config-profiles.md
  • .agents/skills/aiq-configure-workflow/assets/config-scaffold.yml
src/aiq_agent/agents/**/*

⚙️ CodeRabbit configuration file

src/aiq_agent/agents/**/*: Review agent changes for research workflow correctness, graph state transitions, prompt/tool contracts,
HITL behavior, and failure handling. Flag changes that weaken source attribution, report generation,
async cancellation, checkpointing, or data-source selection without focused tests and docs.

Files:

  • src/aiq_agent/agents/shallow_researcher/prompts/researcher.j2
  • src/aiq_agent/agents/shallow_researcher/agent.py
**/*.py

📄 CodeRabbit inference engine (CONTRIBUTING.md)

**/*.py: Run uv run ruff check . and uv run ruff format --check . for root Python changes.
Run uv run pytest for root project Python changes.

Files:

  • src/aiq_agent/agents/shallow_researcher/agent.py
  • mcp/tests/test_preclassification_integration.py
  • tests/aiq_agent/agents/shallow_researcher/test_agent.py
  • tests/aiq_agent/test_default_model_profiles.py
**/*.{py,pyi}

📄 CodeRabbit inference engine (AGENTS.md)

**/*.{py,pyi}: Format and lint Python code with Ruff using line length 120, Python 3.11 targeting, rules E, F, W, I, PL, and UP, with single-line imports; do not reformat unrelated code.
Missing-secret paths must degrade gracefully by stubbing or skipping rather than crashing or leaking secrets.

Files:

  • src/aiq_agent/agents/shallow_researcher/agent.py
  • mcp/tests/test_preclassification_integration.py
  • tests/aiq_agent/agents/shallow_researcher/test_agent.py
  • tests/aiq_agent/test_default_model_profiles.py
**/*.{py,pyi,js,jsx,ts,tsx}

📄 CodeRabbit inference engine (AGENTS.md)

Never print or log secret values, including in tool output or error messages.

Files:

  • src/aiq_agent/agents/shallow_researcher/agent.py
  • mcp/tests/test_preclassification_integration.py
  • tests/aiq_agent/agents/shallow_researcher/test_agent.py
  • tests/aiq_agent/test_default_model_profiles.py
src/**/*.py

📄 CodeRabbit inference engine (AGENTS.md)

src/**/*.py: Respect authenticated data sources by honoring requires_auth, passing through per-user tokens, and using backend token validators; apply owner guardrails before loading protected report or artifact context into an agent.
Do not weaken or bypass AuthMiddleware, authentication validators, or authentication gating without prior design discussion.

Files:

  • src/aiq_agent/agents/shallow_researcher/agent.py
**/*.{yaml,yml}

📄 CodeRabbit inference engine (CONTRIBUTING.md)

For deployment changes, run the relevant Helm or Compose validation and describe the environment used.

Files:

  • configs/config_web_default_guardrails.yml
  • configs/config_openshell.yml
  • configs/config_web_azure_ai_search.yml
  • configs/config_frontier_models.yml
  • configs/config_cli_default.yml
  • configs/config_mcp.yml
  • configs/config_web_frag_mcp_auth.yml
  • frontends/benchmarks/freshqa/configs/config_full_workflow.yml
  • configs/config_web_default_llamaindex.yml
  • frontends/benchmarks/freshqa/configs/config_shallow_research_only.yml
  • configs/config_web_frag.yml
  • configs/config_web_opensearch.yml
configs/**/*.{yml,yaml}

📄 CodeRabbit inference engine (AGENTS.md)

Use _type names that come from the registered configuration class.

Files:

  • configs/config_web_default_guardrails.yml
  • configs/config_openshell.yml
  • configs/config_web_azure_ai_search.yml
  • configs/config_frontier_models.yml
  • configs/config_cli_default.yml
  • configs/config_mcp.yml
  • configs/config_web_frag_mcp_auth.yml
  • configs/config_web_default_llamaindex.yml
  • configs/config_web_frag.yml
  • configs/config_web_opensearch.yml
{deploy/**,configs/**}

⚙️ CodeRabbit configuration file

{deploy/**,configs/**}: Review deployment and config changes for secret separation, safe defaults, local-vs-production behavior, Helm and
Docker portability, and documentation parity. Flag committed credentials, environment-specific NVIDIA internals in
public defaults, and changes that make examples diverge from CI-tested paths.

Files:

  • configs/config_web_default_guardrails.yml
  • configs/config_openshell.yml
  • configs/config_web_azure_ai_search.yml
  • configs/config_frontier_models.yml
  • configs/config_cli_default.yml
  • configs/config_mcp.yml
  • configs/config_web_frag_mcp_auth.yml
  • configs/config_web_default_llamaindex.yml
  • configs/config_web_frag.yml
  • configs/config_web_opensearch.yml
mcp/**/*.py

📄 CodeRabbit inference engine (CONTRIBUTING.md)

For MCP changes, run the MCP development dependency setup and uv run --project mcp --extra dev pytest mcp/tests.

Files:

  • mcp/tests/test_preclassification_integration.py
mcp/**/*

📄 CodeRabbit inference engine (AGENTS.md)

Treat mcp/ as an independent uv project with its own lockfile, tests, and release assets; do not include it in the root workspace.

Files:

  • mcp/tests/test_preclassification_integration.py
🧠 Learnings (2)
📚 Learning: 2026-08-11T06:34:44.687Z
Learnt from: AjayThorve
Repo: NVIDIA-AI-Blueprints/aiq PR: 429
File: src/aiq_agent/agents/deep_researcher/register.py:302-307
Timestamp: 2026-08-11T06:34:44.687Z
Learning: In Python logging code that handles potentially sensitive exceptions, do not add `exc_info=True` solely to restore stack traces, because standard traceback formatting includes `str(exception)` and may expose provider, customer, or credential-bearing content. When sensitive-content redaction is required, log the exception type together with `log_content_metadata(exception)` instead.

Applied to files:

  • src/aiq_agent/agents/shallow_researcher/agent.py
  • mcp/tests/test_preclassification_integration.py
  • tests/aiq_agent/agents/shallow_researcher/test_agent.py
  • tests/aiq_agent/test_default_model_profiles.py
📚 Learning: 2026-07-06T23:55:42.908Z
Learnt from: cdgamarose-nv
Repo: NVIDIA-AI-Blueprints/aiq PR: 311
File: src/aiq_agent/agents/deep_researcher/prompts/orchestrator.j2:74-81
Timestamp: 2026-07-06T23:55:42.908Z
Learning: In agent test files (e.g., tests/aiq_agent/agents/*/test_agent.py), avoid brittle assertions that match exact substrings from prompt template files (such as *.j2 prompt wording). Prompt wording can change frequently, so instead assert structural/behavioral properties (e.g., that the prompt builder is called, that required sections/fields are present via stable markers, that the model output/agent behavior conforms to an expected schema, or that key actions are taken) rather than matching literal prompt text.

Applied to files:

  • tests/aiq_agent/agents/shallow_researcher/test_agent.py
🪛 LanguageTool
README.md

[style] ~295-~295: Consider a different adjective to strengthen your wording.
Context: ...amaIndex profile using GPT Sol/Luna for deep research and Nemotron 3.5 Lightning for...

(DEEP_PROFOUND)

🔇 Additional comments (32)
mcp/tests/test_preclassification_integration.py (1)

30-30: 📐 Maintainability & Code Quality

Run the required MCP validation.

The renamed target matches nemotron_lightning_intent_llm in configs/config_mcp.yml and the role-profile regression test. Run the MCP development dependency setup, then uv run --project mcp --extra dev pytest mcp/tests.

Source: Coding guidelines

.agents/skills/aiq-configure-workflow/assets/config-scaffold.yml (1)

20-42: LGTM!

Also applies to: 75-79

configs/config_cli_default.yml (1)

19-41: LGTM!

Also applies to: 122-122, 138-138

configs/config_frontier_models.yml (1)

53-75: LGTM!

Also applies to: 143-143, 162-162

configs/config_mcp.yml (1)

29-51: LGTM!

Also applies to: 102-102, 114-114

configs/config_openshell.yml (1)

31-53: LGTM!

Also applies to: 127-127, 139-139

configs/config_web_azure_ai_search.yml (1)

50-72: LGTM!

Also applies to: 194-194, 212-212

configs/config_web_default_guardrails.yml (1)

31-53: LGTM!

Also applies to: 231-231, 243-243

docs/source/customization/mcp-tools.md (1)

117-117: LGTM!

docs/source/customization/swapping-models.md (1)

13-24: LGTM!

Also applies to: 43-43, 79-79, 88-96

docs/source/customization/tools-and-sources.md (1)

140-140: LGTM!

docs/source/examples/full-pipeline-llamaindex.md (1)

46-68: LGTM!

Also applies to: 144-144, 163-163

configs/config_web_default_llamaindex.yml (1)

195-195: LGTM!

Also applies to: 211-211

configs/config_web_frag.yml (1)

165-165: LGTM!

Also applies to: 180-180

configs/config_web_frag_mcp_auth.yml (1)

214-214: LGTM!

Also applies to: 229-229

configs/config_web_opensearch.yml (1)

172-172: LGTM!

Also applies to: 187-187

.agents/skills/aiq-configure-workflow/references/config-profiles.md (1)

20-20: LGTM!

.secrets.baseline (1)

358-358: LGTM!

tests/aiq_agent/test_default_model_profiles.py (1)

12-79: LGTM!

Also applies to: 128-153

README.md (1)

111-112: LGTM!

Also applies to: 153-153, 290-300

docs/notebooks/0_Getting_Started_with_AIQ.ipynb (1)

74-74: LGTM!

Also applies to: 97-97, 369-375, 408-408

docs/source/customization/configuration-reference.md (1)

131-131: LGTM!

Also applies to: 382-382, 660-660, 675-675

docs/source/examples/full-pipeline-web.md (1)

64-92: LGTM!

Also applies to: 160-160, 187-187

docs/source/examples/hybrid-frontier-model.md (1)

22-41: LGTM!

Also applies to: 80-80, 95-95

docs/source/examples/minimal-shallow-only.md (1)

30-40: LGTM!

docs/source/extending/adding-a-tool.md (1)

282-282: LGTM!

docs/source/get-started/installation.md (1)

28-28: LGTM!

docs/source/resources/troubleshooting.md (1)

47-53: LGTM!

frontends/benchmarks/freshqa/configs/config_full_workflow.yml (1)

12-34: LGTM!

Also applies to: 70-89

frontends/benchmarks/freshqa/configs/config_shallow_research_only.yml (1)

2-2: LGTM!

Also applies to: 16-25, 36-51

src/aiq_agent/agents/shallow_researcher/prompts/researcher.j2 (1)

3-10: LGTM!

tests/aiq_agent/agents/shallow_researcher/test_agent.py (1)

203-203: LGTM!

Also applies to: 222-222, 242-242, 263-263, 319-329, 408-408, 824-824, 851-851, 878-878, 959-959

Comment thread configs/config_web_default_llamaindex.yml
Comment thread docs/notebooks/0_Getting_Started_with_AIQ.ipynb Outdated
Comment thread docs/source/examples/minimal-shallow-only.md Outdated
Comment thread src/aiq_agent/agents/shallow_researcher/agent.py Outdated
Comment thread src/aiq_agent/agents/shallow_researcher/agent.py
@AjayThorve
AjayThorve force-pushed the ajay/enable-nemotron-35-lightning-defaults branch 2 times, most recently from c3c0545 to 93f9e99 Compare August 11, 2026 15:53

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 1

Caution

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

⚠️ Outside diff range comments (2)
configs/config_web_default_guardrails.yml (1)

182-182: 🔒 Security & Privacy | 🟡 Minor | ⚡ Quick win

Add regression cases for the missing guardrail forms.

Extend test_default_deep_guardrails_block_document_exfiltration_requests with dump documents, dump all documents, and exfiltrate the knowledge base. The chained form is already covered.

🤖 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 `@configs/config_web_default_guardrails.yml` at line 182, Add regression inputs
to test_default_deep_guardrails_block_document_exfiltration_requests for “dump
documents,” “dump all documents,” and “exfiltrate the knowledge base,” while
retaining the existing chained-form coverage.

Source: Coding guidelines

README.md (1)

502-502: 🔒 Security & Privacy | 🟡 Minor | ⚡ Quick win

Narrow the logging-redaction claim or sanitize all built-in exception logs. callbacks.py:942 logs e directly, and workflow paths use unredacted exc_info=True tracebacks. Replace raw exception logging with the exception type and log_content_metadata(e), then add tests that sensitive exception text is absent from emitted logs.

🤖 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 `@README.md` at line 502, Update built-in exception logging, including
callbacks.py around the callback error handler and workflow paths using
exc_info=True, to avoid emitting raw exception text or traceback contents. Log
only the exception type together with log_content_metadata(e), and add tests
asserting sensitive exception text is absent from emitted logs.

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.

Inline comments:
In `@docs/source/customization/configuration-reference.md`:
- Around line 591-613: Update the configuration-reference aliases
nano_intent_llm and nano_agent_llm to the Lightning model-family names, and
change the corresponding model descriptions in the table, including the entry
around line 713 and the referenced entries around lines 660 and 675, from
Nemotron 3 Super to Lightning. Keep the configured model IDs unchanged.

---

Outside diff comments:
In `@configs/config_web_default_guardrails.yml`:
- Line 182: Add regression inputs to
test_default_deep_guardrails_block_document_exfiltration_requests for “dump
documents,” “dump all documents,” and “exfiltrate the knowledge base,” while
retaining the existing chained-form coverage.

In `@README.md`:
- Line 502: Update built-in exception logging, including callbacks.py around the
callback error handler and workflow paths using exc_info=True, to avoid emitting
raw exception text or traceback contents. Log only the exception type together
with log_content_metadata(e), and add tests asserting sensitive exception text
is absent from emitted logs.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Enterprise

Run ID: 4243ae75-3673-49bc-8dcc-a00a4c043397

📥 Commits

Reviewing files that changed from the base of the PR and between 1cf8424 and c3c0545.

📒 Files selected for processing (14)
  • README.md
  • configs/config_frontier_models.yml
  • configs/config_web_default_guardrails.yml
  • docs/notebooks/0_Getting_Started_with_AIQ.ipynb
  • docs/source/customization/configuration-reference.md
  • docs/source/customization/swapping-models.md
  • docs/source/examples/full-pipeline-llamaindex.md
  • docs/source/examples/hybrid-frontier-model.md
  • docs/source/examples/minimal-shallow-only.md
  • frontends/aiq_api/src/aiq_api/jobs/callbacks.py
  • src/aiq_agent/agents/shallow_researcher/agent.py
  • src/aiq_agent/common/callbacks.py
  • tests/aiq_agent/agents/shallow_researcher/test_agent.py
  • tests/aiq_agent/jobs/test_runner.py
📜 Review details
⏰ Context from checks skipped due to timeout. (3)
  • GitHub Check: Script Validation
  • GitHub Check: Lint and Hooks
  • GitHub Check: Pytest and Coverage
⚠️ CI failures not shown inline (2)

GitHub Actions: AIQ UI CI / 4_Install Dependencies.txt: feat: enable Nemotron 3.5 Lightning defaults

Conclusion: failure

View job details

##[group]Run npm audit --omit=dev --audit-level=high
 �[36;1mnpm audit --omit=dev --audit-level=high�[0m
 shell: /usr/bin/bash -e {0}
 ##[endgroup]
 # npm audit report
 dompurify  <=3.4.12
 Severity: moderate
 DOMPurify: IN_PLACE hook removal leaves a detached subtree executable, causing XSS - https://github.com/advisories/GHSA-55q2-fjhq-7xh7
 fix available via `npm audit fix`
 node_modules/dompurify
 nanoid  <3.3.17
 Severity: high
 nanoid: custom generators can loop indefinitely when size is zero - https://github.com/advisories/GHSA-2v37-7h3g-55p8
 fix available via `npm audit fix`
 node_modules/nanoid
 2 vulnerabilities (1 moderate, 1 high)
 To address all issues, run:
   npm audit fix
 ##[error]Process completed with exit code 1.

GitHub Actions: AIQ UI CI / Install Dependencies: feat: enable Nemotron 3.5 Lightning defaults

Conclusion: failure

View job details

##[group]Run npm audit --omit=dev --audit-level=high
 �[36;1mnpm audit --omit=dev --audit-level=high�[0m
 shell: /usr/bin/bash -e {0}
 ##[endgroup]
 # npm audit report
 dompurify  <=3.4.12
 Severity: moderate
 DOMPurify: IN_PLACE hook removal leaves a detached subtree executable, causing XSS - https://github.com/advisories/GHSA-55q2-fjhq-7xh7
 fix available via `npm audit fix`
 node_modules/dompurify
 nanoid  <3.3.17
 Severity: high
 nanoid: custom generators can loop indefinitely when size is zero - https://github.com/advisories/GHSA-2v37-7h3g-55p8
 fix available via `npm audit fix`
 node_modules/nanoid
 2 vulnerabilities (1 moderate, 1 high)
 To address all issues, run:
   npm audit fix
 ##[error]Process completed with exit code 1.
🧰 Additional context used
📓 Path-based instructions (13)
**/*

📄 CodeRabbit inference engine (CONTRIBUTING.md)

**/*: Do not include secrets, credentials, private hostnames, internal-only logs, customer data, or generated local artifacts.
Add or update tests for behavior changes.

**/*: For substantial behavior, authentication, UI, or architecture changes, open a design discussion before coding rather than landing a large unreviewed change.
Keep changes scoped to this repository and avoid editing adjacent repositories; treat each sources/* package independently and prefer the smallest package-scoped change.
Keep pull requests scoped, avoid unrelated files and generated artifacts, provide validation evidence, and ensure every commit has DCO sign-off.

Files:

  • frontends/aiq_api/src/aiq_api/jobs/callbacks.py
  • docs/source/examples/hybrid-frontier-model.md
  • docs/source/examples/full-pipeline-llamaindex.md
  • tests/aiq_agent/jobs/test_runner.py
  • README.md
  • src/aiq_agent/common/callbacks.py
  • configs/config_web_default_guardrails.yml
  • docs/notebooks/0_Getting_Started_with_AIQ.ipynb
  • docs/source/customization/swapping-models.md
  • src/aiq_agent/agents/shallow_researcher/agent.py
  • docs/source/customization/configuration-reference.md
  • configs/config_frontier_models.yml
  • tests/aiq_agent/agents/shallow_researcher/test_agent.py
  • docs/source/examples/minimal-shallow-only.md
**/*.py

📄 CodeRabbit inference engine (CONTRIBUTING.md)

**/*.py: Run uv run ruff check . and uv run ruff format --check . for root Python changes.
Run uv run pytest for root project Python changes.

Files:

  • frontends/aiq_api/src/aiq_api/jobs/callbacks.py
  • tests/aiq_agent/jobs/test_runner.py
  • src/aiq_agent/common/callbacks.py
  • src/aiq_agent/agents/shallow_researcher/agent.py
  • tests/aiq_agent/agents/shallow_researcher/test_agent.py
**/*.{py,pyi}

📄 CodeRabbit inference engine (AGENTS.md)

**/*.{py,pyi}: Format and lint Python code with Ruff using line length 120, Python 3.11 targeting, rules E, F, W, I, PL, and UP, with single-line imports; do not reformat unrelated code.
Missing-secret paths must degrade gracefully by stubbing or skipping rather than crashing or leaking secrets.

Files:

  • frontends/aiq_api/src/aiq_api/jobs/callbacks.py
  • tests/aiq_agent/jobs/test_runner.py
  • src/aiq_agent/common/callbacks.py
  • src/aiq_agent/agents/shallow_researcher/agent.py
  • tests/aiq_agent/agents/shallow_researcher/test_agent.py
**/*.{py,pyi,js,jsx,ts,tsx,yml,yaml,json,env,md}

📄 CodeRabbit inference engine (AGENTS.md)

Never commit secrets, tokens, or environment-specific hostnames; use environment variables and SecretStr, and resolve API keys at runtime.

Files:

  • frontends/aiq_api/src/aiq_api/jobs/callbacks.py
  • docs/source/examples/hybrid-frontier-model.md
  • docs/source/examples/full-pipeline-llamaindex.md
  • tests/aiq_agent/jobs/test_runner.py
  • README.md
  • src/aiq_agent/common/callbacks.py
  • configs/config_web_default_guardrails.yml
  • docs/source/customization/swapping-models.md
  • src/aiq_agent/agents/shallow_researcher/agent.py
  • docs/source/customization/configuration-reference.md
  • configs/config_frontier_models.yml
  • tests/aiq_agent/agents/shallow_researcher/test_agent.py
  • docs/source/examples/minimal-shallow-only.md
**/*.{py,pyi,js,jsx,ts,tsx}

📄 CodeRabbit inference engine (AGENTS.md)

Never print or log secret values, including in tool output or error messages.

Files:

  • frontends/aiq_api/src/aiq_api/jobs/callbacks.py
  • tests/aiq_agent/jobs/test_runner.py
  • src/aiq_agent/common/callbacks.py
  • src/aiq_agent/agents/shallow_researcher/agent.py
  • tests/aiq_agent/agents/shallow_researcher/test_agent.py
{src/aiq_agent/fastapi_extensions/**,frontends/aiq_api/src/aiq_api/**}

⚙️ CodeRabbit configuration file

{src/aiq_agent/fastapi_extensions/**,frontends/aiq_api/src/aiq_api/**}: Treat API, auth, and job-runner changes as externally visible contracts. Check authorization boundaries,
request tracing, async job lifecycle, websocket reconnect behavior, error responses, and cross-user data isolation.
Require tests for route behavior, access decisions, and job state transitions when those surfaces change.

Files:

  • frontends/aiq_api/src/aiq_api/jobs/callbacks.py
docs/source/**/*

📄 CodeRabbit inference engine (AGENTS.md)

Update canonical documentation under docs/source/ when behavior, configuration, or workflows change; do not duplicate full documentation pages in skills.

Files:

  • docs/source/examples/hybrid-frontier-model.md
  • docs/source/examples/full-pipeline-llamaindex.md
  • docs/source/customization/swapping-models.md
  • docs/source/customization/configuration-reference.md
  • docs/source/examples/minimal-shallow-only.md
{docs/**,README.md,CONTRIBUTING.md,SECURITY.md,CODE-OF-CONDUCT.md}

⚙️ CodeRabbit configuration file

{docs/**,README.md,CONTRIBUTING.md,SECURITY.md,CODE-OF-CONDUCT.md}: Review documentation for command accuracy, branch-name consistency, current CI and copy-pr-bot behavior, public
vs internal boundary clarity, stale examples, and links that no longer match the repository layout.

Files:

  • docs/source/examples/hybrid-frontier-model.md
  • docs/source/examples/full-pipeline-llamaindex.md
  • README.md
  • docs/notebooks/0_Getting_Started_with_AIQ.ipynb
  • docs/source/customization/swapping-models.md
  • docs/source/customization/configuration-reference.md
  • docs/source/examples/minimal-shallow-only.md
src/**/*.py

📄 CodeRabbit inference engine (AGENTS.md)

src/**/*.py: Respect authenticated data sources by honoring requires_auth, passing through per-user tokens, and using backend token validators; apply owner guardrails before loading protected report or artifact context into an agent.
Do not weaken or bypass AuthMiddleware, authentication validators, or authentication gating without prior design discussion.

Files:

  • src/aiq_agent/common/callbacks.py
  • src/aiq_agent/agents/shallow_researcher/agent.py
**/*.{yaml,yml}

📄 CodeRabbit inference engine (CONTRIBUTING.md)

For deployment changes, run the relevant Helm or Compose validation and describe the environment used.

Files:

  • configs/config_web_default_guardrails.yml
  • configs/config_frontier_models.yml
configs/**/*.{yml,yaml}

📄 CodeRabbit inference engine (AGENTS.md)

Use _type names that come from the registered configuration class.

Files:

  • configs/config_web_default_guardrails.yml
  • configs/config_frontier_models.yml
{deploy/**,configs/**}

⚙️ CodeRabbit configuration file

{deploy/**,configs/**}: Review deployment and config changes for secret separation, safe defaults, local-vs-production behavior, Helm and
Docker portability, and documentation parity. Flag committed credentials, environment-specific NVIDIA internals in
public defaults, and changes that make examples diverge from CI-tested paths.

Files:

  • configs/config_web_default_guardrails.yml
  • configs/config_frontier_models.yml
src/aiq_agent/agents/**/*

⚙️ CodeRabbit configuration file

src/aiq_agent/agents/**/*: Review agent changes for research workflow correctness, graph state transitions, prompt/tool contracts,
HITL behavior, and failure handling. Flag changes that weaken source attribution, report generation,
async cancellation, checkpointing, or data-source selection without focused tests and docs.

Files:

  • src/aiq_agent/agents/shallow_researcher/agent.py
🧠 Learnings (2)
📚 Learning: 2026-08-11T06:34:44.687Z
Learnt from: AjayThorve
Repo: NVIDIA-AI-Blueprints/aiq PR: 429
File: src/aiq_agent/agents/deep_researcher/register.py:302-307
Timestamp: 2026-08-11T06:34:44.687Z
Learning: In Python logging code that handles potentially sensitive exceptions, do not add `exc_info=True` solely to restore stack traces, because standard traceback formatting includes `str(exception)` and may expose provider, customer, or credential-bearing content. When sensitive-content redaction is required, log the exception type together with `log_content_metadata(exception)` instead.

Applied to files:

  • frontends/aiq_api/src/aiq_api/jobs/callbacks.py
  • tests/aiq_agent/jobs/test_runner.py
  • src/aiq_agent/common/callbacks.py
  • src/aiq_agent/agents/shallow_researcher/agent.py
  • tests/aiq_agent/agents/shallow_researcher/test_agent.py
📚 Learning: 2026-07-06T23:55:42.908Z
Learnt from: cdgamarose-nv
Repo: NVIDIA-AI-Blueprints/aiq PR: 311
File: src/aiq_agent/agents/deep_researcher/prompts/orchestrator.j2:74-81
Timestamp: 2026-07-06T23:55:42.908Z
Learning: In agent test files (e.g., tests/aiq_agent/agents/*/test_agent.py), avoid brittle assertions that match exact substrings from prompt template files (such as *.j2 prompt wording). Prompt wording can change frequently, so instead assert structural/behavioral properties (e.g., that the prompt builder is called, that required sections/fields are present via stable markers, that the model output/agent behavior conforms to an expected schema, or that key actions are taken) rather than matching literal prompt text.

Applied to files:

  • tests/aiq_agent/agents/shallow_researcher/test_agent.py
🪛 LanguageTool
docs/source/examples/hybrid-frontier-model.md

[style] ~9-~9: Consider a different adjective to strengthen your wording.
Context: ...with GPT Sol/Luna for clarification and deep research. ## Shipped Configuration | ...

(DEEP_PROFOUND)

README.md

[style] ~297-~297: Consider a different adjective to strengthen your wording.
Context: ...amaIndex profile using GPT Sol/Luna for deep research and Nemotron 3.5 Lightning for...

(DEEP_PROFOUND)

🔇 Additional comments (16)
src/aiq_agent/common/callbacks.py (1)

23-29: LGTM!

Also applies to: 83-114, 148-148, 173-173, 186-186, 197-210, 229-254

src/aiq_agent/agents/shallow_researcher/agent.py (2)

250-273: 📐 Maintainability & Code Quality

Confirm required root Python validation.

Run the required Ruff and pytest commands for this behavior change. Include the results in the PR validation evidence.

As per coding guidelines, “Run uv run ruff check . and uv run ruff format --check .” and “Run uv run pytest for root project Python changes.”

Source: Coding guidelines


41-49: LGTM!

Also applies to: 194-195, 223-226, 284-288, 344-347, 430-443

frontends/aiq_api/src/aiq_api/jobs/callbacks.py (1)

33-33: LGTM!

Also applies to: 45-46, 132-144, 395-415, 466-478, 744-744, 788-788

tests/aiq_agent/agents/shallow_researcher/test_agent.py (1)

20-20: LGTM!

Also applies to: 33-33, 205-205, 224-224, 244-244, 265-265, 304-374, 453-453, 642-675, 707-722, 828-863, 944-944, 971-971, 998-998, 1079-1079

tests/aiq_agent/jobs/test_runner.py (1)

66-66: LGTM!

Also applies to: 76-76, 377-389, 481-513, 671-803, 923-1036, 1614-1776, 1944-1983, 2096-2123, 2126-2177, 2198-2280

configs/config_frontier_models.yml (1)

54-76: LGTM!

Also applies to: 144-144, 163-163

configs/config_web_default_guardrails.yml (1)

31-53: LGTM!

Also applies to: 232-232, 244-244

README.md (1)

55-55: LGTM!

Also applies to: 111-123, 155-155, 292-302, 450-450

docs/notebooks/0_Getting_Started_with_AIQ.ipynb (1)

74-74: LGTM!

Also applies to: 97-97, 306-328, 369-375, 408-408, 807-813

docs/source/customization/configuration-reference.md (1)

122-122: LGTM!

Also applies to: 131-132, 382-382

docs/source/customization/swapping-models.md (1)

9-23: LGTM!

Also applies to: 29-40, 59-59, 95-95, 104-112

docs/source/examples/full-pipeline-llamaindex.md (2)

46-68: LGTM!

Also applies to: 144-144, 163-163


243-251: 🗄️ Data Integrity & Integration

The conversation-id contract is correctly implemented. The async route passes the header to the worker, which sets it before tool creation. knowledge_retrieval uses it as the collection and falls back to collection_name when absent.

docs/source/examples/hybrid-frontier-model.md (1)

8-29: LGTM!

Also applies to: 32-59

docs/source/examples/minimal-shallow-only.md (1)

28-40: LGTM!

Comment thread docs/source/customization/configuration-reference.md Outdated
Signed-off-by: Ajay Thorve <athorve@nvidia.com>
@AjayThorve
AjayThorve force-pushed the ajay/enable-nemotron-35-lightning-defaults branch from 93f9e99 to 9243641 Compare August 11, 2026 15:58

@tanleach tanleach 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.

LGTM 🌩️

@AjayThorve

Copy link
Copy Markdown
Member Author

/merge

@rapids-bot
rapids-bot Bot merged commit 4008f01 into release/2.2 Aug 11, 2026
16 checks passed
rapids-bot Bot pushed a commit that referenced this pull request Aug 12, 2026
#### Overview

- Keep the optional frontier profile role-specific instead of inheriting the repository Lightning defaults.
- Use GPT-5.6 Luna for intent classification, shallow research, source routing, and research.
- Keep GPT-5.6 Sol for clarification, orchestration, planning, and writing.
- Update profile documentation and add regression coverage for the exact frontier assignments.

PR #430 correctly moved the ordinary default profiles to Nemotron 3.5 Lightning, but it also applied that default to `config_frontier_models.yml`. The frontier profile is an explicit GPT Sol/Luna topology and should remain independently validated. Restoring its historical Super shallow assignment would reintroduce a deprecated model, so Luna is used for the bounded shallow role.

#### DCO sign-off for the squash commit

Signed-off-by: Ajay Thorve <athorve@nvidia.com>

#### Validation

- [x] `uv run pytest -q` — 2142 passed, 13 skipped.
- [x] Focused frontier/default model tests — 60 passed.
- [x] All changed-file pre-commit hooks, including Markdown link check and detect-secrets.
- [x] `nat validate --config_file configs/config_frontier_models.yml`.
- [x] Added regression coverage for the exact frontier model assignments.
- [x] Updated user-facing configuration documentation.
- [x] Confirmed the PR contains no secrets, credentials, or internal-only data.
- [x] Commits are GPG signed and DCO signed off.

Historical held-out FreshQA TEST validation for GPT-5.6 Luna used the November 24, 2025 dataset revision: 500/500 generation and judge coverage, zero judge errors, and 70.8% accuracy. This validates the profile wiring; it is not a claim that Luna is the strongest shallow-research model.

The runtime config and source are copied into the release image. A Git tag alone does not update an already-built RC container; a container intended to carry this correction must be rebuilt from the final corrected tag.

#### Where should reviewers start?

Start with `configs/config_frontier_models.yml`, then review the exact role assertions in `tests/aiq_agent/test_default_model_profiles.py` and the matching documentation.

#### Related Issues

- Relates to the August 2026 model-endpoint deprecation migration tracked by PR #430.




## Summary by CodeRabbit

* **New Features**
  * Updated the frontier model profile to use GPT-5.6 Luna for intent classification, shallow research, source routing, and deep-research execution.
  * GPT-5.6 Sol now supports clarification, orchestration, planning, and writing workflows.
  * Added clearer API-key requirements, including Tavily access.

* **Documentation**
  * Updated configuration guides, onboarding materials, and hybrid-model examples to reflect the revised model assignments and token settings.

* **Tests**
  * Expanded validation for frontier model selection, credentials, limits, retries, and tool-call settings.

Authors:
  - Ajay Thorve (https://github.com/AjayThorve)

Approvers:
  - Kyle Zheng (https://github.com/KyleZheng1284)

URL: #433
@AjayThorve AjayThorve added this to the v2.2 milestone Aug 12, 2026
@AjayThorve
AjayThorve deleted the ajay/enable-nemotron-35-lightning-defaults branch September 2, 2026 22:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants