feat(runtime): start exact Podman image bootstrap - #8056
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>
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Enterprise Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Comment |
Code Coverage OverviewLanguages: TypeScript TypeScript / code-coverage/pluginThe overall coverage in commit acb25d6 in the Show a code coverage summary of the most impacted files.
TypeScript / code-coverage/cliThe overall coverage in commit acb25d6 in the Show a code coverage summary of the most impacted files.
Updated |
PR Review Advisor — InformationalAdvisor assessment: Informational / low confidence Model lanes
Second-opinion terminology and E2E selections are advisory. They do not change the primary assessment or E2E / PR Gate. 2 semantic terminology decisionsTerminology decisions are advisory. They affect the assessment only when a separate finding identifies concrete semantic impact.
E2E guidanceAdvisory only. E2E / PR Gate selects and runs jobs independently. Recommended E2E: 2 warnings · 0 suggestionsWarningsWarnings do not block.
|
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>
<!-- markdownlint-disable MD041 --> ## Summary Add a dormant, provider-neutral persistence contract for future snapshot, rebuild, restore, and recovery paths. These paths must compare a freshly provider-qualified container engine with its exact authority record before mutation. This slice adds the identity record and matcher only; no production lifecycle calls it, and it does not select, reconstruct, or activate Podman or any other runtime. ## Related Issue Related to #7744. ## Changes - Add a canonical versioned authority record binding one provider, operation scope, engine identity, endpoint-authority identity, and non-secret runtime binding digest. - Add a private atomic store with write-once/idempotent semantics, stable metadata checks, bounded canonical parsing, and fail-closed symlink, ownership, permission, and conflict handling. - Verify stored-file mode and canonical bytes through one `O_NOFOLLOW` descriptor in tests, avoiding a path-based check/use race. - Add an exact matcher for a freshly provider-qualified injected engine; no production lifecycle calls the matcher in this slice. - Exercise the contract with an MXC-style engine and keep production provider selection unchanged; source-shape coverage prevents the persistence boundary from importing managed-bootstrap implementations. - Document the dormant ownership and deferred activation boundary in the internal managed-bootstrap map. ## 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: - [ ] Docs updated for user-facing behavior changes - [x] Docs not applicable — justification: This slice is internal and dormant; its ownership and activation boundary is recorded in the internal managed-bootstrap README. - [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: Maintainer-directed inert slice in #7744; exact identity, filesystem, canonicalization, retry, and drift boundaries have focused adversarial tests. - [ ] 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: Reviewed `src/lib/onboard/managed-bootstrap/README.md`, changed source comments, test titles, source-shape wording, and the PR description at exact head `269de66e5`; all prior wording findings are resolved, and `git diff --check` passed. The append-only parent refresh to `ae30b0694` preserves the exact reviewed slice diff and changes no reviewed documentation. - Agent: Codex Desktop - Qualification carry-forward: Exact head a2ae17e on base 03f5a3d preserves the byte-identical previously reviewed slice diff (stable patch ID 1eecb90d9b155b37b64b93c8d9c31feeb6b611d2; binary diff SHA-256 1c1968117fe5fae4894da9d74030aa39d6a6be8e8ae525c2ff2e7c594404efb6), and its source and documentation tree is unchanged from reviewed head 0fde3f9. <!-- docs-review-head-sha: a2ae17e --> <!-- docs-review-agents-blob-sha: 3dd7c24 --> ## DGX Station Hardware Evidence - [ ] Tested on DGX Station - Tested commit: - Station profile/scenario: - Result: - Supporting evidence: ## Verification - Qualification-only exact head/base: a2ae17e / 03f5a3d; signed-DCO append-only cascade, stable-patch proof, byte-identical slice diff, final-tree equality, and normal pre-push hooks passed. - [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 --project cli src/lib/onboard/runtime-provider/persisted-engine-authority.test.ts` (10 passed); `npx vitest run --project integration test/runtime-provider-source-shape.test.ts` (2 passed); CLI build and typecheck passed at exact implementation head `b403f7a68`; the exact head `269de66e5` reran the authority suite after the same-descriptor CodeQL repair; source-shape, Biome, diff-check, and normal push hooks pass. - [ ] Applicable broad gate passed — `npm test` for broad runtime/test-harness changes; `npm run check` for repo-wide validation/coverage changes — command/result: - [x] Quality Gates section completed with required justifications or waivers - [x] No secrets, API keys, or credentials committed - [ ] `npm run docs` builds without warnings (doc changes only) - [ ] 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) --- Signed-off-by: Aaron Erickson <aerickson@nvidia.com> --------- Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
cv
left a comment
There was a problem hiding this comment.
Reviewed commit acb25d6356 in bottom-up stack order. This PR depends on #8055, which is not approval-ready. Its image, audit, CI, and E2E checks fail, so image-bootstrap behavior cannot advance ahead of the preparation contract. Review remains blocked until the parent is reconstructed or repaired, this branch is restacked on the accepted parent commit, and current CI, security, and documentation evidence passes for the resulting commit. No approval is granted for the current branch.
Summary
Adds a dormant Podman image-bootstrap transaction that accepts only the exact prepared replacement authority from the preceding stack slice. It stages one protected request for the selected agent, starts the exact replacement without
execor a user override, and authenticates the image-owned completion while the stopped watcher and durable journal remain authoritative. This PR does not activate Podman as a user-visible runtime.Related Issue
Part of #7744.
Changes
PodmanBootstrapPreparedReplacementand the exact durableoriginal-stoppedjournal.The internal transaction is required by #7744 to connect the prepared replacement to the image-owned root-application boundary. A direct central-orchestration change would bypass the pluggable runtime boundary.
podman-image-transaction.test.tsprotects this contract.Type of Change
Quality Gates
Documentation Writer Review
docs-updatedsrc/lib/onboard/lifecycle-contracts.mddocuments exact prerequisites, revalidation, the selected-agent request, protected completion, and the unresolved post-failure state. The review also corrected the engine-authority test title and PR terminology. The append-only parent refresh to5250328capreserves the exact reviewed slice diff and changes no reviewed documentation.DGX Station Hardware Evidence
Verification
Signed-off-by:line and every commit appears asVerifiedin GitHubpre-commit,commit-msg, andpre-pushhooks passed, ornpm run validate:prpassed after refreshingorigin/mainwhen hooks were skipped or unavailablenpx vitest run --project cli src/lib/onboard/managed-bootstrap/podman-image-transaction.test.ts src/lib/onboard/managed-bootstrap/podman-bootstrap-replacement.test.ts src/lib/onboard/managed-bootstrap/podman-bootstrap-journal.test.ts src/lib/onboard/managed-bootstrap/podman-watcher-lease.test.ts src/lib/onboard/managed-bootstrap/podman-held-workload.test.tspassed 73/73;npx vitest run --project integration test/runtime-provider-source-shape.test.tspassed 2/2; CLI typecheck and pre-push checks passed.npm testfor broad runtime/test-harness changes;npm run checkfor repo-wide validation/coverage changes — command/result:npm run docsbuilds without warnings (doc changes only)Signed-off-by: Aaron Erickson aerickson@nvidia.com