Skip to content

feat(bench): add agent-runnable value benchmark harness (#5604) - #5649

Merged
ericksoa merged 13 commits into
NVIDIA:mainfrom
abhi-0906:feat/issue-5604-benchmark-harness
Jul 3, 2026
Merged

feat(bench): add agent-runnable value benchmark harness (#5604)#5649
ericksoa merged 13 commits into
NVIDIA:mainfrom
abhi-0906:feat/issue-5604-benchmark-harness

Conversation

@abhi-0906

@abhi-0906 abhi-0906 commented Jun 23, 2026

Copy link
Copy Markdown
Contributor

Summary

Adds a developer- and agent-runnable value benchmark under scripts/bench/, exposed as npm run bench. It emits nemoclaw.bench.v1 JSON and a concise Markdown report for live inference latency and trace-backed sandbox startup; request-path policy overhead remains explicitly unsupported until dedicated instrumentation exists.

Related Issue

Closes #5604

Changes

  • Measures OpenAI-compatible inference round trips and reports min/median/p95/mean/max.
  • Ingests validated production onboard traces for sandbox cold-start timing and sanitized comparison context.
  • Requires HTTPS except for true loopback HTTP, rejects URL credentials and redirects, and allowlists API-key variables to OPENAI_API_KEY and NVIDIA_INFERENCE_API_KEY.
  • Redacts query values and configured secrets, omits remote error bodies, rejects arbitrary HTTP 2xx responses, and replaces untrusted trace status text with fixed report-safe reasons.
  • Documents prerequisites, usage, schema, interpretation, and agent workflow in scripts/bench/README.md.
  • Adds unit and process-level CLI coverage for statistics, traces, endpoint and secret boundaries, output, exit status, and prerequisite failures.

Exact-head verification for e75419fe5dc80c007d854a8e00e95c7bdcee3350:

  • npx vitest run test/bench/bench.test.ts test/bench/bench-cli.test.ts — 53/53 passed.
  • npx vitest run --project cli src/lib/onboard/sandbox-readiness-tracing.test.ts src/lib/onboard/machine/phase-progress.test.ts — 35 passed, 1 expected skip.
  • npm run typecheck, npm run build:cli, npm run typecheck:cli, npm run lint, and repository policy checks — passed; lint reports one unrelated existing warning.
  • Production trace probe — sandbox and readiness timing ingested correctly after the latest main restack; policy overhead correctly remained unsupported because the current span measures setup rather than request-path shield overhead.
  • PR Review / Advisor — exact-head GPT review found no required fixes, resolve/justify items, or in-scope improvements; prior secret-boundary findings are resolved.
  • E2E / Advisor — no required or optional E2E runs or targets.

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 — exact-head advisor review covered endpoint confinement, API-key selection, output redaction, completion validation, and trace lineage/status/duration checks; see the PR Review / Advisor run above and the maintainer security approval.
  • Non-success, skipped, or missing CI check accepted by maintainer — automatic advisor jobs skip fork PRs by design; trusted manual exact-head PR-review and E2E runs are linked above. GPT produced a clean final review; the parallel Nemotron job completed but its synthesis JSON was unusable. Fork-advisor follow-up: ci: auto-retrigger branch-validation E2E on every commit and run advisors on fork PRs via workflow_run #6145. The conditional docs-only job is not applicable to this code PR.

Verification

  • PR description includes the DCO sign-off declaration and every commit appears as Verified in GitHub — 13/13 at exact head.
  • Git hooks passed during commit and push, or npx prek run --from-ref main --to-ref HEAD passes — not claimed.
  • Targeted tests pass for changed behavior
  • Full npm test passes (broad runtime changes only) — not required for this isolated developer benchmark; the exact-head GitHub CI shards provide broad coverage.
  • 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) — not applicable; this is not a doc-only PR.
  • Doc pages follow the style guide (doc changes only) — not applicable; only the benchmark README changed.
  • New doc pages include SPDX header and frontmatter (new pages only) — not applicable; no documentation page was added.

Signed-off-by: Abhimanyu Kumar abhimanyukumar7290@gmail.com
Signed-off-by: Aaron Erickson aerickson@nvidia.com

@copy-pr-bot

copy-pr-bot Bot commented Jun 23, 2026

Copy link
Copy Markdown

This pull request requires additional validation before any workflows can run on NVIDIA's runners.

Pull request vetters can view their responsibilities here.

Contributors can view more details about this message here.

@coderabbitai

coderabbitai Bot commented Jun 23, 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

A local benchmark harness is added under scripts/bench/ to measure inference round-trip latency, sandbox cold-start time, and policy-shield overhead, then emit JSON and Markdown reports. It includes shared utilities, a CLI runner, tests, documentation, and an npm bench script.

Changes

NemoClaw Value Benchmark Harness

Layer / File(s) Summary
Benchmark schema, stats, and redaction
scripts/bench/lib.ts
Defines benchmark schema constants, metric types, report structures, latency statistics, environment collection, URL redaction, secret scrubbing, and trace ingestion re-exports.
Trace validation and metric extraction
scripts/bench/trace-ingest.ts
Validates onboard trace artifacts, reads sandbox and policy spans, and converts them into latency metrics with ok, unsupported, or error statuses.
Inference timing and report rendering
scripts/bench/lib.ts
Builds chat-completions requests, measures live inference round trips, renders the Markdown benchmark report, and checks for blocking metric errors.
CLI parsing, report assembly, and output
scripts/bench/run.ts, package.json
Defines CLI options and usage text, parses flags, resolves API keys from environment variables, reads trace artifacts, assembles the report, validates prerequisites, writes JSON and Markdown outputs, and sets process exit codes. Adds the npm bench script entry.
Tests and README
test/bench/bench.test.ts, scripts/bench/README.md
Adds Vitest coverage for stats, URL helpers, redaction, inference timing, trace ingestion, markdown rendering, and blocking-error detection, plus README documentation for prerequisites, usage, outputs, and exit behavior.

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

Suggested reviewers: jyaunches, ericksoa, cjagwani

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 8.57% 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 The PR implements the requested benchmark harness, metrics, JSON/Markdown output, docs, secret handling, and clear unsupported/error behavior.
Out of Scope Changes check ✅ Passed The changes stay focused on the benchmark workflow, tests, and documentation with no obvious unrelated additions.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main change: adding an agent-runnable benchmark harness under scripts/bench.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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

@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 `@scripts/bench/run.ts`:
- Around line 222-223: The error messages in the preflight checks for missing
options.baseUrl and options.model only mention the OPENAI_BASE_URL and
OPENAI_MODEL environment variables, but the argument parser also accepts
NEMOCLAW_BENCH_BASE_URL and NEMOCLAW_BENCH_MODEL. Update both error message
strings to include all supported environment variable names so users are aware
of all available options during setup failures.
🪄 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: 1e9c6514-583c-4f42-a2ac-432d9f358db9

📥 Commits

Reviewing files that changed from the base of the PR and between a9f31e4 and 370217b.

📒 Files selected for processing (5)
  • package.json
  • scripts/bench/README.md
  • scripts/bench/lib.ts
  • scripts/bench/run.ts
  • test/bench/bench.test.ts

Comment thread scripts/bench/run.ts Outdated
@abhi-0906

Copy link
Copy Markdown
Contributor Author

CodeRabbit feedback addressed (commit 5a078c8): the preflight failure message now lists all supported environment variables (NEMOCLAW_BENCH_BASE_URL / NEMOCLAW_BENCH_MODEL alongside OPENAI_BASE_URL / OPENAI_MODEL).

@wscurran wscurran added area: performance Latency, throughput, resource use, benchmarks, or scaling feature PR adds or expands user-visible functionality labels Jun 23, 2026
@wscurran

Copy link
Copy Markdown
Contributor

✨ Thanks for the proposed benchmark harness that measures inference-round-trip, sandbox-cold-start, and policy-shield-overhead timings. This proposes a way to run npm run bench to emit machine-readable JSON and a concise Markdown value report for NemoClaw's first-use and inference-path performance.


Related open issues:

@abhi-0906
abhi-0906 force-pushed the feat/issue-5604-benchmark-harness branch from 5a078c8 to fd296cb Compare June 24, 2026 20:01
Add a developer- and agent-runnable benchmark under scripts/bench/ that answers
"is NemoClaw fast enough on this machine?" and emits both machine-readable JSON
(schema nemoclaw.bench.v1) and a concise Markdown value report.

v1 metrics:
- inference-round-trip: times N OpenAI-compatible /v1/chat/completions calls
  (warm-up + samples) and reports min/median/p95/mean/max.
- sandbox-cold-start and policy-shield-overhead: ingested from an existing
  onboard trace artifact (nemoclaw.sandbox.create_stream,
  nemoclaw.sandbox.readiness_wait, nemoclaw.policy.application spans); marked
  "unsupported" with a clear reason when no --trace is supplied.

Behavior:
- One documented command via `npm run bench` (tsx scripts/bench/run.ts).
- Fails clearly (non-zero) when endpoint/model/API key prerequisites are missing.
- Redacts URL userinfo and scrubs secret-shaped strings from all output; the API
  key is read from an env var, never a flag.
- Contacts only the configured inference endpoint; no external telemetry.

Interpretation is deliberately advisory and non-normative: NemoClaw does not ship
owner-approved pass/warn/fail thresholds yet (NVIDIA#3776), so the numbers compare runs
rather than gate. Documentation lives in scripts/bench/README.md, including how an
agent should run the benchmark and summarize the result.

Unit tests cover stats, URL handling, secret redaction, live round-trip (ok /
error / throw via injected fetch), trace ingestion, and report rendering.

Signed-off-by: Abhimanyu Kumar <abhimanyukumar7290@gmail.com>
The preflight error only mentioned OPENAI_BASE_URL / OPENAI_MODEL, but the
parser also accepts NEMOCLAW_BENCH_BASE_URL / NEMOCLAW_BENCH_MODEL. Include them
so the failure message is accurate.

Signed-off-by: Abhimanyu Kumar <abhimanyukumar7290@gmail.com>
@abhi-0906
abhi-0906 force-pushed the feat/issue-5604-benchmark-harness branch from fd296cb to cbbed1b Compare June 29, 2026 17:39

@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 `@scripts/bench/run.ts`:
- Around line 126-127: Avoid calling process.exit() immediately after writing
the help output in main() and the related error/report paths in
scripts/bench/run.ts; process.stdout.write/process.stderr.write can be async and
lose piped output. Update the help/error handling around the usage branch and
the final reporting logic to use synchronous writes where needed and set
process.exitCode instead of exiting directly, so the streams in main() can drain
cleanly.
🪄 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: 26b96016-21be-44f2-b7b3-722110cfc1dd

📥 Commits

Reviewing files that changed from the base of the PR and between fd296cb and cbbed1b.

📒 Files selected for processing (4)
  • package.json
  • scripts/bench/README.md
  • scripts/bench/lib.ts
  • scripts/bench/run.ts
✅ Files skipped from review due to trivial changes (1)
  • scripts/bench/README.md
🚧 Files skipped from review as they are similar to previous changes (2)
  • package.json
  • scripts/bench/lib.ts

Comment thread scripts/bench/run.ts Outdated

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

Review (maintainer skill) — security clean, but blocked on validation

Security: clean. This is dev-only benchmark tooling under scripts/bench/ with no production/sandbox surface. No child_process/exec/eval — the only outbound call is fetch to a developer-configured inference endpoint (OPENAI_BASE_URL/NEMOCLAW_BENCH_BASE_URL); reports scrub secret-shaped substrings and record only api_key_present: boolean; no new dependencies (adds a bench npm script only). No secret/injection/exec concerns.

Why I'm not approving yet — the merge bar isn't met: this is a fork PR, so both PR advisors and the E2E recommendation advisor were skipped (no secrets access), and only 4 basic checks ran — the new test/bench/bench.test.ts and the standard CLI test shards never executed. So the harness itself is unverified by CI.

To unblock: a maintainer should run the PR-review/E2E advisor workflow against this fork PR (advisor-equivalent coverage), and get the CLI test shards to run (the branch may need a refresh so the current CI workflows apply). Once the tests actually run green, this is a straightforward approve given the clean security surface.

Signed-off-by: Prekshi Vyas <prekshiv@nvidia.com>
@prekshivyas

Copy link
Copy Markdown
Collaborator

The markdown-links failure is not caused by this PR's changes — it's a stale-branch issue. The file .agents/skills/nemoclaw-maintainer-policies/references/triage-instructions.md was added to main after this branch was cut, so the link checker can't find it when running against the PR head.

Please rebase or merge main into your branch to pick up the new file and clear the failure:

git fetch upstream
git merge upstream/main
git push

@cv cv added v0.0.73 and removed v0.0.72 labels Jul 1, 2026
process.exit() after async process.stdout/stderr.write() can drop the
help text, report, or error message when output is piped. Use a
synchronous write on the help path and set process.exitCode in main()
and the error handler so the streams drain before the process exits.

Signed-off-by: Abhimanyu Kumar <abhimanyukumar7290@gmail.com>
@cv cv added v0.0.74 and removed v0.0.73 labels Jul 2, 2026
@cv

cv commented Jul 3, 2026

Copy link
Copy Markdown
Collaborator

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Jul 3, 2026

Copy link
Copy Markdown
Contributor
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

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

Reviewed exact head 2f3b00d after main refresh. Required CI is green, installer pins validate against OpenShell 0.0.72, all commits are Verified with DCO, CodeRabbit has no unresolved findings, and the focused benchmark/security review passed.

@ericksoa ericksoa self-assigned this Jul 3, 2026
ericksoa added 6 commits July 3, 2026 16:00
Fail closed on malformed endpoints and non-completion HTTP responses, omit remote response bodies from reports, and redact configured secrets and query values. Validate trace lineage and duration bounds, expose sanitized comparison context, and leave unavailable request-path policy overhead explicitly unsupported. Add process-level CLI coverage for output, redaction, exit status, and prerequisite failures.

Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>

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

Re-approving exact head 78f0016 after the maintainer refresh. Strict HTTPS is now required for remote endpoints (literal loopback exceptions only), the prior plaintext credential-exposure risk is closed, 51/51 focused benchmark/CLI tests pass, the conditional scan and Biome pass, all 32 repository gates are green, CodeRabbit is clean, and DCO/GitHub verification pass for all commits.

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

Reviewed exact head e75419f after the final main restack. The endpoint, credential-selection, response-validation, report-redaction, and trace-integrity boundaries are closed; 53/53 focused benchmark tests and the readiness/progress regression suite pass. The full required matrix is green, all 13 commits are Verified with DCO, CodeRabbit is clean, the trusted PR advisor has no remaining findings, and the E2E advisor requires no runs or targets. Approving for v0.0.74.

@ericksoa
ericksoa enabled auto-merge (squash) July 3, 2026 23:36
@ericksoa
ericksoa merged commit abc5855 into NVIDIA:main Jul 3, 2026
36 checks passed
@ericksoa ericksoa mentioned this pull request Jul 4, 2026
21 tasks
ericksoa added a commit that referenced this pull request Jul 4, 2026
<!-- markdownlint-disable MD041 -->
## Summary
This PR prepares the user-facing documentation for v0.0.74 before the
release plan is frozen.
It expands the release notes across the 56-commit train and closes
durable documentation gaps found during the pre-tag commit scan.

## Changes
- Expand the `v0.0.74` release notes to cover OpenShell 0.0.72, managed
MCP, progressive tool disclosure, LangChain Deep Agents Code,
onboarding, local inference, messaging, recovery, and contributor
workflows.
- Correct the `destroy` contract for retained per-name volumes,
gateway-unreachable `--force` cleanup, managed MCP ownership, and
same-name recovery.
- Document separate remediation for an unreachable container DNS
resolver versus one that answers with `NXDOMAIN` or `REFUSED`.
- Document the Windows on Arm N1X automatic Ollama safeguard and its
remaining large-model limitations.
- State that messaging conflicts abort rebuild before backup or
deletion, leaving the original sandbox intact.
- Link the agent-runnable value benchmark from the contributor task
index.
- Synchronize generated agent command variants.
- Validate with `npm run docs:sync-agent-variants` and `npm run docs`;
Fern completed with 0 errors and 2 existing warnings.
- Source summary:
- [#6020](#6020) and
[#5876](#5876) ->
`docs/about/release-notes.mdx`: Consolidate the OpenShell 0.0.72 policy
boundary and managed MCP lifecycle.
- [#6251](#6251) and
[#5989](#5989) ->
`docs/about/release-notes.mdx`: Summarize progressive tool disclosure
and sandbox-first inference controls.
- [#6232](#6232),
[#6082](#6082),
[#6219](#6219),
[#6214](#6214),
[#6215](#6215),
[#6230](#6230), and
[#6260](#6260) ->
`docs/about/release-notes.mdx`: Summarize the experimental LangChain
Deep Agents Code status, secret, version, rebuild, snapshot, and MCP
boundaries.
- [#6166](#6166),
[#6254](#6254),
[#6265](#6265),
[#6164](#6164), and
[#6017](#6017) ->
`docs/about/release-notes.mdx`: Summarize BuildKit prebuild, validated
image reuse, bounded readiness, and preflight improvements.
- [#6150](#6150) ->
`docs/about/release-notes.mdx` and `docs/reference/troubleshooting.mdx`:
Separate unreachable-resolver remediation from reachable-but-rejected
DNS responses.
- [#6234](#6234) ->
`docs/about/release-notes.mdx`,
`docs/inference/use-local-inference.mdx`, and
`docs/get-started/windows-preparation.mdx`: Document N1X automatic 9B
selection and the remaining explicit-large-model boundary.
- [#6129](#6129),
[#5987](#5987),
[#5955](#5955), and
[#6220](#6220) ->
`docs/about/release-notes.mdx`,
`docs/manage-sandboxes/messaging-channels.mdx`,
`docs/reference/commands.mdx`, and
`docs/reference/commands-nemohermes.mdx`: Document messaging policy
persistence, status, and the pre-destructive conflict check.
- [#5963](#5963),
[#6050](#6050),
[#6094](#6094),
[#6238](#6238),
[#5988](#5988),
[#6235](#6235),
[#6181](#6181), and
[#5986](#5986) ->
`docs/about/release-notes.mdx`, `docs/reference/commands.mdx`, and
`docs/reference/commands-nemohermes.mdx`: Summarize day-two recovery and
clarify retained-volume and local-only destroy semantics.
- [#6200](#6200),
[#6248](#6248),
[#6168](#6168),
[#6270](#6270), and
[#5649](#5649) ->
`docs/about/release-notes.mdx` and `CONTRIBUTING.md`: Summarize
contributor setup and verification improvements and expose the advisory
value benchmark.

## Type of Change

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

## Quality Gates
<!-- Check exactly one tests line and one docs line. Check other lines
when applicable. Add every requested justification or approval
reference. -->
- [ ] Tests added or updated for changed behavior
- [ ] Existing tests cover changed behavior — justification:
- [x] Tests not applicable — justification: documentation-only release
preparation; generated-variant synchronization and the Fern docs build
validate the changed pages and routes.
- [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:

## Verification
<!-- Check each applicable item only when supported by the requested
evidence. Run targeted tests once per relevant change set and rerun
after later edits or hook autofixes that can affect the tested behavior.
Do not rerun hook-covered checks. -->
- [x] PR description includes the DCO sign-off declaration 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 — command/result or justification: tests
are not applicable to this documentation-only change; `npm run docs`
validates the source and generated routes.
- [ ] Applicable broad gate passed — `npm test` for broad
runtime/test-harness changes; `npm run check` for repo-wide
validation/coverage changes — command/result:
- [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)
- [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)

---
<!-- DCO sign-off is required in this PR description, and every commit
must appear as Verified in GitHub. Run: git config user.name && git
config user.email -->
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>


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

## Summary by CodeRabbit

* **Documentation**
* Expanded setup guidance for Windows on Arm devices with safer default
local model selection.
* Clarified local inference and sandbox messaging behavior, including
conflict checks before rebuilds and safer recovery steps.
* Updated destroy/rebuild/reference docs with more detailed warnings,
failure handling, and volume-retention guidance.
* Improved troubleshooting instructions for Docker DNS issues with
clearer paths for unreachable vs. blocked resolvers.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Hadar301 pushed a commit to Hadar301/NemoClaw-OpenShift that referenced this pull request Jul 12, 2026
…NVIDIA#5649)

<!-- markdownlint-disable MD041 -->
## Summary

Adds a developer- and agent-runnable value benchmark under
`scripts/bench/`, exposed as `npm run bench`. It emits
`nemoclaw.bench.v1` JSON and a concise Markdown report for live
inference latency and trace-backed sandbox startup; request-path policy
overhead remains explicitly `unsupported` until dedicated
instrumentation exists.

## Related Issue

Closes NVIDIA#5604

## Changes

- Measures OpenAI-compatible inference round trips and reports
min/median/p95/mean/max.
- Ingests validated production onboard traces for sandbox cold-start
timing and sanitized comparison context.
- Requires HTTPS except for true loopback HTTP, rejects URL credentials
and redirects, and allowlists API-key variables to `OPENAI_API_KEY` and
`NVIDIA_INFERENCE_API_KEY`.
- Redacts query values and configured secrets, omits remote error
bodies, rejects arbitrary HTTP 2xx responses, and replaces untrusted
trace status text with fixed report-safe reasons.
- Documents prerequisites, usage, schema, interpretation, and agent
workflow in `scripts/bench/README.md`.
- Adds unit and process-level CLI coverage for statistics, traces,
endpoint and secret boundaries, output, exit status, and prerequisite
failures.

Exact-head verification for `e75419fe5dc80c007d854a8e00e95c7bdcee3350`:

- `npx vitest run test/bench/bench.test.ts test/bench/bench-cli.test.ts`
— 53/53 passed.
- `npx vitest run --project cli
src/lib/onboard/sandbox-readiness-tracing.test.ts
src/lib/onboard/machine/phase-progress.test.ts` — 35 passed, 1 expected
skip.
- `npm run typecheck`, `npm run build:cli`, `npm run typecheck:cli`,
`npm run lint`, and repository policy checks — passed; lint reports one
unrelated existing warning.
- Production trace probe — sandbox and readiness timing ingested
correctly after the latest `main` restack; policy overhead correctly
remained `unsupported` because the current span measures setup rather
than request-path shield overhead.
- [PR Review /
Advisor](https://github.com/NVIDIA/NemoClaw/actions/runs/28687675601) —
exact-head GPT review found no required fixes, resolve/justify items, or
in-scope improvements; prior secret-boundary findings are resolved.
- [E2E /
Advisor](https://github.com/NVIDIA/NemoClaw/actions/runs/28687676448) —
no required or optional E2E runs or targets.

## 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 advisor review covered endpoint confinement,
API-key selection, output redaction, completion validation, and trace
lineage/status/duration checks; see the PR Review / Advisor run above
and the [maintainer security
approval](NVIDIA#5649 (review)).
- [x] Non-success, skipped, or missing CI check accepted by maintainer —
automatic advisor jobs skip fork PRs by design; trusted manual
exact-head PR-review and E2E runs are linked above. GPT produced a clean
final review; the parallel Nemotron job completed but its synthesis JSON
was unusable. Fork-advisor follow-up: NVIDIA#6145. The conditional docs-only
job is not applicable to this code PR.

## Verification

- [x] PR description includes the DCO sign-off declaration and every
commit appears as `Verified` in GitHub — 13/13 at exact head.
- [ ] Git hooks passed during commit and push, or `npx prek run
--from-ref main --to-ref HEAD` passes — not claimed.
- [x] Targeted tests pass for changed behavior
- [ ] Full `npm test` passes (broad runtime changes only) — not required
for this isolated developer benchmark; the exact-head GitHub CI shards
provide broad coverage.
- [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) — not
applicable; this is not a doc-only PR.
- [ ] Doc pages follow the [style
guide](https://github.com/NVIDIA/NemoClaw/blob/main/docs/CONTRIBUTING.md)
(doc changes only) — not applicable; only the benchmark README changed.
- [ ] New doc pages include SPDX header and frontmatter (new pages only)
— not applicable; no documentation page was added.

---

Signed-off-by: Abhimanyu Kumar <abhimanyukumar7290@gmail.com>
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>

---------

Signed-off-by: Abhimanyu Kumar <abhimanyukumar7290@gmail.com>
Signed-off-by: Prekshi Vyas <prekshiv@nvidia.com>
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Co-authored-by: Prekshi Vyas <prekshiv@nvidia.com>
Co-authored-by: Prekshi Vyas <34834085+prekshivyas@users.noreply.github.com>
Co-authored-by: Carlos Villela <cvillela@nvidia.com>
Co-authored-by: Aaron Erickson <aerickson@nvidia.com>
Hadar301 pushed a commit to Hadar301/NemoClaw-OpenShift that referenced this pull request Jul 12, 2026
<!-- markdownlint-disable MD041 -->
## Summary
This PR prepares the user-facing documentation for v0.0.74 before the
release plan is frozen.
It expands the release notes across the 56-commit train and closes
durable documentation gaps found during the pre-tag commit scan.

## Changes
- Expand the `v0.0.74` release notes to cover OpenShell 0.0.72, managed
MCP, progressive tool disclosure, LangChain Deep Agents Code,
onboarding, local inference, messaging, recovery, and contributor
workflows.
- Correct the `destroy` contract for retained per-name volumes,
gateway-unreachable `--force` cleanup, managed MCP ownership, and
same-name recovery.
- Document separate remediation for an unreachable container DNS
resolver versus one that answers with `NXDOMAIN` or `REFUSED`.
- Document the Windows on Arm N1X automatic Ollama safeguard and its
remaining large-model limitations.
- State that messaging conflicts abort rebuild before backup or
deletion, leaving the original sandbox intact.
- Link the agent-runnable value benchmark from the contributor task
index.
- Synchronize generated agent command variants.
- Validate with `npm run docs:sync-agent-variants` and `npm run docs`;
Fern completed with 0 errors and 2 existing warnings.
- Source summary:
- [NVIDIA#6020](NVIDIA#6020) and
[NVIDIA#5876](NVIDIA#5876) ->
`docs/about/release-notes.mdx`: Consolidate the OpenShell 0.0.72 policy
boundary and managed MCP lifecycle.
- [NVIDIA#6251](NVIDIA#6251) and
[NVIDIA#5989](NVIDIA#5989) ->
`docs/about/release-notes.mdx`: Summarize progressive tool disclosure
and sandbox-first inference controls.
- [NVIDIA#6232](NVIDIA#6232),
[NVIDIA#6082](NVIDIA#6082),
[NVIDIA#6219](NVIDIA#6219),
[NVIDIA#6214](NVIDIA#6214),
[NVIDIA#6215](NVIDIA#6215),
[NVIDIA#6230](NVIDIA#6230), and
[NVIDIA#6260](NVIDIA#6260) ->
`docs/about/release-notes.mdx`: Summarize the experimental LangChain
Deep Agents Code status, secret, version, rebuild, snapshot, and MCP
boundaries.
- [NVIDIA#6166](NVIDIA#6166),
[NVIDIA#6254](NVIDIA#6254),
[NVIDIA#6265](NVIDIA#6265),
[NVIDIA#6164](NVIDIA#6164), and
[NVIDIA#6017](NVIDIA#6017) ->
`docs/about/release-notes.mdx`: Summarize BuildKit prebuild, validated
image reuse, bounded readiness, and preflight improvements.
- [NVIDIA#6150](NVIDIA#6150) ->
`docs/about/release-notes.mdx` and `docs/reference/troubleshooting.mdx`:
Separate unreachable-resolver remediation from reachable-but-rejected
DNS responses.
- [NVIDIA#6234](NVIDIA#6234) ->
`docs/about/release-notes.mdx`,
`docs/inference/use-local-inference.mdx`, and
`docs/get-started/windows-preparation.mdx`: Document N1X automatic 9B
selection and the remaining explicit-large-model boundary.
- [NVIDIA#6129](NVIDIA#6129),
[NVIDIA#5987](NVIDIA#5987),
[NVIDIA#5955](NVIDIA#5955), and
[NVIDIA#6220](NVIDIA#6220) ->
`docs/about/release-notes.mdx`,
`docs/manage-sandboxes/messaging-channels.mdx`,
`docs/reference/commands.mdx`, and
`docs/reference/commands-nemohermes.mdx`: Document messaging policy
persistence, status, and the pre-destructive conflict check.
- [NVIDIA#5963](NVIDIA#5963),
[NVIDIA#6050](NVIDIA#6050),
[NVIDIA#6094](NVIDIA#6094),
[NVIDIA#6238](NVIDIA#6238),
[NVIDIA#5988](NVIDIA#5988),
[NVIDIA#6235](NVIDIA#6235),
[NVIDIA#6181](NVIDIA#6181), and
[NVIDIA#5986](NVIDIA#5986) ->
`docs/about/release-notes.mdx`, `docs/reference/commands.mdx`, and
`docs/reference/commands-nemohermes.mdx`: Summarize day-two recovery and
clarify retained-volume and local-only destroy semantics.
- [NVIDIA#6200](NVIDIA#6200),
[NVIDIA#6248](NVIDIA#6248),
[NVIDIA#6168](NVIDIA#6168),
[NVIDIA#6270](NVIDIA#6270), and
[NVIDIA#5649](NVIDIA#5649) ->
`docs/about/release-notes.mdx` and `CONTRIBUTING.md`: Summarize
contributor setup and verification improvements and expose the advisory
value benchmark.

## Type of Change

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

## Quality Gates
<!-- Check exactly one tests line and one docs line. Check other lines
when applicable. Add every requested justification or approval
reference. -->
- [ ] Tests added or updated for changed behavior
- [ ] Existing tests cover changed behavior — justification:
- [x] Tests not applicable — justification: documentation-only release
preparation; generated-variant synchronization and the Fern docs build
validate the changed pages and routes.
- [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:

## Verification
<!-- Check each applicable item only when supported by the requested
evidence. Run targeted tests once per relevant change set and rerun
after later edits or hook autofixes that can affect the tested behavior.
Do not rerun hook-covered checks. -->
- [x] PR description includes the DCO sign-off declaration 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 — command/result or justification: tests
are not applicable to this documentation-only change; `npm run docs`
validates the source and generated routes.
- [ ] Applicable broad gate passed — `npm test` for broad
runtime/test-harness changes; `npm run check` for repo-wide
validation/coverage changes — command/result:
- [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)
- [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)

---
<!-- DCO sign-off is required in this PR description, and every commit
must appear as Verified in GitHub. Run: git config user.name && git
config user.email -->
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>


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

## Summary by CodeRabbit

* **Documentation**
* Expanded setup guidance for Windows on Arm devices with safer default
local model selection.
* Clarified local inference and sandbox messaging behavior, including
conflict checks before rebuilds and safer recovery steps.
* Updated destroy/rebuild/reference docs with more detailed warnings,
failure handling, and volume-retention guidance.
* Improved troubleshooting instructions for Docker DNS issues with
clearer paths for unreachable vs. blocked resolvers.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: performance Latency, throughput, resource use, benchmarks, or scaling feature PR adds or expands user-visible functionality

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Epic: Add agent-runnable benchmark harness and value report

5 participants