fix(hermes): omit upstream tests from base image - #7827
Conversation
Signed-off-by: Senthil Ravichandran <senthilr@nvidia.com>
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Enterprise Run ID: 📒 Files selected for processing (2)
🚧 Files skipped from review as they are similar to previous changes (1)
📝 WalkthroughWalkthroughThe Hermes base image removes upstream test fixtures during archive extraction and checks their absence in base-image scans, final-image gates, and runtime smoke tests. A parity test executes the extraction layer against a local archive and verifies package metadata and test-directory removal. ChangesHermes packaging validation
Estimated code review effort: 3 (Moderate) | ~25 minutes Possibly related PRs
Suggested labels: Suggested reviewers: 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
PR Review Advisor — No blocking findings reportedAdvisor assessment: No blocking advisor findings reported Model lanes
Nemotron output stays in workflow artifacts and does not change the assessment above. E2E guidanceAdvisory only. E2E / PR Gate selects and runs jobs independently. Recommended E2E: This automated review informs maintainers. Warnings and suggestions do not require a response. A maintainer decides whether to merge. |
apurvvkumaria
left a comment
There was a problem hiding this comment.
Major blocker on exact head b1f101d: the cleaned Hermes base is not wired into the production image. This PR updates agents/hermes/Dockerfile.base, but agents/hermes/Dockerfile remains pinned to the pre-existing hermes-sandbox-base@sha256:c4aee5… digest. The resolver intentionally tries that tracked immutable digest before the branch-SHA and latest candidates, so normal production builds continue using the old base containing /opt/hermes/tests. The new smoke does not catch this because it builds Dockerfile.base locally and explicitly overrides BASE_IMAGE. Please publish the exact-head base for both linux/amd64 and linux/arm64, resolve its immutable multi-platform digest, update the final Dockerfile pin, then build and inspect the production image from that exact digest and let the exact-head gates settle. I found no other major correctness or security blockers.
Signed-off-by: Senthil Ravichandran <senthilr@nvidia.com>
|
Addressed in
The new exact-head CI is now running. |
There was a problem hiding this comment.
🧹 Nitpick comments (1)
test/hermes-final-image-layout.test.ts (1)
338-338: 🎯 Functional Correctness | 🔵 Trivial | 🏗️ Heavy liftPrefer a behavior-oriented assertion.
This only checks for an exact Dockerfile substring, so it can pass without proving
/opt/hermes/testsis absent from the final image and is brittle to formatting changes. Assert the built-image or parity-test outcome instead; retain this text check only as supplementary wiring coverage.🤖 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/hermes-final-image-layout.test.ts` at line 338, Update the assertion around finalStage to verify the built image or parity-test behavior that /opt/hermes/tests is absent from the final image, rather than relying solely on the exact Dockerfile substring. Keep the existing text assertion only as supplementary wiring coverage if needed.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.
Nitpick comments:
In `@test/hermes-final-image-layout.test.ts`:
- Line 338: Update the assertion around finalStage to verify the built image or
parity-test behavior that /opt/hermes/tests is absent from the final image,
rather than relying solely on the exact Dockerfile substring. Keep the existing
text assertion only as supplementary wiring coverage if needed.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Enterprise
Run ID: cd5c26f3-0fe9-41f5-aeea-d36de24b093a
📒 Files selected for processing (2)
agents/hermes/Dockerfiletest/hermes-final-image-layout.test.ts
# Conflicts: # agents/hermes/Dockerfile.base
<!-- markdownlint-disable MD041 --> ## Summary Add the canonical pre-tag release entry for NemoClaw v0.0.98. The dated entry records the user-visible changes merged after v0.0.97 and links each release theme to its published documentation. ## Changes - Add `docs/changelog/2026-07-29.mdx` with the exact `## v0.0.98` release heading. - Summarize Hermes 0.19, Deep Agents Code automation and skill safety, readiness diagnostics, lifecycle recovery, uninstall behavior, messaging conflicts, dependency hardening, and bounded diagnostics. - Use the parser-safe MDX SPDX comment and root-absolute routes for published OpenClaw, Hermes, and Deep Agents documentation. ### Source summary - [#7849](#7849) -> `docs/changelog/2026-07-29.mdx`: Record the Hermes 0.19 runtime migration repairs for cron state, dashboard seeding, and MCP naming. - [#7662](#7662) -> `docs/changelog/2026-07-29.mdx`: Record bounded gateway and Docker subprocess diagnostics. - [#7850](#7850) -> `docs/changelog/2026-07-29.mdx`: Record verified no-clobber Deep Agents Code skill installation. - [#7848](#7848) -> `docs/changelog/2026-07-29.mdx`: Record post-reboot delivery-chain recovery for visible OpenClaw sandboxes. - [#7831](#7831) -> `docs/changelog/2026-07-29.mdx`: Record OpenShell gateway-state preservation during uninstall. - [#7827](#7827) -> `docs/changelog/2026-07-29.mdx`: Record the removal of upstream test sources from published Hermes images. - [#7775](#7775) -> `docs/changelog/2026-07-29.mdx`: Record the blocking diagnostic for unsupported `DOCKER_HOST` values. - [#7833](#7833) -> `docs/changelog/2026-07-29.mdx`: Record reviewed Python dependency baselines for Hermes and Deep Agents Code images. - [#7771](#7771) -> `docs/changelog/2026-07-29.mdx`: Record the managed Hermes Agent 0.19.0 upgrade. - [#7811](#7811) -> `docs/changelog/2026-07-29.mdx`: Record fail-closed messaging channel conflict handling. - [#7797](#7797) -> `docs/changelog/2026-07-29.mdx`: Record the managed non-interactive Deep Agents Code JSON envelope. - [#7782](#7782) -> `docs/changelog/2026-07-29.mdx`: Record the storage-remediation readiness capability. - [#7784](#7784) -> `docs/changelog/2026-07-29.mdx`: Record the 120-second OpenShell readiness budget for sandbox recreation. - [#7810](#7810) -> `docs/changelog/2026-07-29.mdx`: Record rejection of stale Deep Agents Code security inventories. ## 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 native changelog contract, including the version heading, MDX SPDX comment, and published routes. - [ ] 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: `docs/changelog/2026-07-29.mdx` was reviewed against `docs/CONTRIBUTING.md` and `WRITING.md` for release meaning, terminology, structure, voice, sentence form, MDX structure, published routes, and code-sample presentation. The changelog contract passed 6 tests. The docs build completed with 0 errors and 2 existing Fern warnings. - Agent: Codex CLI <!-- docs-review-head-sha: e3221d1 --> <!-- docs-review-agents-blob-sha: c052d60 --> ## DGX Station Hardware Evidence - [ ] Tested on DGX Station - Tested commit: Not applicable. `scripts/prepare-dgx-station-host.sh` is unchanged. - 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 validate:pr` passed after refreshing `origin/main` 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 tests. - [ ] Applicable broad gate passed — `npm test` for broad runtime/test-harness changes; `npm run check` for repo-wide validation/coverage changes — command/result: Not run for this documentation-only change. - [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) — The build completed with 0 errors and 2 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 do not use frontmatter. --- Signed-off-by: San Dang <sdang@nvidia.com> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **New Features** - Added managed Hermes upgrades with verified releases, version reporting, and preserved configuration contracts. - Improved Deep Agents Code JSON output and skill installation behavior. - Added clearer Docker host and system readiness reporting. - Improved post-reboot delivery recovery and sandbox readiness timing. - **Bug Fixes** - Preserved gateway state when uninstalling with `--keep-openshell`. - Prevented conflicting messaging credentials from blocking onboarding and rebuilds. - Improved gateway diagnostics, dependency security, runtime filesystem protection, and evidence handling. - **Documentation** - Published the v0.0.98 release notes. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
Summary
The Hermes base image previously retained upstream test sources, including
intentionally hostile URL fixtures that are not used at runtime.
This removes those tests in the archive extraction layer so their bytes do not
enter the published image and fails both base and production builds if the test
tree is present.
Changes
teststree in the same layer that extracts thechecksum-verified Hermes archive.
root-entrypoint smoke.
published from the reviewed source head.
/opt/hermes/tests.Type of Change
Quality Gates
sources and adds image invariants without changing a user-visible command,
configuration, API, policy, or supported runtime behavior.
onboarding, inference, runner, sandbox, or messaging)
recorded — reviewer/approval link/justification: The nine-category security
review of exact head
6cb586da5passed with no findings. The diff adds nocredential, input, authorization, dependency, cryptographic, logging, or
privilege surface. It preserves checksum verification and main's reviewed
Hermes dependency patch while strengthening image-content checks.
check name, approval link, and follow-up issue:
Documentation Writer Review
no-docs-needed6cb586da5changes Hermes image contents and associatedregression and E2E coverage. It does not change a user-visible command,
output, configuration, API, UI, workflow, default, error contract, or
supported product behavior. The changed comments, test title, check messages,
and E2E descriptions follow the writing guide and controlled word list.
Focused integration tests passed 26/26, and
npm run check:diffpassed./root/documentation_writer_review_refreshDGX Station Hardware Evidence
scripts/prepare-dgx-station-host.shis unchanged.Verification
Signed-off-by:line and every commit appearsas
Verifiedin GitHubpre-commit,commit-msg, andpre-pushhooks passed, ornpm run check:diffpassed when hooks were skipped or unavailable — normalcommit hooks and
npm run check:diffpassed on exact head6cb586da5.marked not applicable above —
npm exec -- vitest run --project integration test/hermes-final-image-layout.test.ts test/hermes-share-mount-deps.test.ts test/hermes-dependency-review.test.tspassed 26/26.Base Images run
published both
linux/amd64andlinux/arm64from exact source headb1f101d6d5e857ac564fca052727727d83f89443.The immutable OCI index is
sha256:61feb0e33fae77ad2fcd1ae3aca2d6c484d7ef2c6ed8ebd431d3e514eab6cf2b;platform manifests are
sha256:2d0ea5ead021986dd2ff7f4d7379dc685d1c9acecf3cde7a20cb4137d60f225a(
linux/amd64) andsha256:e3798f541afd5e661cfb6aa844d636cd76e102a3b07ff659c8906411c9be5941(
linux/arm64).A native arm64 production build from that exact index completed all 64
BuildKit steps and runtime inspection confirmed
/opt/hermes/testsisabsent and Hermes reports version
0.19.0.npm run docsbuilds without warnings (doc changes only)guide
(doc changes only)
Signed-off-by: Senthil Ravichandran senthilr@nvidia.com
Signed-off-by: Julie Yaunches jyaunches@nvidia.com
Summary by CodeRabbit
Bug Fixes
Tests
/opt/hermes/testsand related leaked build-only paths.testsare removed, using sandboxed stubs to exercise patch handling safely.