feat(onboard): define dormant transactional managed bootstrap - #8036
Conversation
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>
|
✅ Action performedReview finished.
|
There was a problem hiding this comment.
Actionable comments posted: 3
🧹 Nitpick comments (1)
test/managed-bootstrap-trampoline.test.ts (1)
202-223: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winRemove the nullability guards around
hostileLoader.
hostileLoaderreturns a non-optional object. Every call site still treats the result as nullable:loader?.library ?? ""at Line 626,...(loader ? {...} : {})at Lines 360-366 and 741-746, andloader && fs.existsSync(...)at Lines 375-376 and 754-755. These branches never take the null path, so they add no coverage. Line 755 is the clearest case:expect(loader && fs.existsSync(loader.afterTrace)).toBe(loader ? true : null)reduces toexpect(existsSync(afterTrace)).toBe(true).The risk is that a future change to the helper silently turns strict assertions into vacuous ones. Assert the outcomes directly.
♻️ Proposed simplification
- expect(loader && fs.existsSync(loader.earlyTrace)).not.toBe(true); - expect(loader && fs.existsSync(loader.afterTrace)).toBe(loader ? true : null); + expect(fs.existsSync(loader.earlyTrace)).toBe(false); + expect(fs.existsSync(loader.afterTrace)).toBe(true);Apply the same direct form at Lines 375-376, and replace the conditional spreads with plain properties.
As per path instructions: "Flag copied production algorithms, broad mocks that bypass the behavior under test, and conditionals that make a test pass without exercising its claim."
🤖 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/managed-bootstrap-trampoline.test.ts` around lines 202 - 223, Remove nullability checks for the non-optional result of hostileLoader. Update all call sites to access loader.library, loader.afterTrace, and loader.earlyTrace directly, replace conditional spreads with unconditional properties, and assert fs.existsSync results directly without loader-dependent expectations.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.
Inline comments:
In `@scripts/managed-bootstrap-entrypoint.c`:
- Around line 253-255: Update both raw_syscall3(SYSCALL_LSEEK, ...) calls in the
managed bootstrap entrypoint to pass the offset as the second argument and
SEEK_SET as the third argument, preserving the existing seek-to-start behavior.
In `@src/lib/onboard/managed-bootstrap/README.md`:
- Around line 82-94: Update the dormant architecture documentation surrounding
the native entrypoint and provider/image integration to include a real
repository GitHub issue or pull request reference for the deferred work.
Preserve the existing description of the uncompiled, un-packaged state and
clearly link the remaining integration work rather than leaving it untracked.
In `@test/managed-bootstrap-trampoline.test.ts`:
- Around line 382-452: Add an explicit 60,000 ms timeout to the compile-heavy
test “restores the exact supervisor environment only through the fixed resume
mode” and the adjacent test covering lines 334–380. Preserve their existing
assertions and cleanup while matching the timeout style already used by the
tests at lines 514, 606, and 782.
---
Nitpick comments:
In `@test/managed-bootstrap-trampoline.test.ts`:
- Around line 202-223: Remove nullability checks for the non-optional result of
hostileLoader. Update all call sites to access loader.library,
loader.afterTrace, and loader.earlyTrace directly, replace conditional spreads
with unconditional properties, and assert fs.existsSync results directly without
loader-dependent 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: d568ccfc-3531-4a12-8fac-66735a46b4f1
📒 Files selected for processing (10)
ci/source-shape-test-budget.jsonscripts/managed-bootstrap-entrypoint.cscripts/managed-bootstrap-trampoline.shsrc/lib/onboard/managed-bootstrap/README.mdsrc/lib/onboard/managed-bootstrap/adapter.test.tssrc/lib/onboard/managed-bootstrap/adapter.tssrc/lib/onboard/managed-bootstrap/envelope.test.tssrc/lib/onboard/managed-bootstrap/envelope.tstest/managed-bootstrap-trampoline.test.tstest/runtime-provider-source-shape.test.ts
🚧 Files skipped from review as they are similar to previous changes (4)
- ci/source-shape-test-budget.json
- src/lib/onboard/managed-bootstrap/envelope.ts
- src/lib/onboard/managed-bootstrap/adapter.ts
- src/lib/onboard/managed-bootstrap/adapter.test.ts
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
|
@coderabbitai review Please review the current exact head 852487f, including the fixes for all findings from review 4842941773. |
|
✅ Action performedReview finished.
|
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
|
@coderabbitai review Please review the current exact head ff75541, including the added provider-contract retry-convergence test that addresses the exact-head advisor warning. |
|
✅ Action performedReview finished.
|
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
|
@coderabbitai review Please review the current exact head a841a45, including the independent discovery-versus-inspection disagreement regression, exact sandboxId:bootstrapIdentity retry ownership model, same-sandbox foreign-transaction preservation, and branchless cleanup assertion. |
|
✅ Action performedReview finished.
|
There was a problem hiding this comment.
🧹 Nitpick comments (1)
src/lib/onboard/managed-bootstrap/adapter.test.ts (1)
655-655: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winExtract a shared helper for the authority-key template.
The
${sandboxId}:${bootstrapIdentity}template literal is constructed independently at Line 655, Line 656, Line 677, and Line 697. Extract a smallauthorityKeyFor(sandboxId, bootstrapIdentity)helper. This removes duplication and prevents the key format from silently drifting between call sites if the composition ever changes.♻️ Proposed helper extraction
+const authorityKeyFor = (sandboxId: string, bootstrapIdentity: string) => + `${sandboxId}:${bootstrapIdentity}`; + - const targetAuthorityKey = `${sandbox().sandboxId}:${IDENTITY}`; - const unrelatedAuthorityKey = `${sandbox().sandboxId}:${"e".repeat(64)}`; + const targetAuthorityKey = authorityKeyFor(sandbox().sandboxId, IDENTITY); + const unrelatedAuthorityKey = authorityKeyFor(sandbox().sandboxId, "e".repeat(64));- const authorityKey = `${prepareInput.handle.sandbox.sandboxId}:${prepareInput.handle.bootstrapIdentity}`; + const authorityKey = authorityKeyFor( + prepareInput.handle.sandbox.sandboxId, + prepareInput.handle.bootstrapIdentity, + );- const authorityKey = `${finalizeInput.handle.sandbox.sandboxId}:${finalizeInput.handle.bootstrapIdentity}`; + const authorityKey = authorityKeyFor( + finalizeInput.handle.sandbox.sandboxId, + finalizeInput.handle.bootstrapIdentity, + );Also applies to: 656-656, 677-677, 697-697
🤖 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/adapter.test.ts` at line 655, Extract an authorityKeyFor(sandboxId, bootstrapIdentity) helper in the test module that returns the shared `${sandboxId}:${bootstrapIdentity}` format, then replace the duplicated authority-key template literals at the referenced call sites with this helper.
🤖 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/onboard/managed-bootstrap/adapter.test.ts`:
- Line 655: Extract an authorityKeyFor(sandboxId, bootstrapIdentity) helper in
the test module that returns the shared `${sandboxId}:${bootstrapIdentity}`
format, then replace the duplicated authority-key template literals at the
referenced call sites with this helper.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Enterprise
Run ID: 4a405db1-274d-4da5-b16f-75e91bbdcf9b
📒 Files selected for processing (1)
src/lib/onboard/managed-bootstrap/adapter.test.ts
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
|
@coderabbitai review Please review the current exact head 0c91e0b, including the shared driver-neutral authority-key helper that addresses review 4843675201, the independent discovery-versus-inspection disagreement regression, and exact same-sandbox foreign-transaction preservation. |
🧩 Analysis chain🏁 Script executed: #!/bin/bash
set -euo pipefail
requested="0c91e0b98871b4001ebf3d51aed7c2f4b47696f9"
echo "== Checked-out HEAD =="
git rev-parse HEAD
echo "== Requested commit =="
git rev-parse "$requested^{commit}"
echo "== Commit metadata =="
git show --no-ext-diff --no-renames --format=fuller --stat "$requested"
echo "== Diff from prior requested head =="
git diff --no-ext-diff --no-renames --unified=80 \
a841a45767ea412d62a915c7ef699d669841eb8e "$requested" -- \
src/lib/onboard/managed-bootstrap/adapter.ts \
src/lib/onboard/managed-bootstrap/adapter.test.ts
echo "== Adapter outline =="
ast-grep outline src/lib/onboard/managed-bootstrap/adapter.ts --items all --view expanded
echo "== Focused ownership/discovery/inspection/cleanup references =="
rg -n -C 8 --type ts \
'authority|Authority|discovery|discover|inspection|inspect|cleanup|Cleanup|sandboxId|bootstrapIdentity|transactionId' \
src/lib/onboard/managed-bootstrap/adapter.ts \
src/lib/onboard/managed-bootstrap/adapter.test.tsLength of output: 169372 🏁 Script executed: #!/bin/bash
set -euo pipefail
echo "== Diff validation =="
git diff --check a841a45767ea412d62a915c7ef699d669841eb8e 0c91e0b98871b4001ebf3d51aed7c2f4b47696f9
echo "== Coordinator rollback and finalization implementation =="
sed -n '1188,1448p' src/lib/onboard/managed-bootstrap/adapter.ts
echo "== Discovery/inspection disagreement regression =="
sed -n '380,440p' src/lib/onboard/managed-bootstrap/adapter.test.ts
echo "== Retry ownership and foreign-transaction preservation regression =="
sed -n '640,760p' src/lib/onboard/managed-bootstrap/adapter.test.ts
echo "== Exact changed-line blame and parent comparison =="
git diff --no-ext-diff --no-renames --word-diff=plain \
a841a45767ea412d62a915c7ef699d669841eb8e \
0c91e0b98871b4001ebf3d51aed7c2f4b47696f9 -- \
src/lib/onboard/managed-bootstrap/adapter.test.tsLength of output: 20828
I found no actionable issues. The change is limited to The discovery-versus-inspection regression rejects a runtime ID disagreement before replacement preparation. The coordinator also rolls back the held workload after this failure.
✅ Action performedReview finished.
|
<!-- markdownlint-disable MD041 --> ## Summary Adds the first narrowed PR3.10B review unit: dormant Docker bootstrap transaction-journal and canonical launch-spec primitives. The preserved monolithic #8037 source remains in append-only history, while this exact head tree contains only the six-path primitive slice on current `main`. No adapter, shared-state transaction, provider registration, production import, or runtime activation is included. Existing Docker behavior and all user-visible support claims remain unchanged. ## Related Issue Part of #7744 ## Changes - Define a private monotonic Docker cutover journal with bounded validation and legal transition rules. - Define detached, deeply frozen canonical Docker launch-spec normalization and validation so the retained object cannot diverge from its canonical JSON or hash. - Add focused adversarial tests for journal/spec validation, nested mutation rejection, and input-alias isolation. - Extend the managed-bootstrap source inventory and internal dormancy documentation. - Preserve the former 20-file source head at `backup/podman-stack/pr8037-source-ad5397af`. - Preserve this exact head at `backup/podman-stack/pr8037b1-final-a352b710b` and the next split base at `hold/podman-stack/pr8037b2-base-a352b710b`. ## Type of Change - [x] 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 review covers journal monotonicity, canonical detached/frozen launch state, bounded validation, and production dormancy. - [ ] Non-success, skipped, or missing CI check accepted by maintainer — check name, approval link, and follow-up issue: ## Documentation Writer Review - [x] Documentation writer reviewed the completed changes - Result: `docs-updated` - Evidence: Exact head `a352b710bd3fe57d5d28eb849d02c5d75b5a4d32` has the same tree as clean current-main reconstruction `149b3a244fe6707619010cddbad2976e880d89b2`. The internal managed-bootstrap README accurately describes the dormant primitives; the exact-head follow-up only hardens the canonical object/hash boundary and adds its regression test. Source-shape coverage proves no production import or registration, so no user-facing documentation surface changes. - Agent: Codex Desktop <!-- docs-review-head-sha: a352b71 --> <!-- 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: `d09b530ef1d3045b0c26b6d34462cb2175d9fb94` / `a352b710bd3fe57d5d28eb849d02c5d75b5a4d32`. - Review budget: six paths, `+1,062/-0`. - Stable patch ID: `6aaa2ba4fec89d0e205d59b4a983929dfa499b95`. - Binary diff SHA-256: `18eedcc9bb68800c18e4100ef1edd8f224bb7f6a975c7b1803682239e691ccc1`. - Clean current-main reconstruction: `149b3a244fe6707619010cddbad2976e880d89b2`; final-tree equality is exact at tree `439e941967a030b2ee54e8c0a0c9dd6a0e6d7823`. - Append-only ancestry: prior live head `345efce48244230c3293bfe5c47e7e469155f742` and current `main` are both ancestors of the signed+DCO graft; no remote history was rewritten. - Exact-tree focused journal/spec tests: 13/13 passed; runtime-provider source-shape tests: 8/8 passed. - Biome, diff-check, test-size, repository checks, `typecheck`, `typecheck:cli`, normal commit hooks, and pre-push typechecks passed. - Production source inventory proves no adapter, provider registration, selectable runtime, or activation imports these primitives. ## Risk Plan - Primary risk: accepting an invalid journal transition or allowing retained launch state to diverge from its canonical hash before the later adapter owns destructive cutover. - Containment: bounded parsers, detached canonical serialization, recursive freezing, explicit legal transitions, adversarial tests, and source-shape dormancy enforcement. - Regression risk: none to the active Docker path; the primitives have no production consumer. - Rollback: revert this inert six-path slice without changing runtime behavior. ## Stack - Merged base: PR3.10A #8036, followed by current `main` `d09b530ef1d3045b0c26b6d34462cb2175d9fb94`. - This slice: PR3.10B1 #8037, `a352b710bd3fe57d5d28eb849d02c5d75b5a4d32`. - Next: PR3.10B2 #8128, extracting the transactional adapter/shared-state cutover and exact `createReceipt` cleanup binding; it will be append-restacked onto this exact held base. - PR3.11 #8040 remains held until both PR3.10B slices establish the new handoff. - Buildless and Podman support remain disabled until the complete all-agent, multiarch, GPU/local-inference, recovery, installer, and protected-E2E gates in #7744 pass. Signed-off-by: Aaron Erickson <aerickson@nvidia.com> --------- Signed-off-by: Aaron Erickson <aerickson@nvidia.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
<!-- 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>
Summary
Defines the dormant, provider-neutral transaction and image bootstrap boundary
for managed-image workloads. Preparation remains non-destructive; activation is
authorized only by immutable provider, sandbox, image, startup-profile,
supervisor, and transaction receipts.
This is internal groundwork only. No production onboarding path imports it, no
runtime becomes selectable, and no partial buildless, Docker, Podman, or MXC
support is advertised.
Related Issue
Part of #7744
Changes
rollback, cleanup, and completion-receipt contracts.
before an incomplete
createHeldWorkloadcall becomes cleanup-eligible.profile, shared-state, bootstrap, sandbox, and supervisor identities.
LangChain Deep Agents Code through an MXC-named fake provider.
dynamic section, undefined runtime symbol, or C-library startup.
instead of argv; close that descriptor for application/verification helpers
and mark it close-on-exec before the long-lived supervisor starts.
inference settings, loader/shell process controls, and supervisor argv only at
the final supervisor
execve.and count/entry/aggregate-boundary tests.
assets out of production compilation, packaging, and selection.
Type of Change
Quality Gates
updated, but this dormant slice changes no user-facing behavior or support
claim.
onboarding, inference, runner, sandbox, or messaging)
reviewer/approval link/justification: Independent review covered native
pre-loader isolation, environment secrecy in argv/helpers, memfd sealing and
bounds, exact environment restoration, helper descriptor containment,
close-on-exec, all-agent behavior, immutable identity binding, rollback, and
exact cleanup authority.
name, approval link, and follow-up issue:
Documentation Writer Review
docs-updatedsrc/lib/onboard/managed-bootstrap/README.mddocuments the dormant driver-neutral protocol, rollback and exact-cleanup ownership, packaging dormancy, all-agent scope, and deferred activation tracked by [Epic] Support native Podman with buildless managed onboarding #7744; the final exact-head commits add only regression tests for failed-preparation retry cleanup, independent discovery-versus-inspection disagreement, and branchless exact-ownership cleanup, plus a shared test authority-key helper; they do not change user-visible behavior or support claims.DGX Station Hardware Evidence
Verification
0c91e0b98871b4001ebf3d51aed7c2f4b47696f9/4cd4d64fe67143b57707f874afa0b9d269dfeff2.+4,307/-2.fd914f4150efb33d7d7afffabc1e91beb7dba60a.bcef7150982f7f66d9e0dcb6937bb8cfc8f14583366f585ac2fcfec90ba97cbe.1155c1f9ahas protectedfix parent
e9bdd6d45and exact-main parent4cd4d64fe; the managed-bootstrapblobs were unchanged by the merge.
on the exact current-main head; the 9 native-Linux cases were expected skips
on macOS.
all agents, hostile loader/shell controls, exact environment restoration,
sealed-descriptor attacks, restart/tamper, and every configured bound.
no interpreter, dynamic section, or undefined symbols. Local emulated amd64
behavioral qualification was inconclusive because the emulator/compiler
signaled; native amd64 CI remains mandatory and the exactness test was not
weakened.
npm run validate:pr, CLI typecheck, source-shape and test-size budgets,repository/config checks, shellcheck, Markdown lint, secret scan, DCO, and
git diff --checkpassed on the exact head.with no central Docker, Podman, or MXC switch.
CodeRabbit, and protected E2E remain the remote qualification gates.
Maintainer Architectural Disposition
The dormant coordinator is an intentional sequencing boundary. Wiring it now
would activate a partial runtime before provider, image, rollback, recovery,
GPU/local-inference, multiarch, installer, and protected-E2E support are
complete. Removing it would make the first concrete provider define central
transaction semantics and undermine MXC/runtime pluggability.
This sequencing is a binding acceptance criterion from epic #7744 and the
maintainer-approved incremental stack. #8037 is the immediate provider-specific
source consumer of this contract and also remains inert. The advisor suggestion
to wire this slice directly into production or remove it is therefore explicitly
dispositioned as non-applicable: either action would violate the one-thesis slice
boundary or activate partial runtime support before qualification.
Production source-shape tests therefore require onboarding to remain
disconnected, registered providers to remain bootstrap-unsupported, and native
assets to remain unpackaged. A later complete provider/image/rollback slice must
replace those assertions with all-agent registered-provider and protected-E2E
qualification.
Risk Plan
complete supervisor environment leaks through argv/helpers, destructive
activation occurs before durable identity, or cleanup targets a reused name.
carried in a sealed bounded descriptor; helpers cannot inherit it; activation
requires immutable authority; cleanup requires the exact Ready sandbox ID.
incomplete runtime path. Source-shape tests fail on either change.
it.
Stack
mainat4cd4d64fe67143b57707f874afa0b9d269dfeff2.feat/managed-bootstrap-protocol, exact head0c91e0b98871b4001ebf3d51aed7c2f4b47696f9.hold/podman-stack/pr8037-base-7a9971fc2and mustbe reconstructed append-only from its source branch after feat(onboard): define dormant transactional managed bootstrap #8036 lands.
hold/podman-stack/pr8040-base-ad5397af.hold/podman-stack/pr8041-base-8c120019, with exactsource backup
backup/podman-stack/pr8041-source-ad6680ed.v0.0.101.amd64/arm64, GPU, Ollama/NIM/vLLM, recovery, installer, documentation, and
protected-E2E gates in [Epic] Support native Podman with buildless managed onboarding #7744 pass.
Signed-off-by: Aaron Erickson aerickson@nvidia.com
Summary by CodeRabbit
New Features
Security
Documentation
Tests