fix(e2e): seed historical Hermes API key#7364
Conversation
Signed-off-by: Apurv Kumaria <akumaria@nvidia.com>
Signed-off-by: Apurv Kumaria <akumaria@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 (3)
📝 WalkthroughWalkthroughThe sandbox Dockerfile builder now accepts an API server key and writes it to the generated environment. The live rebuild test derives a key digest, propagates it through sandbox setup and cleanup commands, and includes it in credential leak checks. ChangesHermes API server key handling
Estimated code review effort: 2 (Simple) | ~10 minutes Suggested reviewers: 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
PR Review Advisor — Blocking findings reportedAdvisor assessment: Blockers require maintainer review 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: 2 optional E2E recommendations
Blockers
|
<!-- markdownlint-disable MD041 --> ## Summary Updates the reviewed OpenClaw distribution from 2026.6.10 to 2026.7.1 and the sandbox Node image to 22.23.1. The image build fails closed while applying integrity-pinned remediations for vulnerable Axios copies in the Slack and Teams archives and the affected OpenTelemetry Jaeger pair in diagnostics. The separately locked `mcporter@0.7.3` graph now resolves exact `@hono/node-server@2.0.11` and `fast-uri@3.1.4` releases and passes the reviewed audit, signature, install, and CLI checks. The sandbox credential contract remains unchanged: generated `openclaw.json` contains the non-secret `apiKey: "unused"` sentinel, while `COMPATIBLE_API_KEY` remains an OpenShell provider-environment placeholder whose real value is resolved at the OpenShell boundary. No literal provider credential is persisted in OpenClaw configuration or state. OpenClaw 2026.7.1 changed loopback shared-token CLI calls to omit the signed CLI device identity. That prevented the paired-device scope comparison from reaching the canonical `scope-upgrade` pairing gate. The compatibility patch now retains the signed CLI identity only after a stored operator device credential exists. The shared token still authenticates the loopback call; the paired-device record remains authoritative for scopes, and an `operator.admin` request must still create and receive canonical pairing approval. The installed-base contract is covered explicitly. A pinned E2E row installs NemoClaw v0.0.89 with OpenClaw 2026.6.10 from a registry-SRI-bound frozen source archive, materializes the legacy per-agent SQLite, Memory Core, and update-check state, then upgrades in place to 2026.7.1. The current installer is deliberately not given the provider credential, so the post-upgrade turn proves reuse of the credential already held by OpenShell. The shared frozen-installer adapter also keeps the historical v0.0.36, v0.0.55, v0.0.74, and v0.0.89 matrix deterministic without weakening the current candidate. The merge from current `main` preserves its Node `tar@7.5.20` package fix and bundled-npm tar remediation, rebinding the affected-base guard to the upgraded Node 22.23.1 image digest. For the E2E-only OpenClaw 2026.3.11 stale-upgrade fixture, the exact reviewed source shape is verified, the replacement `tar@7.5.19` archive is registry-SRI-bound, and that reviewed package is bundled into the remediated OpenClaw archive before installation. There is no completed-image scanner exception: any remaining affected copy fails the strict scan, and both stale-upgrade E2Es require the rebuilt current image inventory to be completely clean. ## Changes - Pin OpenClaw and its first-party plugin archives to reviewed 2026.7.1 artifacts and update the Node 22.23.1 image digest. - Remediate only the reviewed Axios and diagnostics OTEL subtrees, with original-package identity checks, integrity pins, canonical tree digests, and archive-shape drift rejection. - Lock the mcporter runtime to `@hono/node-server@2.0.11` and `fast-uri@3.1.4`; verify the script-disabled production install, registry signatures, ESM transport construction/close path, and installed CLI version. - Retain stored CLI device identity on loopback shared-token calls so OpenClaw's paired-device scope gate remains authoritative without moving provider secrets into OpenClaw state. - Preserve private device, credential, and SQLite state across startup and installed-base migrations, including bounded repair of legacy update-check state. - Add the frozen v0.0.89/OpenClaw 2026.6.10 to 2026.7.1 installed-base E2E row and retain the broader historical migration matrix. - Preserve current-main node-tar remediation, run it only after curl is installed in the DeepAgents and Hermes bases, and verify both patch helpers in the sandbox build context. - Exact-shape remediate the E2E-only 2026.3.11 source archive from `tar@7.5.11` to a registry-SRI-bound, bundled `tar@7.5.19`, with the completed-image scan remaining strict and exception-free. - Set the authoritative local base-build allowance to 90 seconds for upgrade-head matrix runs that must build the exact local base. - Incorporate current main's historical Hermes fixture repair so rebuild coverage seeds, rotates, redacts, and leak-scans the required per-run API server key. ## Type of Change - [ ] Code change (feature, bug fix, or refactor) - [x] Code change with doc updates - [ ] Doc only (prose changes, no code sample modifications) - [ ] Doc only (includes code sample changes) ## Quality Gates - [x] Tests added or updated for changed behavior - [ ] Existing tests cover changed behavior — justification: - [ ] Tests not applicable — justification: - [x] Docs updated for user-facing behavior changes - [ ] Docs not applicable — justification: - [x] Sensitive paths changed (security, policy, credentials, preflight, onboarding, inference, runner, sandbox, or messaging) - [x] Sensitive-path review completed or maintainer-approved waiver recorded — exact head reviewed during maintainer follow-through; the implementation fails closed on package identity, archive shape, dependency graph, SRI drift, and device-scope enforcement. - [ ] Non-success, skipped, or missing CI check accepted by maintainer — check name, approval link, and follow-up issue: ## DGX Station Hardware Evidence - [ ] Tested on DGX Station - Tested commit: not applicable - Station profile/scenario: not applicable - Result: not applicable - Supporting evidence: not applicable ## Verification - [x] PR description includes `Signed-off-by:` lines and all new commits are SSH-signed and DCO-clean. - [x] `npm run checks`, `npm run typecheck`, `npm run typecheck:cli`, `npm run source-shape:check`, and `npm run test-size:check` passed on the current-main reconciliation. - [x] Focused combined suites passed: 258 tests with one expected skip; an independent combined run passed 61/61; the fresh real OpenClaw 2026.7.1 tarball harness passed 5/5. - [x] The real upstream 2026.7.1 compiled distribution audit passed all five required compatibility-shape checks. - [x] After merging current `main` through #7360, the focused remediation/integrity/scanner suites passed 34/34 and the installed-base migration/workflow suites passed 19/19. - [x] After reconciling current `main` through #7364, the exact affected Hermes historical fixture passed 9/9, the focused OpenClaw contract set passed 81 tests with one expected skip, and repository/source-shape checks passed. - [ ] Exact-head required GitHub CI and E2E gate are in flight. - [x] No secrets, API keys, or credentials committed. Evidence: - Prior upgrade-head historical evidence: [five migration rows passed](https://github.com/NVIDIA/NemoClaw/actions/runs/29862234216), including the dedicated v0.0.89/OpenClaw 2026.6.10 installed-base upgrade. Current-head coverage is also selected in the full matrix below. - Scope-upgrade proof on parent head 54b59af: [focused run 29888373497](https://github.com/NVIDIA/NemoClaw/actions/runs/29888373497) and the independent full-matrix cell both passed the formerly deterministic `operator.admin` cron path. - Prior-head focused rebuild coverage: [run 29889345896](https://github.com/NVIDIA/NemoClaw/actions/runs/29889345896), covering both stale OpenClaw upgrade fixtures, DeepAgents routing, and both Hermes rebuild paths. - Preserved prior-head full E2E evidence: [run 29889347151](https://github.com/NVIDIA/NemoClaw/actions/runs/29889347151) improved the original 66-failure/22-pass signal to 19 failures/68 passes. Every remaining red was a pre-existing DeepAgents trust-fixture failure, hosted inference capacity error, runner loss/cancellation, or transient load/SSH failure; every OpenClaw upgrade, rebuild, pairing, and installed-base migration path passed. The intermediate-head [replay 29888849758](https://github.com/NVIDIA/NemoClaw/actions/runs/29888849758) remains active append-only evidence. - Current exact-head append-only full matrix: [run 29893928454](https://github.com/NVIDIA/NemoClaw/actions/runs/29893928454), queued without canceling or replacing the active replay. - Current exact-head required CI: [run 29893824224](https://github.com/NVIDIA/NemoClaw/actions/runs/29893824224), [security CodeQL 29893824206](https://github.com/NVIDIA/NemoClaw/actions/runs/29893824206), and [E2E gate 29893823011](https://github.com/NVIDIA/NemoClaw/actions/runs/29893823011). --- Signed-off-by: Julie Yaunches <jyaunches@nvidia.com> Signed-off-by: Aaron Erickson <aerickson@nvidia.com> --------- Signed-off-by: Julie Yaunches <jyaunches@nvidia.com> Signed-off-by: Aaron Erickson <aerickson@nvidia.com> Co-authored-by: Aaron Erickson <aerickson@nvidia.com>
<!-- markdownlint-disable MD041 --> ## Summary Add the canonical `v0.0.91` changelog entry that was missed before the release tag was cut. Correct the custom-image compatibility guidance because the tagged code still accepts the legacy inference route selector instead of removing it in v0.0.91. ## Changes - Add `docs/changelog/2026-07-22.mdx` with the release summary and detailed security, rebuild, Hermes, DGX Station, and historical-validation changes from the published v0.0.91 announcement. - Link shipped behavior to the most specific published OpenClaw and Hermes documentation routes. - Correct the v0.0.90 changelog and command reference so they match the compatibility fallback present in the tagged v0.0.91 code without inventing a new removal version. - Keep the immutable v0.0.91 release tag unchanged; this is the documented post-release recovery path. Source summary: - [#7332](#7332), [#7289](#7289), and [#7294](#7294) -> `docs/changelog/2026-07-22.mdx`: Summarize completed-image `node-tar` remediation and current and historical container verification. - [#7213](#7213), [#7363](#7363), [#7366](#7366), and [#7369](#7369) -> `docs/changelog/2026-07-22.mdx`: Summarize trusted base preparation, backup reuse, deletion convergence, and rebuild confidence. - [#7212](#7212) -> `docs/changelog/2026-07-22.mdx`: Summarize the Hermes API bearer-token lifecycle and supported retrieval command. - [#7327](#7327) and [#7328](#7328) -> `docs/changelog/2026-07-22.mdx`: Summarize qualified DGX Station guidance and reproducible coding-agent installation instructions. - [#7355](#7355), [#7360](#7360), [#7362](#7362), and [#7364](#7364) -> `docs/changelog/2026-07-22.mdx`: Summarize restored historical OpenClaw upgrade and Hermes rebuild validation. - [#7189](#7189) -> `docs/changelog/2026-07-20.mdx`, `docs/reference/commands.mdx`: Correct its forward-looking removal deadline after v0.0.91 shipped with the documented legacy fallback still present. - [#7282](#7282), [#7306](#7306), and [#7341](#7341) need no additional user-guide update because they already update their owned contributor or user-facing text directly. ## 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 dated changelog structure, SPDX syntax, version ordering, 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: ## DGX Station Hardware Evidence - [ ] Tested on DGX Station - Tested commit: Not applicable; this documentation-only PR does not change Station preparation or runtime behavior. - 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` (6 passed). - [ ] Applicable broad gate passed — `npm test` for broad runtime/test-harness changes; `npm run check` for repo-wide validation/coverage changes — not run; this is a focused 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) — completed with 0 errors and 2 existing site-wide 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) — the native changelog entry uses the required parser-safe MDX SPDX comment and intentionally has no frontmatter. --- Signed-off-by: Apurv Kumaria <akumaria@nvidia.com> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Documentation** * Updated v0.0.91 guidance for custom Dockerfiles, including continued legacy compatibility and recommended migration to `NEMOCLAW_INFERENCE_PROVIDER_ID`. * Added release notes covering image security scanning, safer rebuild behavior, token management, DGX Station guidance, and deterministic release validation. * Clarified that existing custom images may continue using the legacy selector temporarily, with fallback removal planned for a future release. <!-- end of auto-generated comment: release notes by coderabbit.ai --> Signed-off-by: Apurv Kumaria <akumaria@nvidia.com> Co-authored-by: cjagwani <cjagwani@nvidia.com>
Summary
Repair the
rebuild-hermesandrebuild-hermes-stale-baselive fixtures after the historical sandbox began failing the API bearer-token lifecycle check before rebuild. The synthetic old sandbox now contains a valid per-run API server key, so the test can verify that rebuild rotates it and then keeps the new token stable.Related Issue
Follow-up to #7144.
Changes
API_SERVER_KEYin the synthetic historical Hermes.envfile.Type of Change
Quality Gates
DGX Station Hardware Evidence
Verification
Signed-off-by:line and every commit appears asVerifiedin GitHubpre-commit,commit-msg, andpre-pushhooks passed, ornpm run check:diffpassed when hooks were skipped or unavailablenpm run check:diffpassed.npm run docsbuilds without warnings (doc changes only)Signed-off-by: Apurv Kumaria akumaria@nvidia.com
Summary by CodeRabbit