Skip to content

chore(release): prepare AI-Q 2.2.0 - #379

Merged
rapids-bot[bot] merged 3 commits into
NVIDIA-AI-Blueprints:release/2.2from
tanleach:fix/aiq-3601-release-version
Jul 22, 2026
Merged

chore(release): prepare AI-Q 2.2.0#379
rapids-bot[bot] merged 3 commits into
NVIDIA-AI-Blueprints:release/2.2from
tanleach:fix/aiq-3601-release-version

Conversation

@tanleach

@tanleach tanleach commented Jul 22, 2026

Copy link
Copy Markdown
Collaborator

Set package and lock metadata to 2.2.0, update Compose defaults, and refresh Helm chart, image, archive, and installation references.

Align published documentation and MCP release metadata with the final version. Add regression coverage that keeps package, Compose, Helm, packaged chart, and docs versions synchronized.

Overview

AI-Q 2.2 release artifacts still reported package version 2.0.0 and defaulted deployments to 2.0.0 images.

This change:

  • Stamps package and lock metadata as 2.2.0.
  • Updates Compose and Helm defaults to 2.2.0 images.
  • Updates Helm chart metadata and regenerates the packaged child chart.
  • Updates deployment documentation and published documentation metadata.
  • Synchronizes MCP release metadata.
  • Adds regression coverage for package, Compose, Helm, packaged chart, and documentation version alignment.

DCO sign-off for the squash commit

Signed-off-by: Tanner Leach tleach@nvidia.com

Validation

  • uv lock --check

  • uv lock --project mcp --check

  • uv run --locked ruff check .

  • uv run --locked ruff format --check .

  • uv run --locked pytest — 1817 passed, 13 skipped

  • uv run --project mcp --extra dev pytest mcp/tests — 238 passed, 18 skipped

  • helm lint deploy/helm/deployment-k8s

  • helm lint deploy/helm/helm-charts-k8s/aiq

  • helm package deploy/helm/deployment-k8s --destination /tmp/opencode

  • helm show chart /tmp/opencode/aiq2-web-2.2.0.tgz

  • uv run --locked --extra docs make -C docs html

  • Verified Compose resolves the default and overridden image references correctly.

  • Built and installed the wheel in an isolated environment; aiq-agent reports 2.2.0.

  • Built the release container; importlib.metadata.version("aiq-agent") reports 2.2.0.

  • Public NGC 2.2.0 images and chart are not published yet, so the published-artifact and Brev smoke tests remain release gates.

  • I ran the relevant local checks or explained why they are not applicable.

  • I added or updated tests for behavior changes.

  • I updated documentation for user-facing or contributor-facing changes.

  • I confirmed this PR does not include secrets, credentials, or internal-only data.

  • I certify this contribution under the Developer Certificate of Origin (DCO) and signed my commits with git commit -s or an equivalent sign-off.

  • I replaced the DCO sign-off placeholder with my GitHub commit identity and kept the required angle brackets around the email address.

Where should reviewers start?

Start with tests/deploy/test_compose_deployment.py and tests/deploy/test_helm_deployment_k8s.py, which define the release metadata consistency contracts.

Related Issues

  • N/A

Summary by CodeRabbit

  • Release

    • Updated deployment artifacts (Docker Compose, Helm charts, and package metadata) to version 2.2.0.
    • Switched default pre-built image and chart references from 2.0.0 to 2.2.0 across Compose and Kubernetes/Helm installation and upgrade guides.
    • Updated documentation to align with the stable 2.2.0 release (replacing the previous release-candidate references).
  • Tests

    • Enhanced automated checks to confirm version consistency across compose image tags, Helm chart/package details, and related documentation.

Set package and lock metadata to 2.2.0, update Compose defaults, and refresh Helm chart, image, archive, and installation references.

Align published documentation and MCP release metadata with the final version. Add regression coverage that keeps package, Compose, Helm, packaged chart, and docs versions synchronized.

Signed-off-by: Tanner Leach <tleach@nvidia.com>
@tanleach
tanleach requested a review from a team July 22, 2026 01:15
@coderabbitai

coderabbitai Bot commented Jul 22, 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: 16177aad-1bf6-4cf8-aaed-0f33b71abbe8

📥 Commits

Reviewing files that changed from the base of the PR and between 41089a5 and 2a1c489.

⛔ Files ignored due to path filters (1)
  • mcp/uv.lock is excluded by !**/*.lock
📒 Files selected for processing (1)
  • deploy/helm/README.md
📜 Recent review details
🧰 Additional context used
📓 Path-based instructions (1)
{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:

  • deploy/helm/README.md
🔇 Additional comments (1)
deploy/helm/README.md (1)

34-34: LGTM!

Also applies to: 47-47, 81-89, 102-102, 117-117, 128-128, 138-138, 223-226, 253-253, 284-284, 300-300, 317-317, 343-343, 366-374


Walkthrough

The release is updated from pre-release or 2.0.0 values to 2.2.0 across package metadata, Compose and Helm deployment artifacts, deployment documentation, published documentation metadata, and compatibility validation tests.

Changes

Release Alignment

Layer / File(s) Summary
Release metadata and compatibility contracts
pyproject.toml, docs/source/project.json, docs/source/versions1.json, mcp/...
Package, documentation, SBOM, lock, and dependency compatibility baselines now use version 2.2.0.
Compose image versioning and validation
deploy/compose/*, docs/source/deployment/docker-compose.md, tests/deploy/test_compose_deployment.py
Compose image defaults and pre-built image examples use 2.2.0; tests validate image tags and published documentation metadata.
Helm chart metadata, images, and packaged chart
deploy/helm/deployment-k8s/*, deploy/helm/helm-charts-k8s/aiq/*, deploy/helm/examples/*, tests/deploy/test_helm_deployment_k8s.py
Helm metadata, image values, the packaged child chart, and OpenSearch example values are aligned to 2.2.0, with cross-artifact consistency checks.
Helm deployment instructions
deploy/helm/README.md, docs/source/deployment/kubernetes.md
Installation, upgrade, configuration, and chart URL examples reference the 2.2.0 chart; namespace and API key guidance is clarified.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Possibly related PRs

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title follows Conventional Commits, uses a valid lowercase type and scope, and accurately summarizes the release prep change.
Description check ✅ Passed The description matches the template sections and includes overview, DCO sign-off, validation, reviewer guidance, and related issues.
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

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

@tanleach
tanleach changed the base branch from develop to release/2.2 July 22, 2026 01:15

@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

🤖 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 `@deploy/helm/deployment-k8s/charts/aiq-0.0.5.tgz`:
- Line 1: Regenerate the aiq Helm chart archive from the
deploy/helm/helm-charts-k8s/aiq chart using the standard release packaging
workflow, ensuring the gzip header contains no unexpected metadata or unrelated
URL before publishing the rebuilt archive.
🪄 Autofix (Beta)

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: 9188f215-fc40-4363-bad1-6e9e064e9f36

📥 Commits

Reviewing files that changed from the base of the PR and between 0030bf4 and 41089a5.

⛔ Files ignored due to path filters (2)
  • mcp/uv.lock is excluded by !**/*.lock
  • uv.lock is excluded by !**/*.lock
📒 Files selected for processing (18)
  • deploy/compose/README.md
  • deploy/compose/docker-compose.yaml
  • deploy/helm/README.md
  • deploy/helm/deployment-k8s/Chart.yaml
  • deploy/helm/deployment-k8s/charts/aiq-0.0.5.tgz
  • deploy/helm/deployment-k8s/values.yaml
  • deploy/helm/examples/aws-opensearch-serverless-values.yaml
  • deploy/helm/helm-charts-k8s/aiq/Chart.yaml
  • docs/source/deployment/docker-compose.md
  • docs/source/deployment/kubernetes.md
  • docs/source/project.json
  • docs/source/versions1.json
  • mcp/scripts/check_license_inventory.py
  • mcp/tests/test_dependency_compatibility.py
  • mcp/tests/test_release_checks.py
  • pyproject.toml
  • tests/deploy/test_compose_deployment.py
  • tests/deploy/test_helm_deployment_k8s.py
📜 Review details
🧰 Additional context used
📓 Path-based instructions (6)
docs/source/**/*

📄 CodeRabbit inference engine (AGENTS.md)

Update the docs under docs/source/ when behavior, configuration, or workflows change

Files:

  • docs/source/project.json
  • docs/source/versions1.json
  • docs/source/deployment/docker-compose.md
  • docs/source/deployment/kubernetes.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/project.json
  • docs/source/versions1.json
  • docs/source/deployment/docker-compose.md
  • docs/source/deployment/kubernetes.md
{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:

  • deploy/helm/helm-charts-k8s/aiq/Chart.yaml
  • deploy/helm/examples/aws-opensearch-serverless-values.yaml
  • deploy/helm/deployment-k8s/Chart.yaml
  • deploy/helm/deployment-k8s/values.yaml
  • deploy/helm/deployment-k8s/charts/aiq-0.0.5.tgz
  • deploy/compose/docker-compose.yaml
  • deploy/compose/README.md
  • deploy/helm/README.md
{.github/**,ci/**,.pre-commit-config.yaml,pyproject.toml,uv.lock,mcp/pyproject.toml,mcp/uv.lock}

⚙️ CodeRabbit configuration file

{.github/**,ci/**,.pre-commit-config.yaml,pyproject.toml,uv.lock,mcp/pyproject.toml,mcp/uv.lock}: Review automation and packaging changes for least-privilege permissions, pinned versions where appropriate,
copy-pr-bot pull-request/ branch behavior, reproducible uv/npm setup, secret handling, and consistency with
the documented validation matrix.

Files:

  • pyproject.toml
**/*.py

📄 CodeRabbit inference engine (CONTRIBUTING.md)

Run ruff check and ruff format validation for Python code changes

**/*.py: Python code must be linted and formatted with Ruff using line length 120, target Python 3.11, rule sets E,F,W,I,PL,UP, and isort force-single-line configuration
Never commit secrets, tokens, or environment-specific hostnames; use environment variables and SecretStr instead, resolving API keys at runtime
Never print or log secret values, including in tool output or error messages
Missing-secret paths must degrade gracefully (stub/skip), not crash or leak
Do not hand-reformat unrelated code when making changes; match the existing import and formatting style

Files:

  • mcp/tests/test_dependency_compatibility.py
  • mcp/scripts/check_license_inventory.py
  • tests/deploy/test_helm_deployment_k8s.py
  • mcp/tests/test_release_checks.py
  • tests/deploy/test_compose_deployment.py
**/*test*.py

📄 CodeRabbit inference engine (CONTRIBUTING.md)

Run pytest for all behavior changes in Python code

Files:

  • mcp/tests/test_dependency_compatibility.py
  • tests/deploy/test_helm_deployment_k8s.py
  • mcp/tests/test_release_checks.py
  • tests/deploy/test_compose_deployment.py
🪛 ast-grep (0.44.1)
tests/deploy/test_helm_deployment_k8s.py

[warning] 110-110: XPath query is request-/variable-derived; use parameterized XPath to prevent injection.
Context: chart_archive_pattern.findall(documentation)
Note: [CWE-643] Improper Neutralization of Data within XPath Expressions ('XPath Injection').

(xpath-injection-python)

🔇 Additional comments (18)
pyproject.toml (1)

28-28: LGTM!

docs/source/project.json (1)

3-3: LGTM!

docs/source/versions1.json (1)

4-5: LGTM!

deploy/helm/deployment-k8s/Chart.yaml (1)

5-6: LGTM!

deploy/helm/helm-charts-k8s/aiq/Chart.yaml (1)

2-2: LGTM!

deploy/helm/deployment-k8s/values.yaml (1)

40-40: LGTM!

Also applies to: 209-209

deploy/helm/examples/aws-opensearch-serverless-values.yaml (1)

15-15: LGTM!

tests/deploy/test_helm_deployment_k8s.py (1)

16-35: 📐 Maintainability & Code Quality

Run pytest tests/deploy/test_helm_deployment_k8s.py in an environment with pytest installed.

mcp/scripts/check_license_inventory.py (1)

33-33: LGTM!

mcp/tests/test_dependency_compatibility.py (1)

30-30: LGTM!

mcp/tests/test_release_checks.py (1)

184-184: LGTM!

Also applies to: 204-204, 249-249, 313-313, 330-330

deploy/compose/docker-compose.yaml (1)

21-22: LGTM!

Also applies to: 32-32, 79-79

deploy/compose/README.md (1)

111-120: LGTM!

docs/source/deployment/docker-compose.md (1)

201-210: LGTM!

tests/deploy/test_compose_deployment.py (2)

5-8: LGTM!

Also applies to: 19-26


29-70: 📐 Maintainability & Code Quality

Confirm the required Python validation before merge.

The release-contract tests are logically aligned with the 2.2.0 metadata, but the supplied context does not show validation results. Confirm Ruff check/format validation and pytest pass for the changed Python files.

As per coding guidelines, Python changes require Ruff check and format validation, and behavior changes in test files require pytest.

Source: Coding guidelines

deploy/helm/README.md (1)

34-34: LGTM!

Also applies to: 47-47, 81-89, 102-102, 117-117, 128-128, 138-138, 223-226, 253-253, 284-284, 300-300, 317-317, 343-343

docs/source/deployment/kubernetes.md (1)

67-80: LGTM!

Also applies to: 91-91, 112-112, 197-197, 215-215, 231-231, 256-256, 304-304

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

Caution

Inline review comments failed to post. This is likely due to GitHub's internal server error or limits when posting large numbers of comments. If you are seeing this consistently it is likely a permissions issue. Please check "Moderation" -> "Code review limits" under your organization settings.

Actionable comments posted: 1

🤖 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 `@deploy/helm/deployment-k8s/charts/aiq-0.0.5.tgz`:
- Line 1: Regenerate the aiq Helm chart archive from the
deploy/helm/helm-charts-k8s/aiq chart using the standard release packaging
workflow, ensuring the gzip header contains no unexpected metadata or unrelated
URL before publishing the rebuilt archive.
🪄 Autofix (Beta)

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: 9188f215-fc40-4363-bad1-6e9e064e9f36

📥 Commits

Reviewing files that changed from the base of the PR and between 0030bf4 and 41089a5.

⛔ Files ignored due to path filters (2)
  • mcp/uv.lock is excluded by !**/*.lock
  • uv.lock is excluded by !**/*.lock
📒 Files selected for processing (18)
  • deploy/compose/README.md
  • deploy/compose/docker-compose.yaml
  • deploy/helm/README.md
  • deploy/helm/deployment-k8s/Chart.yaml
  • deploy/helm/deployment-k8s/charts/aiq-0.0.5.tgz
  • deploy/helm/deployment-k8s/values.yaml
  • deploy/helm/examples/aws-opensearch-serverless-values.yaml
  • deploy/helm/helm-charts-k8s/aiq/Chart.yaml
  • docs/source/deployment/docker-compose.md
  • docs/source/deployment/kubernetes.md
  • docs/source/project.json
  • docs/source/versions1.json
  • mcp/scripts/check_license_inventory.py
  • mcp/tests/test_dependency_compatibility.py
  • mcp/tests/test_release_checks.py
  • pyproject.toml
  • tests/deploy/test_compose_deployment.py
  • tests/deploy/test_helm_deployment_k8s.py
📜 Review details
🔇 Additional comments (18)
pyproject.toml (1)

28-28: LGTM!

docs/source/project.json (1)

3-3: LGTM!

docs/source/versions1.json (1)

4-5: LGTM!

deploy/helm/deployment-k8s/Chart.yaml (1)

5-6: LGTM!

deploy/helm/helm-charts-k8s/aiq/Chart.yaml (1)

2-2: LGTM!

deploy/helm/deployment-k8s/values.yaml (1)

40-40: LGTM!

Also applies to: 209-209

deploy/helm/examples/aws-opensearch-serverless-values.yaml (1)

15-15: LGTM!

tests/deploy/test_helm_deployment_k8s.py (1)

16-35: 📐 Maintainability & Code Quality

Run pytest tests/deploy/test_helm_deployment_k8s.py in an environment with pytest installed.

mcp/scripts/check_license_inventory.py (1)

33-33: LGTM!

mcp/tests/test_dependency_compatibility.py (1)

30-30: LGTM!

mcp/tests/test_release_checks.py (1)

184-184: LGTM!

Also applies to: 204-204, 249-249, 313-313, 330-330

deploy/compose/docker-compose.yaml (1)

21-22: LGTM!

Also applies to: 32-32, 79-79

deploy/compose/README.md (1)

111-120: LGTM!

docs/source/deployment/docker-compose.md (1)

201-210: LGTM!

tests/deploy/test_compose_deployment.py (2)

5-8: LGTM!

Also applies to: 19-26


29-70: 📐 Maintainability & Code Quality

Confirm the required Python validation before merge.

The release-contract tests are logically aligned with the 2.2.0 metadata, but the supplied context does not show validation results. Confirm Ruff check/format validation and pytest pass for the changed Python files.

As per coding guidelines, Python changes require Ruff check and format validation, and behavior changes in test files require pytest.

Source: Coding guidelines

deploy/helm/README.md (1)

34-34: LGTM!

Also applies to: 47-47, 81-89, 102-102, 117-117, 128-128, 138-138, 223-226, 253-253, 284-284, 300-300, 317-317, 343-343

docs/source/deployment/kubernetes.md (1)

67-80: LGTM!

Also applies to: 91-91, 112-112, 197-197, 215-215, 231-231, 256-256, 304-304

🛑 Comments failed to post (1)
deploy/helm/deployment-k8s/charts/aiq-0.0.5.tgz (1)

1-1: 🔒 Security & Privacy | 🟠 Major | ⚡ Quick win

Rebuild the chart archive without the unexpected gzip metadata.

The gzip extra header encodes https://youtu.be/z9Uz1icjwrM before the Helm comment. This is unrelated to chart content, and the added tar-member comparison will not detect it. Regenerate the archive from deploy/helm/helm-charts-k8s/aiq using the release packaging workflow before publishing.

🤖 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 `@deploy/helm/deployment-k8s/charts/aiq-0.0.5.tgz` at line 1, Regenerate the
aiq Helm chart archive from the deploy/helm/helm-charts-k8s/aiq chart using the
standard release packaging workflow, ensuring the gzip header contains no
unexpected metadata or unrelated URL before publishing the rebuilt archive.

@tanleach

Copy link
Copy Markdown
Collaborator Author

/ok to test 2a1c489

@tanleach

Copy link
Copy Markdown
Collaborator Author

/ok to test 1dd0a6f

@cdgamarose-nv cdgamarose-nv 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.

Looks good!
Just one note, we may need to update the third party license file with any updated package versions or new packages

@tanleach

Copy link
Copy Markdown
Collaborator Author

/merge

@rapids-bot
rapids-bot Bot merged commit fabe7e1 into NVIDIA-AI-Blueprints:release/2.2 Jul 22, 2026
14 of 15 checks passed
@tanleach
tanleach deleted the fix/aiq-3601-release-version branch July 23, 2026 00:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants