Skip to content

refactor(sandbox): give rebuild test harnesses one shared core - #8581

Merged
apurvvkumaria merged 13 commits into
mainfrom
refactor/rebuild-harness-shared-core
Aug 11, 2026
Merged

refactor(sandbox): give rebuild test harnesses one shared core#8581
apurvvkumaria merged 13 commits into
mainfrom
refactor/rebuild-harness-shared-core

Conversation

@laitingsheng

@laitingsheng laitingsheng commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Summary

This refactor replaces two drifting rebuild test harnesses with one shared core and named generic and Deep Agents Code profiles. The shared core owns module loading, source handles, session setup, temporary-state cleanup, and the mock lifecycle. The profiles keep only their distinct behavior.

The final compatibility repair also moves the remaining consumer to the generic profile and updates the Deep Agents Code test doubles for the current gateway-readiness contract. No production or user-visible behavior changes.

Related Issue

Fixes #8359
Parent epic: #8345

Changes

  • Reduce test/helpers/rebuild-flow-harness.ts to the common loader, module, session, and cleanup surface.
  • Split profile-specific mocks into rebuild-flow-generic-harness.ts and rebuild-flow-dcode-harness.ts.
  • Move 19 consumer suites to an explicit profile while preserving their assertions and behavior-oriented titles.
  • Clear inherited third-party-software acceptance in the generic profile so tests do not depend on ambient environment state.
  • Remove the retired helper path from the repository create-require budget.
  • Preserve the managed gateway authority result in both profile test doubles after the branch refresh.

The current diff changes 24 files with 930 additions and 1,007 deletions, a net reduction of 77 lines.

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: the change affects only tests, test helpers, and one repository check. It changes no public API, CLI command, configuration, runtime behavior, user-visible message, protocol, or policy schema.
  • 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: the independent test-infrastructure security review found no production security change or blocker: refactor(sandbox): give rebuild test harnesses one shared core #8581 (comment)
  • 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: no-docs-needed
  • Evidence: The reviewed change affects only test suites, test-helper modules, and one repository test-support check. It does not change a public API, CLI command, configuration, runtime behavior, user-visible message, protocol, or policy schema. No source page under docs/ requires an update.
  • Agent: Codex Desktop

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 validate:pr passed after refreshing origin/main 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: CLI type-checking passed. The rebuild-focused CLI run passed 62 files and 706 tests with expected skips. The two affected integration files passed 9 tests. Repository structural checks and changed-file hooks passed.
  • Applicable broad gate passed — npm test for broad runtime/test-harness changes; npm run check for repo-wide validation/coverage changes — command/result: the local aggregate run reached test execution but produced widespread process, network, and temporary-state contention across unrelated files on the shared host. The run was stopped after the failure class was established. The changed rebuild set passes in isolation, and required CI will run the aggregate projects in their normal environment.
  • 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) — command/result: not applicable; no documentation changed.
  • Doc pages follow the style guide (doc changes only)
  • New doc pages include SPDX header and frontmatter (new pages only)

Signed-off-by: Tinson Lai tinsonl@nvidia.com

Signed-off-by: Tinson Lai <tinsonl@nvidia.com>
@coderabbitai

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

The rebuild-flow test infrastructure now has a shared harness core with separate generic and DCode profiles. Test suites use the profile modules and centralized lifecycle hooks. The obsolete harness is removed from the createRequire allowlist.

Changes

Rebuild harness refactor

Layer / File(s) Summary
Shared harness core
test/helpers/rebuild-flow-harness.ts
Exports shared rebuild dependencies, module reload helpers, temporary-directory handling, and environment or mock cleanup hooks.
Generic harness integration
test/helpers/rebuild-flow-generic-harness.ts
Uses shared loading and cleanup helpers instead of local dynamic loading and lifecycle management.
DCode harness profile
test/helpers/rebuild-flow-dcode-harness.ts, test/helpers/rebuild-dcode-flow-helpers.ts
Adds configurable DCode rebuild fixtures, state, failure outcomes, recovery behavior, and spies.
Test suite migration
src/lib/actions/sandbox/rebuild-*.test.ts, test/rebuild-stale-recovery.test.ts, scripts/checks/test-create-require-budget.mts
Updates suites to import the generic or DCode harness and use centralized hooks. Removes the obsolete harness from the allowlist.

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

Possibly related PRs

Suggested reviewers: jyaunches

🚥 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 The changes implement a shared harness core, generic and DCode profiles, consumer migration, duplicate removal, and DCode-specific hook configuration required by issue [#8359].
Out of Scope Changes check ✅ Passed The changes stay within the requested test-harness refactor and do not modify production behavior, test titles, or assertions.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely describes the main change: consolidating rebuild test harnesses into one shared core.
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch refactor/rebuild-harness-shared-core

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

@laitingsheng laitingsheng added refactor PR restructures code without intended behavior change area: ci CI workflows, checks, release automation, or GitHub Actions area: sandbox OpenShell sandbox lifecycle, runtime, config, or recovery labels Aug 7, 2026
@github-code-quality

github-code-quality Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Code Coverage Overview

Languages: TypeScript

TypeScript / code-coverage/plugin

The overall coverage in commit ed3c73c in the refactor/rebuild-har... branch remains at 96%, unchanged from commit b8232eb in the main branch.

TypeScript / code-coverage/cli

The overall coverage in commit ed3c73c in the refactor/rebuild-har... branch remains at 82%, unchanged from commit b8232eb in the main branch.

Show a code coverage summary of the most impacted files.
File main b8232eb refactor/rebuild-har... ed3c73c +/-
src/lib/onboard...der/snapshot.ts 83% 75% -8%
src/lib/agent/dashboard-ui.ts 98% 91% -7%
src/lib/securit...ntial-filter.ts 95% 91% -4%
src/lib/onboard...press-resume.ts 81% 78% -3%
src/lib/state/o...d-checkpoint.ts 85% 88% +3%
src/lib/trace.ts 90% 94% +4%
src/lib/cua/run...ime-manifest.ts 84% 91% +7%
src/lib/cua/contract.ts 80% 87% +7%
src/lib/messagi.../ilink-login.ts 89% 96% +7%
src/lib/cua/bounded-file.ts 84% 94% +10%

Updated August 10, 2026 23:58 UTC

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

🧹 Nitpick comments (2)
test/helpers/rebuild-flow-harness.ts (1)

107-109: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Add mock-history cleanup to the harness.

If Vitest does not enable clearMocks, call vi.clearAllMocks() before vi.restoreAllMocks() so each test starts with empty mock history.

🤖 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/rebuild-flow-harness.ts` around lines 107 - 109, Update the
afterEach cleanup in the rebuild-flow harness to call vi.clearAllMocks() before
vi.restoreAllMocks(), ensuring mock history is reset between tests while
preserving the existing purgeRebuildModule() cleanup.

Source: Coding guidelines

test/helpers/rebuild-flow-dcode-harness.ts (1)

171-720: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚖️ Poor tradeoff

Centralize common mock setup in rebuild-flow-harness.ts.

The shared core defines no direct spies. The generic and DCode harnesses independently define the same console, session, registry, Docker, and lifecycle spies. This duplication can cause divergent test behavior.

🤖 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/rebuild-flow-dcode-harness.ts` around lines 171 - 720,
Centralize the duplicated console, session, registry, Docker, and lifecycle spy
setup in the shared rebuild-flow harness used by createRebuildFlowHarness.
Update the generic and DCode harnesses to reuse those shared spies and return
values instead of defining independent mocks, while preserving existing override
behavior and spy handles.
🤖 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/helpers/rebuild-flow-dcode-harness.ts`:
- Around line 171-720: Centralize the duplicated console, session, registry,
Docker, and lifecycle spy setup in the shared rebuild-flow harness used by
createRebuildFlowHarness. Update the generic and DCode harnesses to reuse those
shared spies and return values instead of defining independent mocks, while
preserving existing override behavior and spy handles.

In `@test/helpers/rebuild-flow-harness.ts`:
- Around line 107-109: Update the afterEach cleanup in the rebuild-flow harness
to call vi.clearAllMocks() before vi.restoreAllMocks(), ensuring mock history is
reset between tests while preserving the existing purgeRebuildModule() cleanup.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 89684682-10c1-4ddb-805e-667e52d52a62

📥 Commits

Reviewing files that changed from the base of the PR and between 47542dd and 80e6b12.

📒 Files selected for processing (23)
  • scripts/checks/test-create-require-budget.mts
  • src/lib/actions/sandbox/rebuild-base-image-resolution-flow.test.ts
  • src/lib/actions/sandbox/rebuild-dcode-artifact-drift.test.ts
  • src/lib/actions/sandbox/rebuild-dcode-base-image-lease.test.ts
  • src/lib/actions/sandbox/rebuild-dcode-mutation-edge.test.ts
  • src/lib/actions/sandbox/rebuild-dcode-pre-delete-drift.test.ts
  • src/lib/actions/sandbox/rebuild-dcode-preflight.test.ts
  • src/lib/actions/sandbox/rebuild-dcode-recovered-provider.test.ts
  • src/lib/actions/sandbox/rebuild-dcode-recovery.test.ts
  • src/lib/actions/sandbox/rebuild-flow-credential-preflight.test.ts
  • src/lib/actions/sandbox/rebuild-flow-lifecycle.test.ts
  • src/lib/actions/sandbox/rebuild-flow-recovery.test.ts
  • src/lib/actions/sandbox/rebuild-flow-target-credentials.test.ts
  • src/lib/actions/sandbox/rebuild-flow-target-image.test.ts
  • src/lib/actions/sandbox/rebuild-flow-target-session.test.ts
  • src/lib/actions/sandbox/rebuild-hermes-post-restore.test.ts
  • src/lib/actions/sandbox/rebuild-local-provider-recreate.test.ts
  • src/lib/actions/sandbox/rebuild-prepared-recovery.test.ts
  • test/helpers/rebuild-dcode-flow-helpers.ts
  • test/helpers/rebuild-flow-dcode-harness.ts
  • test/helpers/rebuild-flow-generic-harness.ts
  • test/helpers/rebuild-flow-harness.ts
  • test/rebuild-stale-recovery.test.ts
💤 Files with no reviewable changes (1)
  • scripts/checks/test-create-require-budget.mts

@github-actions

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

Advisory only. The primary lane did not select these E2E jobs or targets.

  • rebuild-hermes: The completed second-opinion lane identified E2E coverage that the primary lane omitted.
  • rebuild-hermes-stale-base: The completed second-opinion lane identified E2E coverage that the primary lane omitted.
  • rebuild-openclaw: The completed second-opinion lane identified E2E coverage that the primary lane omitted.

Second-opinion terminology and E2E selections are advisory. Live E2E does not run automatically for pull requests.

E2E guidance

Advisory only. A maintainer can dispatch the default E2E suite against this exact revision.

Recommended E2E: managed-image-multiarch-startup

Workflow run details

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

@apurvvkumaria

Copy link
Copy Markdown
Collaborator

I reviewed the two automated maintainability suggestions against the repository’s current Vitest configuration and the profile-specific fixtures.

  • No manual vi.clearAllMocks() call is needed here. Every non-live Vitest project imports the shared state-isolation configuration, which already enables both clearMocks: true and restoreMocks: true; adding another clear in this suite would duplicate the enforced lifecycle.
  • I am keeping the generic and DCode spies local to their profiles. The shared lifecycle is already centralized, while the registry, Docker, OpenShell, recovery, and policy states deliberately differ between the two profiles. A common override abstraction would broaden this PR and make those boundaries less explicit without correcting a defect.

Focused verification is green: stale-recovery 5/5, DCode preflight 15/15 with the repository’s slow-environment timeout override, and the generic target-session case 1/1. All required GitHub gates currently pass; the remaining Nemotron failure is advisory-service behavior, not a product-test failure. The branch still needs a current-main refresh and independent approval before merge.

@github-actions github-actions Bot added v0.0.106 Release target and removed v0.0.105 labels Aug 8, 2026
@coderabbitai

coderabbitai Bot commented Aug 9, 2026

Copy link
Copy Markdown
Contributor

Note

GitHub couldn't provide a complete incremental comparison for this pull request, so CodeRabbit is performing a full review instead. This review may take a little longer.

@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/helpers/rebuild-flow-harness.ts`:
- Around line 101-106: Update the beforeEach setup around
acceptThirdPartySoftware to explicitly delete
process.env.NEMOCLAW_ACCEPT_THIRD_PARTY_SOFTWARE when the option is false, while
retaining the existing "1" assignment when it is true. Keep
restoreRebuildFlowEnv responsible for restoring the caller’s original
environment.
🪄 Autofix

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: dff43337-bc16-48aa-abc8-209bbfa5a31b

📥 Commits

Reviewing files that changed from the base of the PR and between 8e5b6df and 636f85f.

📒 Files selected for processing (23)
  • scripts/checks/test-create-require-budget.mts
  • src/lib/actions/sandbox/rebuild-base-image-resolution-flow.test.ts
  • src/lib/actions/sandbox/rebuild-dcode-artifact-drift.test.ts
  • src/lib/actions/sandbox/rebuild-dcode-base-image-lease.test.ts
  • src/lib/actions/sandbox/rebuild-dcode-mutation-edge.test.ts
  • src/lib/actions/sandbox/rebuild-dcode-pre-delete-drift.test.ts
  • src/lib/actions/sandbox/rebuild-dcode-preflight.test.ts
  • src/lib/actions/sandbox/rebuild-dcode-recovered-provider.test.ts
  • src/lib/actions/sandbox/rebuild-dcode-recovery.test.ts
  • src/lib/actions/sandbox/rebuild-flow-credential-preflight.test.ts
  • src/lib/actions/sandbox/rebuild-flow-lifecycle.test.ts
  • src/lib/actions/sandbox/rebuild-flow-recovery.test.ts
  • src/lib/actions/sandbox/rebuild-flow-target-credentials.test.ts
  • src/lib/actions/sandbox/rebuild-flow-target-image.test.ts
  • src/lib/actions/sandbox/rebuild-flow-target-session.test.ts
  • src/lib/actions/sandbox/rebuild-hermes-post-restore.test.ts
  • src/lib/actions/sandbox/rebuild-local-provider-recreate.test.ts
  • src/lib/actions/sandbox/rebuild-prepared-recovery.test.ts
  • test/helpers/rebuild-dcode-flow-helpers.ts
  • test/helpers/rebuild-flow-dcode-harness.ts
  • test/helpers/rebuild-flow-generic-harness.ts
  • test/helpers/rebuild-flow-harness.ts
  • test/rebuild-stale-recovery.test.ts
💤 Files with no reviewable changes (1)
  • scripts/checks/test-create-require-budget.mts
🚧 Files skipped from review as they are similar to previous changes (21)
  • src/lib/actions/sandbox/rebuild-dcode-base-image-lease.test.ts
  • src/lib/actions/sandbox/rebuild-flow-recovery.test.ts
  • src/lib/actions/sandbox/rebuild-flow-target-session.test.ts
  • test/rebuild-stale-recovery.test.ts
  • src/lib/actions/sandbox/rebuild-flow-target-image.test.ts
  • src/lib/actions/sandbox/rebuild-flow-credential-preflight.test.ts
  • src/lib/actions/sandbox/rebuild-flow-target-credentials.test.ts
  • src/lib/actions/sandbox/rebuild-dcode-preflight.test.ts
  • src/lib/actions/sandbox/rebuild-flow-lifecycle.test.ts
  • src/lib/actions/sandbox/rebuild-dcode-pre-delete-drift.test.ts
  • src/lib/actions/sandbox/rebuild-dcode-mutation-edge.test.ts
  • src/lib/actions/sandbox/rebuild-dcode-artifact-drift.test.ts
  • src/lib/actions/sandbox/rebuild-dcode-recovery.test.ts
  • src/lib/actions/sandbox/rebuild-prepared-recovery.test.ts
  • src/lib/actions/sandbox/rebuild-base-image-resolution-flow.test.ts
  • test/helpers/rebuild-dcode-flow-helpers.ts
  • src/lib/actions/sandbox/rebuild-local-provider-recreate.test.ts
  • src/lib/actions/sandbox/rebuild-dcode-recovered-provider.test.ts
  • test/helpers/rebuild-flow-generic-harness.ts
  • src/lib/actions/sandbox/rebuild-hermes-post-restore.test.ts
  • test/helpers/rebuild-flow-dcode-harness.ts

Comment thread test/helpers/rebuild-flow-harness.ts

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

Accepted issue #8359 has no active blockers. The complete 23-file change preserves the two profile-specific mock sets, centralizes shared loading and cleanup, migrates all consumers, and has a negative net LOC delta. Security review found no weakened credential, policy, sandbox, or system boundary because only test infrastructure changes. No competing PR, unresolved review finding, production compatibility change, or documentation impact remains. The PR is current with main, open, mergeable, and has no maintainer review.

@copy-pr-bot

copy-pr-bot Bot commented Aug 9, 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.

@apurvvkumaria

Copy link
Copy Markdown
Collaborator

Security review: pass

I reviewed the 24 changed files and the final two compatibility repairs. The change is confined to test suites, test-helper modules, and one repository check. It changes no shipped command, runtime path, credential flow, network request, policy schema, sandbox privilege, dependency, or package artifact.

  • Credential and data exposure: no credential values or new logging paths are present.
  • Command and input handling: no production command construction or external input boundary changes.
  • Network and SSRF: no production network behavior changes.
  • Authentication and authorization: no identity, token, or permission changes.
  • Filesystem and privilege boundaries: test temporary-state cleanup is centralized; production file handling is unchanged.
  • Sandbox and policy boundaries: the test doubles preserve the managed gateway authority contract introduced on main; no enforcement code changes.
  • Dependencies and supply chain: no dependency, workflow permission, or artifact-content changes.
  • Concurrency and recovery: shared test cleanup reduces cross-suite drift; production recovery behavior is unchanged.
  • Documentation and telemetry: no public contract or emitted runtime event changes.

Validation passed for CLI type-checking, repository structural checks, 62 rebuild-focused files with 706 passing tests, and both affected integration files with 9 passing tests. Changed-file hooks also passed. No security blocker remains. This review does not waive any required repository check.

@apurvvkumaria
apurvvkumaria merged commit 2afba61 into main Aug 11, 2026
68 checks passed
@apurvvkumaria
apurvvkumaria deleted the refactor/rebuild-harness-shared-core branch August 11, 2026 00:18
jyaunches added a commit that referenced this pull request Aug 11, 2026
<!-- markdownlint-disable MD041 -->
## Summary

This PR updates the August 10, 2026 v0.0.106 release entry with gateway
readiness fixes that merged after PR #8756.
PRs #8765, #8767, and #8768 remain outside this entry because they are
open and do not carry the `v0.0.106` release label.

## Changes

- Document acceptance of OpenShell v0.0.101 `Server:` endpoint output
and target-bound process tags when trusted listener evidence matches the
configured gateway.
- Document preservation of selected-gateway stale state so onboarding
can reconcile a registered gateway when a gateway-scoped OpenShell
status check cannot connect.
- Record evidence-backed exclusions for internal image, startup,
qualification, proxy-environment, CI, and test-harness changes in PRs
#8754, #8609, #8762, #8432, #8766, and #8581.
- Exclude PRs #8765, #8767, and #8768 because their changes are absent
from `main` and the PRs do not carry the `v0.0.106` release label.
The release entry must be updated after any of those PRs merges for
v0.0.106.

## 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 SPDX placement,
version headings, forbidden terms, and link form.
- [ ] 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-08-10.mdx`; an independent Codex
Desktop subagent reviewed the writing rules and documentation style,
terminology, structure, voice, code-sample presentation, links, source
and test accuracy, release meaning, product scope, and evidence-backed
exclusions at commit `190bf882c`.
- Agent: Codex Desktop
<!-- docs-review-head-sha: 190bf88 -->
<!-- docs-review-agents-blob-sha: c4923a3 -->

## 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 — command/result or justification: `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 applicable to a
documentation-only release-entry update.
- [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) —
result: passed with 0 errors and 2 existing 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)
— no page was added.

---
Signed-off-by: Julie Yaunches <jyaunches@nvidia.com>


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

## Summary by CodeRabbit

* **Bug Fixes**
* Improved gateway readiness detection for OpenShell v0.0.101 endpoint
output.
* Process tags are now accepted only when they match trusted listener
information for the configured gateway.
* Preserved stale gateway status during connection failures to support
accurate onboarding reconciliation.

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

Co-authored-by: Carlos Villela <cvillela@nvidia.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: ci CI workflows, checks, release automation, or GitHub Actions area: sandbox OpenShell sandbox lifecycle, runtime, config, or recovery refactor PR restructures code without intended behavior change release-target v0.0.106 Release target

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Refactor rebuild test harnesses into a shared core with generic and Deep Agents Code profiles

3 participants