Skip to content

fix(security): backport libssh2 and Python fixes - #7679

Merged
apurvvkumaria merged 17 commits into
mainfrom
codex/python-libssh2-security-remediation
Jul 28, 2026
Merged

fix(security): backport libssh2 and Python fixes#7679
apurvvkumaria merged 17 commits into
mainfrom
codex/python-libssh2-security-remediation

Conversation

@senthilr-nv

@senthilr-nv senthilr-nv commented Jul 28, 2026

Copy link
Copy Markdown
Collaborator

Summary

The managed sandbox base images now install checksum-bound native packages that backport reviewed upstream fixes for four libssh2 memory-safety vulnerabilities and Python HTMLParser's incremental parsing complexity vulnerability.
The change preserves the supported Debian runtime identities, fails closed when reviewed source inputs drift, and verifies the fixed packages in both the base and completed images.

This internal PR replaces #7667 and includes the validated review follow-up fixes.

Changes

  • Build libssh2 1.11.1 with the reviewed upstream fixes for CVE-2026-66032, CVE-2026-66033, CVE-2026-66034, and CVE-2026-66035 after verifying the source archive and original Debian runtime package.
  • Run the full upstream libssh2 test suite, preserve the libssh2.so.1 soname, and reject any build that removes an exported Debian runtime symbol.
  • Package the reviewed CPython 3.13 fix for CVE-2026-15308 as a narrow replacement for html/parser.py, bound to the exact Debian standard-library version and fixed file hash.
  • Install and verify both packages in the OpenClaw, Hermes, and Deep Agents Code base images and repeat the package, inventory, file, runtime, and dpkg --audit checks in the completed images.
  • Rebuild the base images when the shared builder or reviewed patches change.
  • Record exact trusted full-E2E evidence for the longer authoritative local security-base rebuild without changing published-image performance budgets.
  • Bind every local-build calibration sample to its trusted artifact and trigger output, record native-security input provenance, and enforce the five-sample same-head removal condition.
  • Add focused package-contract tests and a public review record with immutable identities, validation requirements, and removal conditions.
  • Defer loading the existing MCP lifecycle module until command dispatch so CLI discovery and documentation parity do not evaluate the lifecycle graph.

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:
  • 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: Codex Desktop completed the repository's nine-category security review on exact SHA 8ee37535cbf19934fd6a26c8659e31f59dc7a36a; all categories passed with no findings. The refresh range-diff confirms every reviewed PR commit is unchanged against base 8d3e728b9. The calibration evidence follow-up changes only trusted CI records and contract tests; it adds no runtime, input, network, credential, authorization, privilege, dependency, or secret surface. Published-image budgets and all functional and security assertions remain enforced. The builder accepts no user-controlled network or package identity input, verifies every downloaded artifact before use, and preserves the existing container privilege boundary. MCP lifecycle behavior remains unchanged.
  • 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: The reviewed security documentation and exact-artifact calibration remain unchanged after the signed current-main merge.
  • Agent: Codex Desktop

DGX Station Hardware Evidence

  • Tested on DGX Station
  • Tested commit:
  • Station profile/scenario:
  • Result:
  • Supporting evidence:

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
  • Targeted behavior tests pass for the current change set, or tests are marked not applicable above — command/result or justification: On exact head 8ee37535c, 14 calibration contract assertions passed; exact refresh range-diff and diff checks passed. Vitest project membership and source-shape gates passed. Normal JSON, repository, secret, formatting, test-size, commit, and push hooks passed. The prior head passed the MCP regression, CLI build and typecheck, all eight CLI shards, the aggregate CLI gate, amd64 and arm64 image builds, and all four self-hosted image E2E jobs. Earlier validation recorded 128 focused assertions across performance calibration and E2E workflow contracts, plus 131 focused assertions across native packages, completed-image security, Hermes dependencies, dashboard lifecycle, and provisioning contracts.
  • Applicable broad gate passed — npm test for broad runtime/test-harness changes; npm run check for repo-wide validation/coverage changes — command/result: Native amd64 and arm64 builds for all three managed images remain enforced by current-head CI.
  • 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) — completed with 0 errors and 2 existing warnings.
  • Doc pages follow the style guide (doc changes only)
  • New doc pages include SPDX header and frontmatter (new pages only) — the new non-navigated Markdown review record has the required SPDX header; adjacent review records do not use Fern frontmatter.

Signed-off-by: Senthil Ravichandran senthilr@nvidia.com

Summary by CodeRabbit

  • Security
    • Added and pinned new native security packages (libssh2-1t64 and nemoclaw-python3.13-htmlparser-fix) across base and production images.
    • Strengthened immutable security inventory and runtime integrity verification with tighter version, checksum, and behavioral assertions (including libssh2 and html.parser checks).
  • Documentation
    • Added a sandbox base native package security review record for the remediations.
  • Tests
    • Expanded native security remediation and sandbox/provisioning test coverage with hardened fixtures and end-to-end validation.
  • Chores
    • Updated CI triggers to include additional native security build artifacts.

Signed-off-by: Senthil Ravichandran <senthilr@nvidia.com>
Signed-off-by: Senthil Ravichandran <senthilr@nvidia.com>
Signed-off-by: Senthil Ravichandran <senthilr@nvidia.com>
@senthilr-nv senthilr-nv added area: packaging Packages, images, registries, installers, or distribution area: security Security controls, permissions, secrets, or hardening bug-fix PR fixes a bug or regression platform: container Affects Docker, containerd, Podman, or images security v0.0.97 labels Jul 28, 2026
@senthilr-nv senthilr-nv self-assigned this Jul 28, 2026
@coderabbitai

coderabbitai Bot commented Jul 28, 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
📝 Walkthrough

Walkthrough

This change adds deterministic native security packages for libssh2 and Python 3.13 HTMLParser, integrates them into managed Docker images, extends image verification and inventories, and updates tests, fixtures, workflow triggers, security review documentation, and CI calibration.

Changes

Native security package remediation

Layer / File(s) Summary
Build script and security patches
scripts/security/build-native-security-packages.sh, scripts/security/patches/*, docs/security/..., .github/workflows/base-image.yaml, test/native-security-packages.test.ts
Builds pinned Debian packages, applies libssh2 and HTMLParser fixes, verifies artifacts, and tests builder wiring.
Docker builder and package installation
Dockerfile.base, agents/hermes/Dockerfile.base, agents/langchain-deepagents-code/Dockerfile.base
Adds native-security-builder stages, installs generated packages, updates manifests, and cleans temporary artifacts.
Final image security verification
Dockerfile, agents/hermes/Dockerfile, agents/langchain-deepagents-code/Dockerfile, src/lib/onboard/*, test/helpers/onboard-script-mocks.cjs
Checks package versions, inventory contents, parser hashes and behavior, and the loaded libssh2 version.
Parser fixtures and Docker test simulation
test/fixtures/security/*, test/helpers/*, test/hermes-share-mount-deps.test.ts, test/sandbox-base-*.test.ts
Stages the fixed parser, expands package probes and mocks, and validates installation, cleanup, parser behavior, and runtime tooling.
Related Docker contract tests
test/perl-critical-cve-remediation.test.ts, test/sandbox-provisioning.test.ts
Extracts targeted Docker RUN instructions and updates provisioning assertions for the revised package flow.

CI performance calibration

Layer / File(s) Summary
Calibration data and budget assertions
ci/*.json, test/onboard-performance-config-schema.test.ts
Updates local-build observations, allowances, descriptive metadata, and calibration-run uniqueness checks.

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

Possibly related PRs

Suggested labels: integration: hermes

Suggested reviewers: cv

Sequence Diagram(s)

sequenceDiagram
  participant Builder as native-security-builder
  participant BaseImage as Dockerfile.base
  participant Inventory as security inventory
  participant Runtime as final image runtime checks
  Builder->>BaseImage: build libssh2 and HTMLParser .deb artifacts
  BaseImage->>BaseImage: install and validate native packages
  BaseImage->>Inventory: record package versions
  BaseImage->>Runtime: run parser and libssh2 integrity checks
  Runtime-->>BaseImage: pass or fail image build
Loading
🚥 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
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.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the main change: backporting security fixes for libssh2 and Python.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/python-libssh2-security-remediation

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

@github-actions

Copy link
Copy Markdown
Contributor

@github-code-quality

github-code-quality Bot commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

Code Coverage Overview

Languages: TypeScript

TypeScript / code-coverage/plugin

The overall coverage in commit 8ee3753 in the codex/python-libssh2... branch remains at 96%, unchanged from commit 8d3e728 in the main branch.

TypeScript / code-coverage/cli

The overall coverage in commit 8ee3753 in the codex/python-libssh2... branch remains at 81%, unchanged from commit c3ab052 in the main branch.

Show a code coverage summary of the most impacted files.
File main c3ab052 codex/python-libssh2... 8ee3753 +/-
src/lib/onboard...iders/hermes.ts 89% 87% -2%
src/lib/policy/index.ts 61% 61% 0%
src/lib/state/registry/lock.ts 72% 72% 0%
src/lib/actions...-containment.ts 95% 95% 0%
src/lib/onboard...ind-contract.ts 98% 98% 0%
src/lib/sandbox...rce-identity.ts 88% 88% 0%
src/lib/state/r...gistry/types.ts 0% 0% 0%
src/lib/sandbox/config.ts 72% 74% +2%
src/lib/private-networks.ts 88% 93% +5%
src/commands/sandbox/mcp.ts 0% 85% +85%

Updated July 28, 2026 17:43 UTC

@github-actions

github-actions Bot commented Jul 28, 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 · medium confidence · 0 blockers · 0 warnings · 0 suggestions
  • Nemotron 3 Ultra (second opinion): Completed · high confidence · 0 blockers · 6 warnings · 0 suggestions
  • Model comparison: normalized findings differ; normalized E2E selections differ; Nemotron reported the same number of blockers, 6 more warnings, the same number of suggestions.

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, full-e2e, hermes-e2e, security-posture, onboard-repair, onboard-resume, ubuntu-repo-cloud-langchain-deepagents-code

1 optional E2E recommendation
  • ubuntu-repo-cloud-openclaw

Workflow run details

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

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

Actionable comments posted: 3

Caution

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

⚠️ Outside diff range comments (1)
test/helpers/base-apt-security-functions.ts (1)

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

Restrict the one-file checksum path to parser.py.

count == 1 currently accepts a single checksum for any of the six Debian packages too. A Dockerfile that still downloads all packages but verifies only one archive would pass this mock. Track whether the matched record is python3.13/html/parser.py, then allow one record only for that parser verification.

🤖 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 `@test/helpers/base-apt-security-functions.ts` around lines 130 - 148, Update
the mocked sha256sum function to track whether the matched record is the
python3.13/html/parser.py entry, rather than allowing count == 1 for any
package. Keep count == 6 valid for the six Debian packages, and permit count ==
1 only when the parser.py record was matched.
🧹 Nitpick comments (1)
Dockerfile.base (1)

64-79: 🚀 Performance & Scalability | 🔵 Trivial | 🏗️ Heavy lift

Native libssh2/Python package build is duplicated (and re-tested) once per image variant. All three Dockerfile.base files independently run the identical native-security-builder stage — same apt packages, same build-native-security-packages.sh invocation, same full libssh2 upstream make check suite — to produce the exact same .deb artifacts per architecture. This triples CI build time/compute for artifacts that don't vary by image.

  • Dockerfile.base#L64-L79: build/test libssh2 once (e.g. in a shared builder image published to the registry, or a single job in base-image.yaml that all three Dockerfiles pull the resulting .debs from via COPY --from= a shared image reference) instead of rebuilding here.
  • agents/hermes/Dockerfile.base#L24-L39: consume the shared native-security artifact instead of re-running the builder stage.
  • agents/langchain-deepagents-code/Dockerfile.base#L12-L27: consume the shared native-security artifact instead of re-running the builder stage.
🤖 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 `@Dockerfile.base` around lines 64 - 79, Replace the duplicated native-security
builder invoked by the Dockerfile.base RUN step with one shared
artifact-producing build in base-image.yaml or a published shared builder image,
preserving the required libssh2/Python package outputs. Update Dockerfile.base
lines 64-79, agents/hermes/Dockerfile.base lines 24-39, and
agents/langchain-deepagents-code/Dockerfile.base lines 12-27 to consume those
shared .deb artifacts instead of rerunning build-native-security-packages.sh and
its tests.
🤖 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 `@agents/hermes/Dockerfile.base`:
- Around line 22-44: Use the same pinned Node.js Trixie base image digest for
both the native-security-builder stage and the final stage in Dockerfile.base.
Update the builder’s FROM declaration to match the final stage, preserving the
existing package installation, native build, and COPY flow.

In `@Dockerfile`:
- Around line 1758-1759: Replace every assert-based validation in Dockerfile
lines 1758-1759, agents/hermes/Dockerfile lines 784-785, and
agents/langchain-deepagents-code/Dockerfile lines 259-260 with explicit
conditional failures that remain active under Python optimization. Preserve each
check’s existing validation logic and make failures terminate the Docker build
with a clear error.

In `@scripts/security/build-native-security-packages.sh`:
- Around line 111-117: Update the download URLs for both the libssh2 package
flow and the libpython3.13-stdlib flow in the build script to use the
repository’s existing snapshot.debian.org URL pattern instead of deb.debian.org.
Preserve the current version, architecture, checksum verification, extraction,
and package metadata checks.

---

Outside diff comments:
In `@test/helpers/base-apt-security-functions.ts`:
- Around line 130-148: Update the mocked sha256sum function to track whether the
matched record is the python3.13/html/parser.py entry, rather than allowing
count == 1 for any package. Keep count == 6 valid for the six Debian packages,
and permit count == 1 only when the parser.py record was matched.

---

Nitpick comments:
In `@Dockerfile.base`:
- Around line 64-79: Replace the duplicated native-security builder invoked by
the Dockerfile.base RUN step with one shared artifact-producing build in
base-image.yaml or a published shared builder image, preserving the required
libssh2/Python package outputs. Update Dockerfile.base lines 64-79,
agents/hermes/Dockerfile.base lines 24-39, and
agents/langchain-deepagents-code/Dockerfile.base lines 12-27 to consume those
shared .deb artifacts instead of rerunning build-native-security-packages.sh and
its tests.
🪄 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: CHILL

Plan: Enterprise

Run ID: 4f6d4d4a-6f2f-4e70-98e5-deb1648627a6

📥 Commits

Reviewing files that changed from the base of the PR and between 2540869 and fdf47d3.

📒 Files selected for processing (23)
  • .github/workflows/base-image.yaml
  • Dockerfile
  • Dockerfile.base
  • agents/hermes/Dockerfile
  • agents/hermes/Dockerfile.base
  • agents/langchain-deepagents-code/Dockerfile
  • agents/langchain-deepagents-code/Dockerfile.base
  • docs/security/sandbox-base-2026-07-27-native-package-review.md
  • scripts/security/build-native-security-packages.sh
  • scripts/security/patches/libssh2-1.11.1-cve-2026.patch
  • scripts/security/patches/python3.13-htmlparser-cve-2026-15308.patch
  • src/lib/onboard/base-image.ts
  • src/lib/onboard/dockerfile-remote-dashboard-bind-contract.ts
  • test/fixtures/security/python3.13-html-parser-fixed.txt
  • test/helpers/base-apt-security-functions.ts
  • test/helpers/onboard-script-mocks.cjs
  • test/helpers/python-parser-security-fixture.ts
  • test/hermes-share-mount-deps.test.ts
  • test/native-security-packages.test.ts
  • test/perl-critical-cve-remediation.test.ts
  • test/sandbox-base-runtime-tools.test.ts
  • test/sandbox-base-security-packages.test.ts
  • test/sandbox-provisioning.test.ts
💤 Files with no reviewable changes (1)
  • test/sandbox-provisioning.test.ts

Comment thread agents/hermes/Dockerfile.base Outdated
Comment thread Dockerfile Outdated
Comment thread scripts/security/build-native-security-packages.sh
Signed-off-by: Senthil Ravichandran <senthilr@nvidia.com>
@senthilr-nv

Copy link
Copy Markdown
Collaborator Author

@coderabbitai ACK — the four actionable findings were valid and are addressed in 3e98dbbc2:

  • aligned the Hermes native builder with its pinned runtime base;
  • replaced optimization-sensitive Python assert probes with explicit failures across the managed images;
  • moved exact Debian inputs to the immutable snapshot; and
  • restricted the one-record checksum mock to the fixed parser.py record.

The libssh2 harness now executes all 25 top-level cases against a local OpenSSH fixture, including all 18 algorithm subcases, and fails on nested TAP errors. The exact Hermes arm64 builder passed and produced both packages; six focused integration files passed 100 tests, documentation passed, and all commit/push hooks passed.

The shared-artifact suggestion is a useful performance optimization but is intentionally separate: implementing a published shared builder would add artifact ownership and lifecycle decisions beyond this narrowly scoped security remediation.

@coderabbitai

coderabbitai Bot commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

Tip

For best results, initiate chat on the files or code changes.

@senthilr-nv Thanks for the detailed confirmation. The four actionable findings are addressed in 3e98dbbc2, and the expanded libssh2 harness plus focused integration coverage provides strong validation of the remediation.

I agree that publishing a shared builder is a separate lifecycle/ownership design decision and should remain out of scope for this targeted security backport.

🐇✅


✏️ Learnings added
Learnt from: senthilr-nv
URL: https://github.com/NVIDIA/NemoClaw/pull/7679

Timestamp: 2026-07-28T03:14:54.405Z
Learning: For PR `#7679`, a published shared native-security builder is intentionally out of scope for the targeted libssh2/Python security remediation because artifact ownership and lifecycle decisions require separate design work. Do not treat the lack of a shared builder as a blocker for this remediation.

Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.

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

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 `@test/native-security-packages.test.ts`:
- Around line 118-127: Update the assertions in the native security harness test
to compare the complete 25-element argumentsList in exact order, rather than
only its length and endpoints. Also compare the trimmed environment output
against the exact expected SSH configuration line, including
PerSourcePenalties=no and all required options.
🪄 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: CHILL

Plan: Enterprise

Run ID: b93507f6-fc02-4c5e-86b0-9a327d473ad7

📥 Commits

Reviewing files that changed from the base of the PR and between fdf47d3 and 3e98dbb.

📒 Files selected for processing (12)
  • Dockerfile
  • Dockerfile.base
  • agents/hermes/Dockerfile
  • agents/hermes/Dockerfile.base
  • agents/langchain-deepagents-code/Dockerfile
  • agents/langchain-deepagents-code/Dockerfile.base
  • docs/security/sandbox-base-2026-07-27-native-package-review.md
  • scripts/security/build-native-security-packages.sh
  • test/helpers/base-apt-security-functions.ts
  • test/helpers/python-parser-security-fixture.ts
  • test/hermes-share-mount-deps.test.ts
  • test/native-security-packages.test.ts
🚧 Files skipped from review as they are similar to previous changes (11)
  • test/helpers/python-parser-security-fixture.ts
  • agents/langchain-deepagents-code/Dockerfile
  • agents/hermes/Dockerfile.base
  • scripts/security/build-native-security-packages.sh
  • docs/security/sandbox-base-2026-07-27-native-package-review.md
  • Dockerfile.base
  • agents/langchain-deepagents-code/Dockerfile.base
  • Dockerfile
  • test/helpers/base-apt-security-functions.ts
  • agents/hermes/Dockerfile
  • test/hermes-share-mount-deps.test.ts

Comment thread test/native-security-packages.test.ts
Comment on lines +69 to +99
const result = spawnSync(
"bash",
[
"-c",
[
"set -euo pipefail",
'source "$1"',
'calls="$HARNESS_LOG/calls"',
'mapfile() { local target="$2" line; eval "$target=()"; while IFS= read -r line; do eval "$target+=(\\"\\$line\\")"; done; }',
'chmod() { printf "chmod %s\\n" "$*" >>"$calls"; }',
"id() { return 0; }",
'useradd() { printf "useradd %s\\n" "$*" >>"$calls"; }',
'chpasswd() { cat >/dev/null; printf "chpasswd\\n" >>"$calls"; }',
'install() { printf "install %s\\n" "$*" >>"$calls"; }',
'sed() { printf "sed %s\\n" "$*" >>"$calls"; }',
'make() { printf "make %s\\n" "$*" >>"$calls"; }',
'run_libssh2_tests "$2"',
].join("\n"),
"libssh2-harness",
BUILD_SCRIPT,
fixture,
],
{
encoding: "utf-8",
env: {
...process.env,
HARNESS_LOG: harnessLog,
NESTED_FAILURE: nestedFailure ? "1" : "0",
},
},
);
Signed-off-by: Senthil Ravichandran <senthilr@nvidia.com>
@apurvvkumaria
apurvvkumaria enabled auto-merge (squash) July 28, 2026 04:33
@senthilr-nv

Copy link
Copy Markdown
Collaborator Author

ACK PRA-1 — valid. The current calibration records the exact local-build trigger at adjustment scope, but it does not bind each allowance sample to trigger provenance or enforce a recalibration/removal condition. I will add those bounded evidence fields and contract assertions without changing the measured allowance.

@cjagwani cjagwani added v0.0.98 and removed v0.0.97 labels Jul 28, 2026
Signed-off-by: Senthil Ravichandran <senthilr@nvidia.com>
…2-security-remediation

Signed-off-by: Senthil Ravichandran <senthilr@nvidia.com>
@senthilr-nv

Copy link
Copy Markdown
Collaborator Author

PRA-1 is addressed in 704ddd34d: every allowance sample is now bound to the exact trusted e2e-full-e2e artifact path and local-build trigger output; the widened sample records the native-security input set; and the contract enforces replacement/removal after five successful same-head samples with unchanged inputs. The allowance remains 610,000 ms. Validation: 14/14 targeted assertions, exact Vitest project membership, source-shape, JSON/repository/secret/test-size hooks, and the refreshed range-diff all pass. Current reviewed head: 8ee37535c.

@apurvvkumaria
apurvvkumaria merged commit 29e3bb3 into main Jul 28, 2026
55 checks passed
@apurvvkumaria
apurvvkumaria deleted the codex/python-libssh2-security-remediation branch July 28, 2026 18:02
@cjagwani cjagwani mentioned this pull request Jul 28, 2026
23 tasks
cv pushed a commit that referenced this pull request Jul 28, 2026
<!-- markdownlint-disable MD041 -->
## Summary

Add the canonical dated changelog entry for NemoClaw v0.0.97 before the
release plan captures `origin/main`.
The entry groups the user-visible and maintainer-facing changes since
v0.0.96 while preserving the Deferred dual-Station status, experimental
runtime-identity boundary, and pending physical IGX validation.

## Changes

- Add `docs/changelog/2026-07-28.mdx` with the parser-safe MDX SPDX
comment and exact `## v0.0.97` heading.
- Summarize the 43 merged PRs in the release range, omitting
internal-only changes from the public entry and linking each grouped
change to its most specific published documentation.
- Keep the experimental Okta reference explicitly opt-in and outside
normal onboarding, keep the two-Station path Deferred, and state that
physical IGX Orin validation remains pending.

### Source summary

- [#7440](#7440),
[#7443](#7443), and
[#7445](#7445) ->
`docs/changelog/2026-07-28.mdx`: Document read-only host readiness
reports and fail-closed platform qualification.
- [#7030](#7030) ->
`docs/changelog/2026-07-28.mdx`: Document the Deferred trusted
two-Station vLLM evaluation.
- [#7265](#7265) ->
`docs/changelog/2026-07-28.mdx`: Document the bounded experimental
direct-runner Okta runtime-identity reference.
- [#7711](#7711) and
[#7648](#7648) ->
`docs/changelog/2026-07-28.mdx`: Document compatible-endpoint reasoning
effort and retired NVIDIA Build model paths.
- [#7746](#7746),
[#7763](#7763), and
[#7681](#7681) ->
`docs/changelog/2026-07-28.mdx`: Document safe compatible-provider
creation, replacement refusal, and narrow OpenShell bridge URL handling.
- [#7641](#7641),
[#7690](#7690),
[#7631](#7631), and
[#7710](#7710) ->
`docs/changelog/2026-07-28.mdx`: Document paused-container recovery,
recreation journaling, pre-mutation uninstall checks, and
source-checkout OpenShell selection.
- [#7624](#7624) and
[#7762](#7762) ->
`docs/changelog/2026-07-28.mdx`: Document Jetson release diagnostics and
bounded render-device group propagation.
- [#7639](#7639),
[#7760](#7760),
[#7721](#7721), and
[#7761](#7761) ->
`docs/changelog/2026-07-28.mdx`: Document Telegram, MCP media-type,
Hermes image-mode, and locked-restart fixes.
- [#7653](#7653) and
[#7680](#7680) ->
`docs/changelog/2026-07-28.mdx`: Document Deep Agents policy tasks and
the bounded Claude Code OAuth path.
- [#7679](#7679) ->
`docs/changelog/2026-07-28.mdx`: Document the checksum-bound libssh2 and
Python HTMLParser backports.
- [#7655](#7655),
[#7651](#7651),
[#7664](#7664),
[#7666](#7666),
[#7670](#7670),
[#7719](#7719), and
[#7741](#7741) ->
`docs/changelog/2026-07-28.mdx`: Document exact candidate E2E evidence,
Launchable selection, diagnostic consolidation, and trusted WSL
validation.

## Type of Change

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

## Quality Gates

- [ ] Tests added or updated for changed behavior
- [x] Existing tests cover changed behavior — justification:
`test/changelog-docs.test.ts` validates the dated changelog contract,
MDX header, heading uniqueness, and release-entry structure.
- [ ] Tests not applicable — justification:
- [x] Docs updated for user-facing behavior changes
- [ ] Docs not applicable — justification:
- [ ] 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:
- [ ] 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: The committed `docs/changelog/2026-07-28.mdx` blob exactly
matches the reviewed file. Completeness, factual accuracy, link shape,
parser-safe MDX header, one-sentence-per-line style, `.docs-skip`
compliance, and bounded product claims passed.
- Agent: Codex Desktop documentation writer subagent
<!-- docs-review-head-sha: da6aa27 -->
<!-- docs-review-agents-blob-sha: be20a09 -->

## DGX Station Hardware Evidence

- [ ] Tested on DGX Station
- Tested commit: Not applicable; this PR changes only the dated
changelog.
- Station profile/scenario: Not applicable.
- Result: Not applicable.
- Supporting evidence: Not applicable.

## 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 — `npx vitest run
test/changelog-docs.test.ts` passed 6/6.
- [ ] Applicable broad gate passed — `npm test` for broad
runtime/test-harness changes; `npm run check` for repo-wide
validation/coverage changes — not applicable to this doc-only release
entry.
- [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) —
completed with 0 errors and 2 pre-existing Fern warnings.
- [x] 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)
— native changelog entries use the required parser-safe MDX SPDX comment
and intentionally have no frontmatter.

---
Signed-off-by: Charan Jagwani <cjagwani@nvidia.com>


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

## Summary by CodeRabbit

* **New Features**
* Added improved host readiness reporting and Jetson onboarding
guidance.
* Added controls for reasoning effort with compatible endpoints and
enhanced managed MCP discovery.
  * Improved Deep Agents task publication and preset support.
* **Bug Fixes**
* Hardened provider switching, sandbox recovery, uninstall behavior, and
Telegram connectivity.
* Improved container image integrity checks, media-type handling, and
checksum validation.
  * Enhanced vLLM evaluation behavior and release diagnostics.
* **Documentation**
  * Added the NemoClaw v0.0.97 changelog.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: packaging Packages, images, registries, installers, or distribution area: security Security controls, permissions, secrets, or hardening bug-fix PR fixes a bug or regression platform: container Affects Docker, containerd, Podman, or images security

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants