Skip to content

feat(onboard): add transactional Docker bootstrap adapter - #8128

Merged
ericksoa merged 187 commits into
mainfrom
feat/docker-managed-bootstrap-adapter-lifecycle
Aug 3, 2026
Merged

feat(onboard): add transactional Docker bootstrap adapter#8128
ericksoa merged 187 commits into
mainfrom
feat/docker-managed-bootstrap-adapter-lifecycle

Conversation

@ericksoa

@ericksoa ericksoa commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

Summary

Adds the second narrowed PR3.10B review unit: the dormant transactional Docker managed-bootstrap adapter and shared-state cutover. It builds on #8037's journal/spec primitives and remains unregistered and unsupported by every production provider.

Preparation captures immutable original and replacement authority before destructive activation. Cleanup requires an exact validated Ready receipt; mutable-name reuse is retained and reported instead of deleted unsafely. Every immutable Node helper receives a scrubbed environment, and rollback is delegated to the immutable image's canonical receipt parser with only the three capabilities required to restore ownership, access owner-restricted state, and restore modes.

Related Issue

Part of #7744

Changes

  • Prepare and inspect a stopped Docker replacement before cutover.
  • Persist exact sandbox, container, image, launch-spec, bootstrap, and shared-state authority.
  • Separate prepare, activate, await, commit, rollback, and incomplete-create cleanup phases.
  • Preserve Docker GPU device/runtime/CDI evidence and snapshot compatibility.
  • Bind cleanup to a Ready receipt whose sandbox name, durable sandbox ID, and driver match current inspection.
  • Reject the complete root-process injection denylist before replacement creation.
  • Run immutable Node helpers through /usr/bin/env -i; clear loader variables before the scrubber and clear NODE_OPTIONS/NODE_PATH at the pre-entrypoint boundary as defense in depth.
  • Keep rollback receipts opaque on the host and validate them canonically inside the immutable image from a read-only mount.
  • Drop all rollback-helper capabilities, then add only CHOWN, DAC_OVERRIDE, and FOWNER for exact restoration.
  • Add regressions for hostile launch environments, planted temp targets, malformed rollback receipts, same-name identity reuse, and unsafe cleanup refusal.
  • Keep production Docker bootstrap explicitly unsupported and prove no provider registration or activation import changes.

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 internal architecture and dormancy claims
  • Sensitive paths changed (security, policy, credentials, preflight, onboarding, inference, runner, sandbox, or messaging)
  • Sensitive-path review completed — two independent exact-diff reviews found no privilege widening, parser divergence, or activation leak
  • Non-success, skipped, or missing CI check accepted by maintainer — check name, approval link, and follow-up issue:

Documentation Writer Review

  • Documentation writer reviewed the completed changes
  • Result: docs-updated
  • Evidence: Candidate 875eab3f25f97134ed3347c51f8d7cc3ccc231a8 and graft eb8ee81cc157ea7c12e311ab4b53e87930e3ae17 share exact tree 7ef10c62ab2f10773f8f0372dd78d41329d9f1ac. Final qualification child 00154381829ea31e214bc41955384755a39fe280 changes only tests, so the reviewed documentation blobs are unchanged. Review confirmed accurate pre-/post-cutover rollback wording, npm-package versus runtime-image scope, activation/provider import scope, and dormant user-visible lifecycle claims. markdownlint-cli2, the 8/8 source-shape contract, and git diff --check pass.
  • Agent: Codex Desktop

DGX Station Hardware Evidence

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

Verification

  • Exact base/head: 8c542b214f15561f71b262523d80a61ed4a5e9c7 / 00154381829ea31e214bc41955384755a39fe280 (22 files, +4,868/-36).
  • Review budget: 21 paths, +4,867/-35.
  • Stable patch ID: 07b3d062e2a26a8c9993f70e87ef1f5c7c0ca9db.
  • Binary diff SHA-256: ac4098a115e0bb14824ee7c49e211da15d268babc305a72be21b2c869b416f1d.
  • Clean reconstruction: signed+DCO commit 875eab3f25f97134ed3347c51f8d7cc3ccc231a8, direct child of live main 8c542b214f15561f71b262523d80a61ed4a5e9c7.
  • Append-only graft: signed+DCO commit eb8ee81cc157ea7c12e311ab4b53e87930e3ae17, first parent prior live head 206228343ae124563be7d13b4dd620e9628f9db0, second parent the clean reconstruction, exact tree 7ef10c62ab2f10773f8f0372dd78d41329d9f1ac. Signed+DCO qualification child 00154381829ea31e214bc41955384755a39fe280 is a normal fast-forward with exact tree 7c3d307d40156375bf26d8b977a93d6149013650. No remote history was rewritten.
  • Durable refs: backup/podman-stack/pr8128-advisor-b23404994, backup/podman-stack/pr8128-final-eb8ee81cc, backup/podman-stack/pr8128-final-001543818, and hold/podman-stack/pr8040-base-001543818.
  • Exact current-main changed-file tests passed 134/134. The complete managed-bootstrap source reconstruction passed 149/149; security-focused follow-up passed 20/20; source-shape dormancy passed 8/8. Final qualification follow-up passed package-contract 8/8, temp-file 6/6, both builds, Biome, diff checks, and hooks.
  • CLI build, root/CLI/plugin typechecks, Biome, markdownlint, diff check, test-size budget, test-conditional scan, normal commit hooks, and normal pre-push hooks passed.
  • Two independent security reviews found no blocker in the exact advisor-fix diff. The capability set is unchanged, /usr/bin/env -i remains the trusted Node boundary, immutable receipt validation remains image-owned, and the new tests fail closed before restoration or symlink following.
  • Prior exact head 206228343ae124563be7d13b4dd620e9628f9db0 passed ordinary CI, both advisors, CodeRabbit with zero unresolved threads, CodeQL, and protected E2E child 30829525494 for rebuild-openclaw, onboard-repair, onboard-resume, and state-backup-restore. Final exact head 00154381829ea31e214bc41955384755a39fe280 must independently pass its automatically approved current-head gates, including cloud-onboard.
  • Every new commit is SSH-signed and carries Aaron's DCO trailer.
  • Production provider construction still returns unsupported bootstrap/recovery surfaces; no selectable runtime or activation is added.

Risk Plan

  • Primary risk: destructive cutover or cleanup against stale/reused identity, unsafe inherited process state, or loss of GPU/spec/shared-state authority across replacement.
  • Containment: exact immutable handles, validated Ready receipts, process-injection rejection, clean helper environments, immutable image-owned receipt validation, validated clone overrides, provider-owned journal receipts, and preparation-before-activation. Ambiguous cleanup fails closed and retains the workload.
  • Regression risk: dormant adapter dependencies could alter existing snapshot or GPU clone behavior. Focused compatibility tests and explicit unsupported-provider/source-shape assertions remain green.
  • Rollback: the adapter remains unregistered and independently revertible.

Stack

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

Summary by CodeRabbit

  • New Features

    • Added Docker-based managed startup for workload creation, replacement, activation, rollback, recovery, and cleanup.
    • Added durable coordination for safe replacement commits and interrupted operations.
    • Added reliable sandbox identity detection from formatted command output.
    • Added support for preserving container names, entrypoints, and commands during replacements.
  • Bug Fixes

    • Improved validation, cleanup, state recovery, and process-environment safety during failed or interrupted replacements.
  • Documentation

    • Expanded managed startup documentation with Docker workflows, recovery behavior, and operational limitations.

ericksoa added 30 commits July 30, 2026 14:50
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>
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>
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>
Preserve the exact reviewed tree while moving the stacked base to merged PR3.3.

Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Preserve the exact reviewed tree while moving the stacked base to restacked PR3.4a.

Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Preserve the exact reviewed tree while moving the stacked base to restacked PR3.4b.

Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Carry the reviewed PR3.4b slice unchanged onto the CodeRabbit feedback fix for PR3.4a.

Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Carry the reviewed PR3.5 slice unchanged onto the CodeRabbit feedback restack through PR3.4b.

Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Carry the reviewed PR3.4b slice unchanged onto the serialized PR3.4a transaction contract.

Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Carry the reviewed PR3.5 slice unchanged onto the serialized PR3.4a transaction contract.

The review patch remains unchanged through PR3.4b.

Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Restack PR3.4b without changing its review patch.

Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Restack PR3.5 without changing its review patch.

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

copy-pr-bot Bot commented Aug 3, 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 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 `@src/lib/onboard/managed-bootstrap/docker-test-fixture.ts`:
- Around line 352-356: Wrap the body of the --commit-shared-state-transaction
case in braces so the result declaration is scoped within its switch clause.
Preserve the existing sharedState update, event recording, and return behavior.
🪄 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: 1420e8b5-79b3-431e-add3-cf9cd22036b1

📥 Commits

Reviewing files that changed from the base of the PR and between 2c64343 and 7bcc852.

📒 Files selected for processing (5)
  • src/lib/onboard/managed-bootstrap/adapter.ts
  • src/lib/onboard/managed-bootstrap/docker-shared-state.ts
  • src/lib/onboard/managed-bootstrap/docker-test-fixture.ts
  • src/lib/onboard/managed-bootstrap/docker.test.ts
  • src/lib/onboard/managed-bootstrap/docker.ts
🚧 Files skipped from review as they are similar to previous changes (2)
  • src/lib/onboard/managed-bootstrap/adapter.ts
  • src/lib/onboard/managed-bootstrap/docker.ts

Comment thread src/lib/onboard/managed-bootstrap/docker-test-fixture.ts Outdated
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
@ericksoa

ericksoa commented Aug 3, 2026

Copy link
Copy Markdown
Contributor Author

Addressed all CodeRabbit feedback on exact head c874abc64a256bba1363d23c7cde34456483c970:

  • aligned NODE_PATH with the root-process injection denylist and parameterized pre-create rejection coverage;
  • preserved the original commit-validation failure when quiescing also fails, with an explicit no-unsafe-rollback regression;
  • made every flagged event-order test prove both events exist;
  • removed the superseded rollback helper/import and dead journal assignment;
  • explicitly rejects empty intended argv;
  • made fixture nullability honest, renamed the retention helper, and moved mutation options before first use.

The five inline threads are resolved. Local validation passed 45/45 review-fix tests plus the 16/16 exact follow-up Docker suite, both typechecks, Biome, growth/test-size checks, repository checks, and normal hooks. Public exact-head requalification is running.

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

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

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
src/lib/onboard/managed-bootstrap/docker.test.ts (1)

328-332: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Require the --agent flag before reading its value.

args.indexOf("--agent") returns -1 when the flag is absent. The assertion then checks args[0]. It can pass without proving that --agent <agent> was emitted if the first argument equals agent. Add an explicit agentIndex >= 0 check.

Proposed fix
         const agentIndex = args.indexOf("--agent");
-        return args.includes("--shared-state-transaction-status") && args[agentIndex + 1] === agent;
+        return (
+          agentIndex >= 0 &&
+          args.includes("--shared-state-transaction-status") &&
+          args[agentIndex + 1] === agent
+        );
🤖 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/onboard/managed-bootstrap/docker.test.ts` around lines 328 - 332,
Update the mock-call predicate in the docker bootstrap test to require
agentIndex >= 0 before comparing args[agentIndex + 1] with agent, while
preserving the existing shared-state flag check.
🤖 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.

Outside diff comments:
In `@src/lib/onboard/managed-bootstrap/docker.test.ts`:
- Around line 328-332: Update the mock-call predicate in the docker bootstrap
test to require agentIndex >= 0 before comparing args[agentIndex + 1] with
agent, while preserving the existing shared-state flag check.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: e97cb327-1ddd-48ae-8189-ace4dd6b0808

📥 Commits

Reviewing files that changed from the base of the PR and between 7bcc852 and c874abc.

📒 Files selected for processing (1)
  • src/lib/onboard/managed-bootstrap/docker.test.ts

Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Preserve the reviewed append-only PR head while making the current main reconstruction and the managed-bootstrap helper environment repair explicit ancestry.

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

@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 `@src/lib/onboard/managed-bootstrap/docker-shared-state.test.ts`:
- Around line 57-68: Remove the args[0] === "run" conditional from the shared
test assertion helper. Extract the run-specific and exec-specific assertions
into separate named helpers, then update each test to call the applicable helper
directly while preserving the existing argument-slice expectations.
🪄 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: 4af4e343-f700-4880-96ec-eec67cbb2006

📥 Commits

Reviewing files that changed from the base of the PR and between 633e0dc and 503fdd8.

📒 Files selected for processing (3)
  • src/lib/onboard/managed-bootstrap/adapter.test.ts
  • src/lib/onboard/managed-bootstrap/docker-shared-state.test.ts
  • src/lib/onboard/managed-bootstrap/docker-shared-state.ts
🚧 Files skipped from review as they are similar to previous changes (1)
  • src/lib/onboard/managed-bootstrap/docker-shared-state.ts

Comment thread src/lib/onboard/managed-bootstrap/docker-shared-state.test.ts Outdated
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Preserve the reviewed append-only PR head while making the current-main reconstruction, managed-bootstrap security follow-up, and documentation precision repair explicit ancestry.

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

@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 `@src/lib/onboard/temp-files.test.ts`:
- Around line 46-48: Update the assertion around fs.writeFileSync in the
temp-file test to verify that the thrown error has the EEXIST code, rather than
accepting any exception. Preserve the existing write attempt and subsequent
content check.
🪄 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: 14ab4620-6c21-406c-9ad1-ade109af6fda

📥 Commits

Reviewing files that changed from the base of the PR and between 2062283 and eb8ee81.

📒 Files selected for processing (5)
  • src/lib/onboard/managed-bootstrap/README.md
  • src/lib/onboard/managed-bootstrap/docker-shared-state.test.ts
  • src/lib/onboard/managed-bootstrap/docker-shared-state.ts
  • src/lib/onboard/managed-startup-shared-state-transaction.test.ts
  • src/lib/onboard/temp-files.test.ts
🚧 Files skipped from review as they are similar to previous changes (3)
  • src/lib/onboard/managed-bootstrap/docker-shared-state.test.ts
  • src/lib/onboard/managed-bootstrap/README.md
  • src/lib/onboard/managed-bootstrap/docker-shared-state.ts

Comment thread src/lib/onboard/temp-files.test.ts Outdated
@ericksoa

ericksoa commented Aug 3, 2026

Copy link
Copy Markdown
Contributor Author

Nemotron F-001 disposition on exact head eb8ee81cc157ea7c12e311ab4b53e87930e3ae17: not actionable after two exact-diff audits.

The cited fourth file, docker-gpu-patch-clone.test.ts, adds 35 lines of direct behavioral coverage and no mocks. The repeated additions are about 15 small mock-member declarations across three snapshot tests: six Docker members and nine credential-store members. Those three hoisted vi.mock factories are not identical—two bind a file-local dockerInspectMock, one does not, and their fixture lifecycles differ. A shared parameterized factory would add hoist-sensitive test plumbing, broaden this dormant adapter slice into test-infrastructure refactoring, and would not support the claimed approximately 80-line reduction.

The file-local mocks are therefore retained to preserve module isolation. No production or test correctness issue remains from this suggestion.

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

github-actions Bot commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

E2E Target Results — ❌ Some tests failed

Run: 30836022706
Workflow ref: feat/docker-managed-bootstrap-adapter-lifecycle
Requested targets: (default — all supported)
Requested test IDs: (selector rejected by workflow validation)
Summary: 0 passed, 1 failed, 0 cancelled, 0 skipped, 0 unknown

Test Result Total wall clock time
base-image-publication ❌ failure 2s

Failed tests: base-image-publication. Check the workflow run for all logs and artifacts.

@ericksoa ericksoa self-assigned this Aug 3, 2026
@ericksoa
ericksoa merged commit c63e7eb into main Aug 3, 2026
166 of 169 checks passed
@ericksoa
ericksoa deleted the feat/docker-managed-bootstrap-adapter-lifecycle branch August 3, 2026 17:39
ericksoa added a commit that referenced this pull request Aug 3, 2026
<!-- markdownlint-disable MD041 -->
## Summary

Bind managed sandbox creation to the pluggable runtime-provider bundle
without activating buildless support in production. The candidate Docker
surface owns create lifecycle and routing, while central onboarding
accepts the same contract from an MXC-style provider and keeps every
current production bundle bootstrap-unsupported.

This slice also makes the existing Docker compatibility path retain
rollback authority through readiness, GPU-proof, and applicable
local-inference gates. A failed late rollback is propagated and reported
instead of being treated as success.

## Related Issue

Part of #7744.

## Changes

- Add one provider-neutral managed-create contract covering create
lifecycle, routing, runtime patches, authority storage, and runtime
snapshots.
- Add an inert Docker candidate surface that composes the transactional
bootstrap adapter; central orchestration does not select Docker, Podman,
or MXC by switch.
- Carry identity-bound held startup through OpenClaw, Hermes, and DCode
launch construction without putting encoded profiles in sandbox argv.
- Make GPU creation and host-local inference use the provider
transaction, including exact rollback before fallback/failure and commit
only after applicable readiness and inference gates.
- Preserve the pre-patch container through late qualification, propagate
`rolledBack: false`, and emit manual-cleanup guidance only when exact
rollback does not complete.
- Protect the abstraction with registry, MXC-style provider, all-agent
launch, GPU lifecycle, local-inference, rollback-failure, and
compatibility-path tests.
- Update inference, commands, troubleshooting, and internal architecture
documentation to match the exact rollback behavior.

## 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 — reviewer/approval link/justification: Exact-tree local review
covers provider neutrality, immutable rollback authority, all-agent held
startup, late rollback outcome propagation, GPU/local-inference commit
gates, and production dormancy. Public exact-head advisors and protected
E2E remain required before merge.
- [ ] 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: Clean candidate `7ed953c7d0934b4c8781b125a4ce57757591781d`
and append-only graft `48526666b6b975d6e6173f7f2bc7a76ab0f46361` share
exact tree `048dc1f0dd8e0dbbe8de6511bbac75b18828dc61`. Independent
exact-diff review covered provider neutrality, the MXC-style path,
production dormancy, rollback wording, and the four changed
documentation files. Final signed+DCO qualification child
`34b43764dd37885b88d1b931861cdf6de92b508b` changes only the stale
local-NIM docs contract assertion, so every reviewed documentation blob
remains unchanged; the exact assertion now passes 23/23.
- Agent: Codex Desktop
<!-- docs-review-head-sha: 34b4376 -->
<!-- docs-review-agents-blob-sha:
3dd7c24 -->

## DGX Station Hardware Evidence

- [ ] Tested on DGX Station
- Tested commit:
- Station profile/scenario:
- Result:
- Supporting evidence:

## Verification

- Exact base/head: `c63e7eb5ec07448e26a6cd8617a24601216bec35` /
`34b43764dd37885b88d1b931861cdf6de92b508b`.
- Review budget: 30 paths, `+1,842/-313`.
- Stable patch ID: `dad9c0a58cb8b696a0a29c787ff116a0438190b0`.
- Binary diff SHA-256:
`91d6f4f300ace2ce4f7110e397b09f9f153a936bf1cde28140219f857e2c4f2e`.
- Clean exact-base reconstruction: signed+DCO commit
`7ed953c7d0934b4c8781b125a4ce57757591781d`, direct child of merged #8128
main `c63e7eb5ec07448e26a6cd8617a24601216bec35`; graft tree equality is
exact at `048dc1f0dd8e0dbbe8de6511bbac75b18828dc61`. Final test-only
qualification child `34b43764dd37885b88d1b931861cdf6de92b508b` has tree
`cc3b68897023975c70225ddde2559a3d44357e5d`.
- Append-only ancestry: signed+DCO graft
`48526666b6b975d6e6173f7f2bc7a76ab0f46361` has preserved prior live head
`c14be060337d19318be9324e883cf4ddf5040d72` as first parent and clean
reconstruction `7ed953c7d0934b4c8781b125a4ce57757591781d` as second
parent. Signed+DCO child `34b43764dd37885b88d1b931861cdf6de92b508b` is a
normal fast-forward. No remote history is rewritten.
- Durable refs: `backup/podman-stack/pr8040-live-head-c14be0603`,
`backup/podman-stack/pr8040-clean-7ed953c7d`,
`backup/podman-stack/pr8040-graft-48526666b`,
`backup/podman-stack/pr8040-final-34b43764d`, and
`hold/podman-stack/pr8041-base-34b43764d`.
- Exact c63-based focused behavior suite passed 164/164: 141 CLI tests
and 23 integration tests. The hardened central-source boundary passed
8/8. Final docs contract test passed 23/23 after updating its stale
local-NIM wording assertion.
- CLI/plugin builds, all three typecheck surfaces, Biome, repository
architecture, source-shape, test-size, conditional scan, documentation
preparation and route checks, diff checks, gitleaks, markdownlint, and
the complete commit-time pre-commit suite passed.
- Documentation validation passed across OpenClaw, Hermes, and DCode
variants.
- Production provider construction still returns unsupported
bootstrap/recovery surfaces; no selectable runtime or buildless
activation is added.

## Risk Plan

- Primary risk: central orchestration acquiring a runtime-specific
branch, or committing compatibility-path changes before late
readiness/GPU/inference qualification and losing exact rollback
authority.
- Containment: one injected provider bundle owns managed create;
MXC-style tests forbid Docker-specific central routing; commit is
deferred through applicable gates; unsuccessful exact rollback is
propagated and reported.
- Regression risk: the compatibility path changes failure/recovery
timing. Focused lifecycle and local-inference tests cover successful
commit, pre-commit failure, exact rollback, rollback failure, and
manual-cleanup reporting.
- Rollback: the managed-create candidate remains unregistered; the
compatibility-path change can be reverted independently if qualification
exposes a regression.

## Stack

- Base: merged PR3.10B2 #8128 at main commit
`c63e7eb5ec07448e26a6cd8617a24601216bec35`.
- This slice: PR3.11 #8040, branch
`feat/managed-bootstrap-provider-create`, exact head
`34b43764dd37885b88d1b931861cdf6de92b508b`.
- Next: PR3.12A #8041 on protected handoff
`hold/podman-stack/pr8041-base-34b43764d`.
- Buildless and Podman support remain disabled until the complete
all-agent, multiarch, GPU/local-inference, recovery, installer, and
protected-E2E activation gates in #7744 pass.

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


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

* **New Features**
  * Added managed startup and provider-driven sandbox creation support.
  * Added Docker GPU onboarding with native and compatibility routing.
* Added durable sandbox identity resolution for OpenShell environments.

* **Bug Fixes**
  * GPU verification now completes before changes are finalized.
* Failed readiness, GPU, or inference checks attempt rollback and report
recovery issues.
* Improved diagnostics and error propagation during sandbox recreation.

* **Documentation**
* Expanded GPU rollback, diagnostics, cleanup, and local NVIDIA NIM
guidance.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
senthilr-nv added a commit that referenced this pull request Aug 4, 2026
<!-- markdownlint-disable MD041 -->
## Summary

Adds the canonical dated `v0.0.101` changelog entry that was missing
when the release tag was cut. This post-release recovery records the
shipped behavior on current `main` without changing or replacing the
existing tag.

## Changes

- Add `docs/changelog/2026-08-03.mdx` with the exact `## v0.0.101`
heading, release summary, detailed behavior changes, support boundaries,
and links to durable documentation.
- [#7317](#7317) ->
`docs/changelog/2026-08-03.mdx`: Records experimental OpenClaw Google
Chat support and its restricted credential and webhook boundary.
- [#7715](#7715) ->
`docs/changelog/2026-08-03.mdx`: Records strict onboarding recovery
state and authoritative resume identity.
- [#7749](#7749) ->
`docs/changelog/2026-08-03.mdx`: Records the provider-neutral policy
seam and unchanged runtime support boundary.
- [#7817](#7817) ->
`docs/changelog/2026-08-03.mdx`: Records preserved Hermes home-channel
assignments across rebuilds.
- [#7820](#7820) ->
`docs/changelog/2026-08-03.mdx`: Records the SSH-session status field
correction.
- [#7847](#7847) ->
`docs/changelog/2026-08-03.mdx`: Records fail-closed credential
filtering for migration and rebuild backups.
- [#7870](#7870) ->
`docs/changelog/2026-08-03.mdx`: Records sandbox-qualified in-sandbox
host command hints.
- [#7875](#7875) ->
`docs/changelog/2026-08-03.mdx`: Records Microsoft Teams stop and start
E2E coverage.
- [#7885](#7885) ->
`docs/changelog/2026-08-03.mdx`: Records Hermes managed gateway
detection in status.
- [#7889](#7889) ->
`docs/changelog/2026-08-03.mdx`: Records policy-authenticated HTTPS Pin
Runtime route revocation.
- [#7891](#7891) ->
`docs/changelog/2026-08-03.mdx`: Records default fallback for negative
timeout and polling overrides.
- [#7993](#7993) ->
`docs/changelog/2026-08-03.mdx`: Records correct sibling detection
during uninstall.
- [#7995](#7995) ->
`docs/changelog/2026-08-03.mdx`: Records absent configuration-hash
handling before shields lock.
- [#8001](#8001) ->
`docs/changelog/2026-08-03.mdx`: Records the dormant atomic managed
workload replacement foundation.
- [#8029](#8029) ->
`docs/changelog/2026-08-03.mdx`: Records repository terminology review
in PR Review Advisor.
- [#8031](#8031) ->
`docs/changelog/2026-08-03.mdx`: Records provider-neutral managed
snapshot authority.
- [#8032](#8032) ->
`docs/changelog/2026-08-03.mdx`: Records immutable managed clone handoff
contracts.
- [#8034](#8034) ->
`docs/changelog/2026-08-03.mdx`: Records the dormant provider-owned
clone transaction surface.
- [#8035](#8035) ->
`docs/changelog/2026-08-03.mdx`: Records the dormant Hermes managed
clone broker boundary.
- [#8036](#8036) ->
`docs/changelog/2026-08-03.mdx`: Records the dormant transactional
managed bootstrap boundary.
- [#8037](#8037) ->
`docs/changelog/2026-08-03.mdx`: Records dormant Docker bootstrap
primitives and the unchanged provider support boundary.
- [#8070](#8070) ->
`docs/changelog/2026-08-03.mdx`: Records consolidated sandbox
resource-limit E2E coverage.
- [#8071](#8071) ->
`docs/changelog/2026-08-03.mdx`: Records escaped and bounded CLI
validation diagnostics.
- [#8081](#8081) ->
`docs/changelog/2026-08-03.mdx`: Records bounded linear snapshot Base64
validation.
- [#8085](#8085) ->
`docs/changelog/2026-08-03.mdx`: Records commit-bound workflow approval
for eligible same-repository maintainers.
- [#8088](#8088) ->
`docs/changelog/2026-08-03.mdx`: Records Hermes managed-policy E2E
selection.
- [#8090](#8090) ->
`docs/changelog/2026-08-03.mdx`: Records pinned CI search-tool
provisioning.
- [#8106](#8106) ->
`docs/changelog/2026-08-03.mdx`: Records fallback from failed managed
OpenShell gateway startup.
- [#8107](#8107) ->
`docs/changelog/2026-08-03.mdx`: Records Hermes adapter lifecycle E2E
selection.
- [#8128](#8128) ->
`docs/changelog/2026-08-03.mdx`: Records the dormant transactional
Docker bootstrap adapter and rollback authority.
- [#8140](#8140) ->
`docs/changelog/2026-08-03.mdx`: Records Slack conflict scope across
independent OpenShell gateways.
- [#8147](#8147) ->
`docs/changelog/2026-08-03.mdx`: Records completion of durable v0.0.100
documentation audit follow-ups.

## 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
- [ ] Existing tests cover changed behavior — justification:
- [x] Tests not applicable — justification: This documentation-only
recovery does not change executable behavior.
- [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: Independently reviewed `docs/changelog/2026-08-03.mdx` at
commit `0bebe1f568e3dc85cf410aac1dfb8f8830070b85`. Its blob is
`82887920f9720eafd75db6b2271c35f7477edb9b`. The entry follows the
writing guide, controlled terminology, changelog structure, MDX SPDX
format, literal CLI-name rule, and root-absolute route requirements. It
accurately records the `v0.0.100...v0.0.101` release range, Announcement
#8162, accepted scope boundaries, and shipped security behavior. There
are no code samples. Focused changelog tests and the documentation build
pass for this commit.
- Agent: Codex Desktop independent documentation writer
<!-- docs-review-head-sha: 0bebe1f -->
<!-- docs-review-agents-blob-sha:
3dd7c24 -->

## Security Review

- Result: `PASS`
- Reviewed commit: `0bebe1f568e3dc85cf410aac1dfb8f8830070b85`
- Base commit: `643a4ab8b5f583d8555192a37927268b26022c51`
- Findings: None.
- Secrets and credentials: `PASS`. No credential values or secret files
are present.
- Input validation and data sanitization: `PASS`. No executable input
path changes.
- Authentication and authorization: `PASS`. No identity or permission
logic changes.
- Dependencies and third-party libraries: `PASS`. No dependency changes.
- Error handling and logging: `PASS`. No runtime path changes;
diagnostic-security claims are precise.
- Cryptography and data protection: `PASS`. No implementation changes.
- Configuration and security controls: `PASS`. No configuration,
container, port, or HTTP changes.
- Security testing: `PASS`. No coverage is removed; the entry records
shipped test and security behavior.
- System security: `PASS`. No runtime control changes; dormant and
non-activation boundaries are explicit.
- Agent: Codex Desktop independent security reviewer

## Verification

- [ ] PR description includes a `Signed-off-by:` line and every commit
appears as `Verified` in GitHub — verification is pending after commit
`0bebe1f568e3dc85cf410aac1dfb8f8830070b85` is pushed.
- [ ] 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 — commit hooks passed; pre-push is pending.
- [x] Targeted behavior tests pass for the current change set, or tests
are marked not applicable above — tests are not applicable to this
documentation-only recovery.
- [x] Applicable broad gate passed — not applicable to this
documentation-only recovery.
- [x] Quality Gates section completed with required justifications or
waivers
- [x] No secrets, API keys, credentials, or private keys are added by
this diff.
- [ ] `npm run docs` builds without warnings (doc changes only) — GitHub
documentation checks are pending.
- [x] Doc pages follow the [style
guide](https://github.com/NVIDIA/NemoClaw/blob/main/docs/CONTRIBUTING.md)
(doc changes only) — independent documentation review passed.
- [x] New doc pages include SPDX header and frontmatter (new pages only)
— the native changelog entry uses the required parser-safe MDX SPDX
comment and intentionally has no frontmatter.

GitHub CI is authoritative.
Focused changelog tests and `npm run docs` passed after the merge
refresh.

---
Signed-off-by: Apurv Kumaria <akumaria@nvidia.com>


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

* **New Features**
  * Added experimental Google Chat support.
  * Improved runtime and session status visibility.
  * Added onboarding recovery and persistence safeguards.
  * Added snapshot validation and dormant managed-workload support.

* **Bug Fixes**
* Improved backup sanitization, route handling, and gateway reliability.

* **Documentation**
  * Added the v0.0.101 changelog and related updates.

* **Tests**
  * Expanded end-to-end coverage and strengthened trusted CI validation.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Signed-off-by: Apurv Kumaria <akumaria@nvidia.com>
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
Co-authored-by: Carlos Villela <cvillela@nvidia.com>
Co-authored-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: onboarding Onboarding FSM, provider setup, sandbox launch, or first-run flow area: security Security controls, permissions, secrets, or hardening feature PR adds or expands user-visible functionality platform: container Affects Docker, containerd, Podman, or images

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant