chore(release): prepare AI-Q 2.2.0 - #379
Conversation
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>
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Enterprise Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (1)
📜 Recent review details🧰 Additional context used📓 Path-based instructions (1){deploy/**,configs/**}⚙️ CodeRabbit configuration file
Files:
🔇 Additional comments (1)
WalkthroughThe 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. ChangesRelease Alignment
Estimated code review effort: 3 (Moderate) | ~20 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
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
⛔ Files ignored due to path filters (2)
mcp/uv.lockis excluded by!**/*.lockuv.lockis excluded by!**/*.lock
📒 Files selected for processing (18)
deploy/compose/README.mddeploy/compose/docker-compose.yamldeploy/helm/README.mddeploy/helm/deployment-k8s/Chart.yamldeploy/helm/deployment-k8s/charts/aiq-0.0.5.tgzdeploy/helm/deployment-k8s/values.yamldeploy/helm/examples/aws-opensearch-serverless-values.yamldeploy/helm/helm-charts-k8s/aiq/Chart.yamldocs/source/deployment/docker-compose.mddocs/source/deployment/kubernetes.mddocs/source/project.jsondocs/source/versions1.jsonmcp/scripts/check_license_inventory.pymcp/tests/test_dependency_compatibility.pymcp/tests/test_release_checks.pypyproject.tomltests/deploy/test_compose_deployment.pytests/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.jsondocs/source/versions1.jsondocs/source/deployment/docker-compose.mddocs/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.jsondocs/source/versions1.jsondocs/source/deployment/docker-compose.mddocs/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.yamldeploy/helm/examples/aws-opensearch-serverless-values.yamldeploy/helm/deployment-k8s/Chart.yamldeploy/helm/deployment-k8s/values.yamldeploy/helm/deployment-k8s/charts/aiq-0.0.5.tgzdeploy/compose/docker-compose.yamldeploy/compose/README.mddeploy/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.pymcp/scripts/check_license_inventory.pytests/deploy/test_helm_deployment_k8s.pymcp/tests/test_release_checks.pytests/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.pytests/deploy/test_helm_deployment_k8s.pymcp/tests/test_release_checks.pytests/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 QualityRun
pytest tests/deploy/test_helm_deployment_k8s.pyin an environment withpytestinstalled.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 QualityConfirm 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
There was a problem hiding this comment.
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
⛔ Files ignored due to path filters (2)
mcp/uv.lockis excluded by!**/*.lockuv.lockis excluded by!**/*.lock
📒 Files selected for processing (18)
deploy/compose/README.mddeploy/compose/docker-compose.yamldeploy/helm/README.mddeploy/helm/deployment-k8s/Chart.yamldeploy/helm/deployment-k8s/charts/aiq-0.0.5.tgzdeploy/helm/deployment-k8s/values.yamldeploy/helm/examples/aws-opensearch-serverless-values.yamldeploy/helm/helm-charts-k8s/aiq/Chart.yamldocs/source/deployment/docker-compose.mddocs/source/deployment/kubernetes.mddocs/source/project.jsondocs/source/versions1.jsonmcp/scripts/check_license_inventory.pymcp/tests/test_dependency_compatibility.pymcp/tests/test_release_checks.pypyproject.tomltests/deploy/test_compose_deployment.pytests/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 QualityRun
pytest tests/deploy/test_helm_deployment_k8s.pyin an environment withpytestinstalled.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 QualityConfirm 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/z9Uz1icjwrMbefore theHelmcomment. This is unrelated to chart content, and the added tar-member comparison will not detect it. Regenerate the archive fromdeploy/helm/helm-charts-k8s/aiqusing 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.
|
/ok to test 2a1c489 |
|
/ok to test 1dd0a6f |
cdgamarose-nv
left a comment
There was a problem hiding this comment.
Looks good!
Just one note, we may need to update the third party license file with any updated package versions or new packages
|
/merge |
fabe7e1
into
NVIDIA-AI-Blueprints:release/2.2
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:
DCO sign-off for the squash commit
Signed-off-by: Tanner Leach tleach@nvidia.com
Validation
uv lock --checkuv lock --project mcp --checkuv run --locked ruff check .uv run --locked ruff format --check .uv run --locked pytest— 1817 passed, 13 skippeduv run --project mcp --extra dev pytest mcp/tests— 238 passed, 18 skippedhelm lint deploy/helm/deployment-k8shelm lint deploy/helm/helm-charts-k8s/aiqhelm package deploy/helm/deployment-k8s --destination /tmp/opencodehelm show chart /tmp/opencode/aiq2-web-2.2.0.tgzuv run --locked --extra docs make -C docs htmlVerified Compose resolves the default and overridden image references correctly.
Built and installed the wheel in an isolated environment;
aiq-agentreports 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 -sor 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.pyandtests/deploy/test_helm_deployment_k8s.py, which define the release metadata consistency contracts.Related Issues
Summary by CodeRabbit
Release
Tests