Skip to content

fix(snapshot): isolate pairing modes and bound recovery - #8015

Merged
cv merged 7 commits into
mainfrom
codex/fix-pairing-mode-regressions
Jul 31, 2026
Merged

fix(snapshot): isolate pairing modes and bound recovery#8015
cv merged 7 commits into
mainfrom
codex/fix-pairing-mode-regressions

Conversation

@prekshivyas

@prekshivyas prekshivyas commented Jul 31, 2026

Copy link
Copy Markdown
Collaborator

Summary

Fresh onboarding and restored snapshots now use separate OpenClaw pairing modes. Fresh onboarding keeps the default generated identity path, while restored clones use descriptor-pinned identity and pairing state plus one narrowly bounded recovery when the first verifier publishes the missing scope-upgrade request.

This replacement carries forward and credits all six signed commits from #7997, then adds the bounded recovery needed to keep the fresh-onboard and restored-clone E2E paths from regressing one another.

Related Issue

Supersedes #7997 and follows up the pairing regression introduced while fixing #7834. The regression is exercised by issue-4462-scope-upgrade-approval and snapshot-e2e.

Changes

  • Separate ordinary forced pairing from restored-clone descriptor-backed pairing.
  • Use clone device authentication for the restored-clone write-scope warm-up.
  • Distinguish an absent clone pending file from malformed or unreadable pairing state.
  • Retry approval exactly once only after list-pending-unavailable and an authenticated scope-upgrade-pending verification result.
  • Keep malformed, ambiguous, mismatched, or unreadable state fail closed.
  • Add focused unit, patch-upgrade, and live E2E contract coverage for both pairing modes.

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: This repairs internal OpenClaw pairing orchestration without changing a supported command, configuration, default, or documented workflow.
  • Sensitive paths changed (security, policy, credentials, preflight, onboarding, inference, runner, sandbox, or messaging)
  • Sensitive-path review completed or maintainer-approved waiver recorded — reviewer/approval link/justification: Codex Desktop reviewed the exact head against all nine security categories and found no blocking or non-blocking findings: fix(snapshot): isolate pairing modes and bound recovery #8015 (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 completed diff changes internal OpenClaw pairing repair behavior only; no public command, configuration, default, error contract, or documentation workflow changed.
  • Agent: Codex Desktop

DGX Station Hardware Evidence

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

Verification

  • PR description includes a Signed-off-by: line and every commit appears as Verified in GitHub
  • Normal pre-commit, commit-msg, and pre-push hooks passed, or npm run 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 — 35/35 exact-head focused tests passed; the affected-test run passed 224/224 before the unchanged rebase; npm run validate:pr passed on the current head.
  • Applicable broad gate passed — npm test for broad runtime/test-harness changes; npm run check for repo-wide validation/coverage changes — command/result: npm test built successfully and passed 23,255 tests locally, with 113 host-dependent failures on macOS/Node 25; required Linux CI and trusted live E2E are authoritative and pending.
  • 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)
  • Doc pages follow the style guide (doc changes only)
  • New doc pages include SPDX header and frontmatter (new pages only)

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

Summary by CodeRabbit

  • New Features
    • Improved restored-device pairing with dedicated handling for cloned environments.
    • Added a warm-up step to request required permissions before pairing.
    • Added clearer status reporting when pending pairing information is unavailable.
  • Bug Fixes
    • Pairing can now retry when an additional permission approval is needed.
    • Preserved authentication appropriately across restored-device pairing flows.
    • Improved compatibility when upgrading existing pairing configurations.
  • Tests
    • Added coverage for restored-device pairing, retries, unavailable states, and legacy configuration upgrades.

sandl99 and others added 7 commits July 31, 2026 09:29
Signed-off-by: San Dang <sdang@nvidia.com>
Signed-off-by: San Dang <sdang@nvidia.com>
Signed-off-by: San Dang <sdang@nvidia.com>
Signed-off-by: San Dang <sdang@nvidia.com>
Signed-off-by: San Dang <sdang@nvidia.com>
Signed-off-by: San Dang <sdang@nvidia.com>
Signed-off-by: Prekshi Vyas <prekshiv@nvidia.com>
@coderabbitai

coderabbitai Bot commented Jul 31, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

The change adds restored-clone pairing support across OpenClaw patching, sandbox approval, gateway warm-up, and pairing retry flows. It adds unavailable-pending receipts and regression coverage for patch upgrades, identity loading, environment flags, and scope upgrades.

Changes

Restored-clone pairing

Layer / File(s) Summary
Identity patch migration
scripts/patch-openclaw-device-self-approval.mts, test/openclaw-device-self-approval-patch-upgrade.test.ts, test/openclaw-device-self-approval-patch.test.ts, test/helpers/openclaw-device-self-approval-patch-harness.ts, test/helpers/openclaw-real-device-self-approval-proof.ts
The patch handles restored-clone identity resolution and upgrades legacy forced-pairing references. Tests cover patch reapplication and default identity loading.
Approval flags and pending-state receipts
src/lib/actions/sandbox/auto-pair-approval.ts, src/lib/actions/sandbox/auto-pair-approval-script.test.ts, src/lib/actions/sandbox/auto-pair-approval.test.ts
Approval clears pairing overrides when required, sets the restored-clone marker, and returns list-pending-unavailable when the clone pending file is missing.
Restored-clone warm-up and pairing retry
src/lib/actions/sandbox/auto-pair-warmup.ts, src/lib/actions/sandbox/auto-pair-warmup.test.ts, src/lib/actions/sandbox/restore-gateway-pairing.ts, src/lib/actions/sandbox/restore-gateway-pairing.test.ts, test/e2e/live/issue-4462-scope-upgrade-approval.test.ts
Pairing uses a restored-clone warm-up and retries approval, restart, and verification once after a pending scope upgrade. Tests cover command construction, call order, failure handling, and onboarding state.

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

Possibly related PRs

  • NVIDIA/NemoClaw#7834: Overlaps with local pending-state handling and restored-clone approval receipts.
  • NVIDIA/NemoClaw#7968: Overlaps with restored-clone approval environment setup and receipt behavior.
  • NVIDIA/NemoClaw#7997: Directly overlaps with pairing flags, patching, warm-up, approval, and regression tests.

Suggested labels: area: sandbox, area: onboarding, integration: openclaw, bug-fix

Suggested reviewers: cv, ericksoa

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the main changes: isolating pairing modes and limiting recovery behavior for snapshots.
✨ 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 codex/fix-pairing-mode-regressions

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

@prekshivyas

Copy link
Copy Markdown
Collaborator Author

Security review for exact head 5be51ee8ac26c9e7522e2d607972915de9e1c43e

Result: PASS — no blocking or non-blocking findings.

  1. Secrets and credentials — PASS. No secrets are added. Shared gateway token/password values are explicitly removed before the restored-clone warm-up, and tests assert that they do not reach the ordinary OpenClaw CLI call.
  2. Input validation and sanitization — PASS. Restored-clone identity and pending state remain descriptor-pinned and validated. Missing pending.json gets a distinct fixed receipt; malformed, non-object, unreadable, ambiguous, or mismatched state remains fail closed.
  3. Authentication and authorization — PASS. Fresh onboarding keeps the ordinary generated identity path. Only restored clones enable descriptor-backed identity and paired-token behavior. Approval remains delegated to OpenClaw's canonical devices approve command and is limited to one exact local request.
  4. Dependencies and supply chain — PASS. No dependency, lockfile, image, action, or external source changes.
  5. Error handling and logging — PASS. The new outcome is a fixed list-pending-unavailable receipt. Raw list output, tokens, device keys, and request payloads are not exposed. The final error keeps only classified failure layers and fixed receipts.
  6. Cryptography and data protection — PASS. No cryptographic primitive, key storage, transport protection, or serialization behavior changes.
  7. Configuration and security headers — PASS. The new mode flag narrows restored-clone behavior and is removed from ordinary approval children. The warm-up removes shared admin credentials before invoking OpenClaw and unsets restored-clone descriptor mode for that ordinary CLI call.
  8. Security testing — PASS. Coverage proves ordinary forced pairing uses the default identity, restored clones use descriptor-pinned identity/state, missing pending state cannot approve, malformed state cannot trigger recovery, and recovery occurs only for the exact absent-pending plus scope-upgrade-pending sequence.
  9. System security and race conditions — PASS. Recovery is bounded to one retry. The first approval must report that the pending file did not exist, then an ordinary authenticated verifier must independently classify the exact scope upgrade. Any other receipt or verifier failure stops without retry. Existing no-follow, regular-file, link-count, identity-match, and exact-request constraints remain intact.

Reviewed files:

  • scripts/patch-openclaw-device-self-approval.mts
  • src/lib/actions/sandbox/auto-pair-approval-script.test.ts
  • src/lib/actions/sandbox/auto-pair-approval.test.ts
  • src/lib/actions/sandbox/auto-pair-approval.ts
  • src/lib/actions/sandbox/auto-pair-warmup.test.ts
  • src/lib/actions/sandbox/auto-pair-warmup.ts
  • src/lib/actions/sandbox/restore-gateway-pairing.test.ts
  • src/lib/actions/sandbox/restore-gateway-pairing.ts
  • test/e2e/live/issue-4462-scope-upgrade-approval.test.ts
  • test/helpers/openclaw-device-self-approval-patch-harness.ts
  • test/helpers/openclaw-real-device-self-approval-proof.ts
  • test/openclaw-device-self-approval-patch-upgrade.test.ts
  • test/openclaw-device-self-approval-patch.test.ts

Validation evidence: exact-head focused tests passed 35/35; the affected-test run passed 224/224 before the diff-preserving rebase; npm run validate:pr passed on the current head, including repository checks, secret scanning, semantic E2E phase validation, commit message validation, and CLI type-checking.

@github-code-quality

github-code-quality Bot commented Jul 31, 2026

Copy link
Copy Markdown
Contributor

Code Coverage Overview

Languages: TypeScript

TypeScript / code-coverage/plugin

The overall coverage in commit 5be51ee in the codex/fix-pairing-mo... branch remains at 96%, unchanged from commit 57f73a5 in the main branch.

TypeScript / code-coverage/cli

The overall coverage in commit 5be51ee in the codex/fix-pairing-mo... branch remains at 81%, unchanged from commit 57f73a5 in the main branch.

Show a code coverage summary of the most impacted files.
File main 57f73a5 codex/fix-pairing-mo... 5be51ee +/-
src/lib/onboard/docker-cdi.ts 80% 70% -10%
src/lib/onboard...host-anchors.ts 94% 90% -4%
src/lib/onboard/preflight.ts 80% 80% 0%
src/lib/actions...orchestrator.ts 83% 87% +4%
src/lib/onboard...box-gpu-mode.ts 92% 97% +5%
src/lib/domain/.../connect-env.ts 89% 97% +8%
src/lib/actions...confirmation.ts 69% 79% +10%
src/lib/actions...ocker-health.ts 65% 82% +17%
src/lib/onboard...box-prebuild.ts 74% 92% +18%
src/lib/onboard...flight-ports.ts 33% 67% +34%

Updated July 31, 2026 16:48 UTC

@prekshivyas

Copy link
Copy Markdown
Collaborator Author

Cross-issue sweep progress:

  • Step 1: Extract fingerprint (files, symbols, error strings, primary issue)
  • Step 2: Search candidate issues (capped at 30, primary excluded)
  • Step 3: Classify each candidate (4-class with evidence)
  • Step 4: Apply reverse-link boost
  • Step 5: Filter (drop UNRELATED, SAME_ISSUE_DIFF, low-confidence)
  • Step 6: Render report using the repository template

Cross-issue scan — PR #8015

No adjacent fixes or contradictions found above the medium confidence floor.

Suppressed: 0 unrelated, 0 same-issue duplicates.

Comparator note: #8015 strictly supersedes closed #7997 by preserving its six signed commits and adding the bounded recovery. A formal same-issue open-PR score is not applicable because the replacement has no linked primary issue and #7997 is no longer open.

@github-actions

github-actions Bot commented Jul 31, 2026

Copy link
Copy Markdown
Contributor

PR Review Advisor — No blocking findings reported

Advisor assessment: No blocking advisor findings reported
Next action: No advisor follow-up needed.
Findings: 0 blockers · 0 warnings · 0 suggestions

Model lanes

  • GPT-5.6 Terra (primary): Completed · medium confidence · 0 blockers · 0 warnings · 0 suggestions
  • Nemotron 3 Ultra (second opinion): Completed · high confidence · 0 blockers · 0 warnings · 0 suggestions
  • Model comparison: normalized findings match; normalized E2E selections differ; severity counts match.

Nemotron output stays in workflow artifacts and does not change the assessment above.

E2E guidance

Advisory only. E2E / PR Gate selects and runs jobs independently.

Recommended E2E: issue-4462-scope-upgrade-approval, onboard-repair, onboard-resume, rebuild-openclaw, snapshot-commands, state-backup-restore

1 optional E2E recommendation
  • device-auth-health

Workflow run details

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

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
src/lib/actions/sandbox/auto-pair-warmup.test.ts (1)

76-88: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Prefer the execution-based test over source-text assertions.

This test checks raw string content of RESTORED_CLONE_WARMUP_SCRIPT with .toContain(). The test at lines 99-151 already executes this same script and observes the real force, restored, port, and argv values through a fake openclaw binary. That execution-based test covers the same claims with an actual observable outcome.

Consider removing the source-text assertions or folding the "no openclaw agent" check into the execution-based test, since the current test can pass even if the script's actual runtime behavior diverges from what the string check implies.

Based on path instructions for **/*.test.{ts,js,mts,mjs,cts,cjs}: "Prefer observable outcomes through the public boundary over source-text, private-shape, or mock-call assertions."

🤖 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 `@src/lib/actions/sandbox/auto-pair-warmup.test.ts` around lines 76 - 88,
Replace the raw source-text assertions in the test named “uses a direct
write-scope gateway call for restored clones (`#7834`)” with coverage in the
existing execution-based test around the fake openclaw binary. Assert the
observable restored-clone behavior there, including that the invoked arguments
use the sessions.create gateway call and do not invoke openclaw agent; remove
the redundant RESTORED_CLONE_WARMUP_SCRIPT string checks.

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 `@src/lib/actions/sandbox/auto-pair-warmup.test.ts`:
- Around line 76-88: Replace the raw source-text assertions in the test named
“uses a direct write-scope gateway call for restored clones (`#7834`)” with
coverage in the existing execution-based test around the fake openclaw binary.
Assert the observable restored-clone behavior there, including that the invoked
arguments use the sessions.create gateway call and do not invoke openclaw agent;
remove the redundant RESTORED_CLONE_WARMUP_SCRIPT string checks.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: a89eaefe-caef-4d59-bb58-3c59812c587f

📥 Commits

Reviewing files that changed from the base of the PR and between 57f73a5 and 5be51ee.

📒 Files selected for processing (13)
  • scripts/patch-openclaw-device-self-approval.mts
  • src/lib/actions/sandbox/auto-pair-approval-script.test.ts
  • src/lib/actions/sandbox/auto-pair-approval.test.ts
  • src/lib/actions/sandbox/auto-pair-approval.ts
  • src/lib/actions/sandbox/auto-pair-warmup.test.ts
  • src/lib/actions/sandbox/auto-pair-warmup.ts
  • src/lib/actions/sandbox/restore-gateway-pairing.test.ts
  • src/lib/actions/sandbox/restore-gateway-pairing.ts
  • test/e2e/live/issue-4462-scope-upgrade-approval.test.ts
  • test/helpers/openclaw-device-self-approval-patch-harness.ts
  • test/helpers/openclaw-real-device-self-approval-proof.ts
  • test/openclaw-device-self-approval-patch-upgrade.test.ts
  • test/openclaw-device-self-approval-patch.test.ts

@senthilr-nv

Copy link
Copy Markdown
Collaborator

Security review for head 5be51ee8ac26c9e7522e2d607972915de9e1c43e against base 57f73a509cd7e950e01af1423b2514ef352bec82.

Verdict

PASS. The complete 13-file diff has no blocking or non-blocking security findings. This verdict covers the security gate only and does not replace CI, E2E, product-scope, or independent human approval gates.

Findings

No findings.

Detailed analysis

  1. Secrets and credentials: PASS. No secret or credential value is added. The restored-clone warm-up removes shared gateway token and password values before the ordinary OpenClaw CLI call. The paired-token approval child also removes ambient shared credentials and uses only the descriptor-pinned clone state.
  2. Input validation and data sanitization: PASS. The new mode split keeps restored-clone identity and pairing state behind canonical descriptor, file-type, link-count, size, identity, request, scope, and loopback URL checks. A missing pending.json receives one fixed receipt. Malformed, unreadable, ambiguous, or mismatched state still fails closed.
  3. Authentication and authorization: PASS. Fresh onboarding uses the default generated identity path. Only the restored-clone approval child enables descriptor-backed identity and paired-token behavior. OpenClaw's canonical approval command remains the only writer, and the retry can approve only one exact local request.
  4. Dependencies and third-party libraries: PASS. No package manifest, lockfile, image, action, or external source changes.
  5. Error handling and logging: PASS. The new list-pending-unavailable outcome is a fixed receipt. Raw list output, request identifiers, tokens, device keys, and approval output are not returned in the classified error.
  6. Cryptography and data protection: PASS. No cryptographic primitive, key format, storage contract, or transport-protection behavior changes.
  7. Configuration and security headers: PASS. No HTTP surface or header changes. The new environment flag narrows descriptor-backed behavior to restored clones. The ordinary warm-up child removes shared credentials and the restored-clone flag before it calls OpenClaw.
  8. Security testing: PASS. Tests cover the ordinary identity path, restored descriptor path, stripped credentials, missing and malformed pending state, exact mode migration, one allowed retry, and refusal to retry other receipt or verifier combinations.
  9. System security and race conditions: PASS. Recovery is bounded to one retry. It requires the first approval receipt to be list-pending-unavailable and the independent authenticated verifier to report scope-upgrade-pending. Every other combination stops. Existing descriptor pinning, no-follow, single-link, identity-match, and exact-request checks remain in force.

Files reviewed

  • scripts/patch-openclaw-device-self-approval.mts
  • src/lib/actions/sandbox/auto-pair-approval-script.test.ts
  • src/lib/actions/sandbox/auto-pair-approval.test.ts
  • src/lib/actions/sandbox/auto-pair-approval.ts
  • src/lib/actions/sandbox/auto-pair-warmup.test.ts
  • src/lib/actions/sandbox/auto-pair-warmup.ts
  • src/lib/actions/sandbox/restore-gateway-pairing.test.ts
  • src/lib/actions/sandbox/restore-gateway-pairing.ts
  • test/e2e/live/issue-4462-scope-upgrade-approval.test.ts
  • test/helpers/openclaw-device-self-approval-patch-harness.ts
  • test/helpers/openclaw-real-device-self-approval-proof.ts
  • test/openclaw-device-self-approval-patch-upgrade.test.ts
  • test/openclaw-device-self-approval-patch.test.ts

Validation evidence on this exact head: focused CLI tests passed 35/35, focused integration tests passed 66/66, the diff-aware affected set passed 224/224, and canonical-base pre-commit, commit-message, and pre-push checks passed. The pre-commit run included repository checks, E2E semantic phase validation, and gitleaks.

@senthilr-nv

Copy link
Copy Markdown
Collaborator

Product-scope gate for head 5be51ee8ac26c9e7522e2d607972915de9e1c43e against base 57f73a509cd7e950e01af1423b2514ef352bec82: APPROVED.

This PR repairs the accepted OpenClaw onboarding and snapshot-restore pairing behavior established by merged PR #7834 and the scope-upgrade defect tracked in #4462. It does not add a command, configuration field, integration, custom image, third-party stack, or other supported surface. Ownership, lifecycle, compatibility, security, and validation remain within the existing OpenClaw pairing and restore support contract. The v0.0.100 release label records the target release.

This product-scope decision is independent of GitHub mergeStateStatus, CI, E2E, and approval state.

@senthilr-nv

Copy link
Copy Markdown
Collaborator

Automated-review disposition for head 5be51ee8ac26c9e7522e2d607972915de9e1c43e.

CodeRabbit reported one low-value maintainability nit in auto-pair-warmup.test.ts: prefer the execution-based restored-clone warm-up test over the adjacent source-shape assertions.

Disposition: no source change. The execution-based test already proves the exact gateway call sessions.create arguments, stripped shared credentials, force=1, and absence of the restored-clone mode in the child. The smaller source-shape test separately pins the generated script's tagged session contract and excludes the embedded openclaw agent path. The comment identifies no correctness, security, data-safety, supported-contract, or test-meaning defect. Keeping both checks does not add a helper, fallback, migration, or compatibility path.

The PR Review Advisor reported 0 blockers, 0 warnings, and 0 suggestions. No actionable automated-review finding remains on this head.

@cv
cv merged commit 8390b49 into main Jul 31, 2026
96 of 100 checks passed
@cv
cv deleted the codex/fix-pairing-mode-regressions branch July 31, 2026 17:13
@senthilr-nv

Copy link
Copy Markdown
Collaborator

Post-merge exact-state audit: the trusted E2E run for PR head 5be51ee8ac26c9e7522e2d607972915de9e1c43e and base 57f73a509cd7e950e01af1423b2514ef352bec82 completed with failure: https://github.com/NVIDIA/NemoClaw/actions/runs/30648708768

The required snapshot-commands job failed during snapshot restore with restored-pairing-unverified and scope-upgrade-pending; approval=list-failed. The other five selected jobs passed. This is a product blocker, not an optional-job failure.

PR #8015 was merged concurrently as 8390b497ec6499a9e625c5a0e89b804b9c2242c7 before this blocker was resolved. Do not treat the exact-pair E2E gate as passed. The failure was traced to the initial absence of the clone devices/ directory being classified as list-failed instead of list-pending-unavailable; a separate follow-up change is required because the corrective commit was not pushed to this already-merged PR.

@wscurran wscurran added area: cli Command line interface, flags, terminal UX, or output area: onboarding Onboarding FSM, provider setup, sandbox launch, or first-run flow bug-fix PR fixes a bug or regression integration: openclaw OpenClaw integration behavior labels Jul 31, 2026
@senthilr-nv senthilr-nv mentioned this pull request Aug 1, 2026
23 tasks
senthilr-nv added a commit that referenced this pull request Aug 1, 2026
<!-- markdownlint-disable MD041 -->
## Summary

Adds the canonical dated changelog entry for `v0.0.100` so the
maintainer release plan can verify the pre-tag documentation
prerequisite. The entry summarizes the user-facing changes merged since
`v0.0.99` and links to the relevant guides.

## Changes

- Add `docs/changelog/2026-07-31.mdx` with the exact `## v0.0.100`
heading.
- Cover restored OpenClaw pairing, transactional replacement, Deep
Agents Code, onboarding recovery, lifecycle cleanup, Hermes builds, host
provenance, documentation, and trusted E2E evidence.
- Distinguish active Docker and Kubernetes runtime-bundle enforcement
from the still-inactive managed shared-state transaction foundation.

## Source Coverage

The release entry maps the doc-impacting merged PRs in the
`v0.0.99..main` release range to `docs/changelog/2026-07-31.mdx`: #8021,
#8024, #7973, #8028, #7947, #7788, #7884, #8023, #7969, #8020, #7989,
#8000, #7907, #7942, #7567, #8013, #7955, #8017, #8014, #8015, #7629,
#7644, #7821, #7971, and #7991.

PR #7974 was reviewed after the final rebase and excluded because it
changes internal maintainer-skill attribution policy and tests only; it
does not change a user-facing product or documentation surface.

## 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: the
changelog contract test validates the dated entry, version heading, SPDX
form, and route constraints.
- [ ] 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-31.mdx`; exact-head review passed
for `6093f44f`; writing rules and documentation style reviewed; `npx
vitest run test/changelog-docs.test.ts` passed 6/6; `npm run docs`
passed with zero Fern errors and two generic Fern upgrade notices.
- Agent: Codex Desktop
<!-- docs-review-head-sha: 6093f44 -->
<!-- docs-review-agents-blob-sha: 3dd7c24 -->

## DGX Station Hardware Evidence

- [ ] Tested on DGX Station
- Tested commit: Not applicable; no DGX Station host script changed.
- 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/6 at `6093f44f`.
- [ ] 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 dated
prose-only release entry.
- [x] Quality Gates section completed with required justifications or
waivers
- [x] No secrets, API keys, or credentials committed
- [ ] `npm run docs` builds without warnings (doc changes only) —
validation passed with zero errors; Fern emitted two generic upgrade
notices.
- [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 changelog entry has the required parser-safe MDX SPDX header;
dated changelog entries intentionally do not use page frontmatter.

---

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


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

## Summary by CodeRabbit

* **Documentation**
  * Added release notes for v0.0.100.
* Documented improvements to restore pairing, sandbox replacement,
onboarding recovery, lifecycle cleanup, runtime handling, build support,
host readiness, and end-to-end validation.

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

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

Labels

area: cli Command line interface, flags, terminal UX, or output area: onboarding Onboarding FSM, provider setup, sandbox launch, or first-run flow bug-fix PR fixes a bug or regression integration: openclaw OpenClaw integration behavior

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants