fix(installer): allow idle PackageKit on Station - #7241
Conversation
Signed-off-by: Senthil Ravichandran <senthilr@nvidia.com>
📝 WalkthroughWalkthroughPackageKit handling now distinguishes idle daemons from active package work, quiesces and restores PackageKit around generic Ubuntu package installation, and restores runtime state during cleanup. Dedicated tests cover transaction, lock, ordering, and host-profile behavior. ChangesPackageKit transaction handling
Estimated code review effort: 4 (Complex) | ~45 minutes Suggested reviewers: 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 inconclusive)
✅ Passed checks (4 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
PR Review Advisor — InformationalAdvisor assessment: Informational / high confidence Model lanes
Nemotron output stays in workflow artifacts and does not change the assessment above. E2E guidanceAdvisory only. E2E / PR Gate selects and runs jobs independently. Recommended E2E: None This automated review informs maintainers. Warnings and suggestions do not require a response. A maintainer decides whether to merge. |
There was a problem hiding this comment.
Blocking on exact head 368665d31e511604c9bb91ac8b18a8d2115fa065.
The generic-Ubuntu branch at scripts/prepare-dgx-station-host.sh:827-842 removes packagekitd from the process gate and infers idleness only from four APT/dpkg locks. That is not a safe idle predicate: PackageKit 1.2.8 only takes the APT cache lock for install/install-files/remove/update roles, while active RepoEnable/RepoRemove transactions can rewrite source-list files without any of these tracked locks. Such a lock-free transaction can pass this gate and race NemoClaw's repository setup, metadata refresh, simulation, or source selection.
Please make active PackageKit state fail closed (or keep PackageKit quiesced across the full repository/package critical section with trap-safe restoration), and add regressions for an active lock-free transaction plus the after-inspection/critical-section transition.
The linked issue #7240 also requires a fresh physical generic-Ubuntu Station run through reboot/resume and completed E2E. The current gate says no E2E checks were selected and no physical-run evidence or maintainer waiver is recorded, so that acceptance criterion remains open.
Signed-off-by: Senthil Ravichandran <senthilr@nvidia.com>
|
@cjagwani Addressed the blocking PackageKit finding in signed commit
Focused verification: 86 tests passed across Station package state, package transaction, and host preparation. All normal pre-commit, commit-message, and pre-push hooks passed. The fresh generic-Ubuntu physical reboot/resume E2E criterion remains explicit and will be attached from the reprovisioned |
The code blocker is addressed by verified head a92d8d9: PackageKit is runtime-masked before transaction inspection, active or malformed lock-free transaction state fails closed, the daemon must become inactive before repository/package mutation, and cleanup restores the run-owned mask/state. Physical Station E2E is waived per maintainer direction. Dismissing this prior exact-head changes-requested review; current-main refresh and pending CI remain ordinary gates.
<!-- markdownlint-disable MD041 --> ## Summary Add the canonical dated changelog entry for NemoClaw `v0.0.89` before the release plan captures the tag commit. The entry summarizes the user-visible Station preparation, inference, recovery, policy-disclosure, and CLI-containment changes merged since `v0.0.88`. ## Changes - Add `docs/changelog/2026-07-20.mdx` with the exact `## v0.0.89` release heading, parser-safe SPDX comment, summary, and detailed bullets. - Link each shipped theme to the most specific published OpenClaw documentation routes. - Keep internal E2E, advisory-registry, and review-workflow refactors out of the user-facing release summary. Source summary: - #7214, #7241, #7237, #7223, #7204, #7202, #7183, and #7090 -> `docs/changelog/2026-07-20.mdx`: Summarize qualified DGX Station identity, package-state, PackageKit, DKMS, and reboot-handoff fixes. - #7242, #7221, #7186, #7164, and #6874 -> `docs/changelog/2026-07-20.mdx`: Summarize inference endpoint provenance, provider attachment, managed vLLM cleanup and progress, and Ollama selection guidance. - #7225, #7216, #7192, #7136, #7096, and #6910 -> `docs/changelog/2026-07-20.mdx`: Summarize sandbox readiness, recovery guidance, rebuilt model routing, durable Hermes state, and gateway restart behavior. - #7187 -> `docs/changelog/2026-07-20.mdx`: Summarize complete effective messaging-preset egress disclosure before policy mutation. - #7218, #7165, and #7184 -> `docs/changelog/2026-07-20.mdx`: Summarize structured output containment, terminal-safe route display, and Hermes forward cleanup. ## 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 PR adds release-history prose only; the focused changelog contract test validates its required structure and routes. - [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: ## 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 check:diff` passed when hooks were skipped or unavailable - [x] Targeted behavior tests pass for the current change set, or tests are marked not applicable above — `mise exec node@22.23.1 -- npx vitest run test/changelog-docs.test.ts` (6 passed). - [ ] Applicable broad gate passed — `npm test` for broad runtime/test-harness changes; `npm run check` for repo-wide validation/coverage changes — not applicable to this doc-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) — `mise exec node@22.23.1 -- npm run docs` completed with 0 errors and 2 existing site-wide warnings. - [x] Doc pages follow the [style guide](https://github.com/NVIDIA/NemoClaw/blob/main/docs/CONTRIBUTING.md) (doc changes only) - [ ] New doc pages include SPDX header and frontmatter (new pages only) — the native changelog entry uses the required parser-safe MDX SPDX comment and does not use frontmatter. --- Signed-off-by: Aaron Erickson <aerickson@nvidia.com> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Expanded DGX Station installation support for qualified GB300 and OTA-upgraded environments. * Preserved selected inference providers, endpoints, model pins, and tuning settings during sandbox creation and rebuilds. * Improved sandbox recovery by validating availability and stability before restarting services. * Added clearer policy output showing the complete effective messaging egress configuration. * **Bug Fixes** * Hardened status and inference route displays by sanitizing terminal control characters. * Improved Hermes uninstall behavior by stopping detached dashboard forwarding. <!-- end of auto-generated comment: release notes by coderabbit.ai --> Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
<!-- markdownlint-disable MD041 --> ## Summary This PR documents the full YAML-derived `policy-add --dry-run` disclosure near the preset preview workflow. It also defines the generic Ubuntu package-state boundary for DGX Station preparation. This post-release documentation follow-up does not change a dated changelog entry. ## Changes - [#7187](#7187) -> `docs/network-policy/integration-policy-examples.mdx`: Explain that the preview uses the exact preset YAML and discloses endpoint, HTTP rule, and binary scope. - [#7241](#7241) -> `docs/get-started/dgx-station-preparation.mdx`: Document that NemoClaw accepts and quiesces an idle PackageKit daemon. - [#7202](#7202) -> `docs/get-started/dgx-station-preparation.mdx`: Document the fail-closed package transaction, lock, package-state, and query boundary before mutation. ## 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 PR changes prose only. Existing source tests own the documented behavior, and focused documentation guards pass. - [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: ## DGX Station Hardware Evidence - [ ] Tested on DGX Station - Tested commit: Not applicable. - Station profile/scenario: Documentation only. - Result: No host behavior changed. - Supporting evidence: Source behavior verified against merged PRs #7241 and #7202 and their focused tests. ## 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 check:diff` passed when hooks were skipped or unavailable - [x] Targeted behavior tests pass for the current change set, or tests are marked not applicable above — `npx vitest run test/changelog-docs.test.ts test/station-doc-ownership.test.ts test/policy-roundtrip-docs.test.ts`: 3 files and 12 tests passed. - [ ] Applicable broad gate passed — Not applicable to this doc-only change. - [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) — The build passed with 0 errors. Fern reported the existing light-mode accent contrast warning. - [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) --- Signed-off-by: Miyoung Choi <miyoungc@nvidia.com> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **Documentation** - Clarified Ubuntu preparation behavior when PackageKit, APT, or dpkg activity is detected, including conditions that stop preparation before changes are made. - Expanded network policy preview guidance to explain that output reflects the maintained preset configuration and includes hosts, ports, access rules, protocols, TLS and enforcement settings, HTTP methods and paths, and binary allowlists. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
Summary
Generic Ubuntu Station preparation currently rejects Ubuntu's resident
packagekitdprocess even when it is idle. This change lets the idle daemon coexist while preventing PackageKit from racing NemoClaw's repository and package transaction.Related Issue
Fixes #7240
Changes
packagekitdprocess from the generic-Ubuntu process-only preflight gate while retaining every APT/dpkg process and lock check.packagekit.service, query PackageKit's own transaction list, and fail closed on active or malformed transaction state.SuggestDaemonQuit, verify it is inactive, and hold the runtime mask through the complete repository/package critical section.Type of Change
Quality Gates
Verification
Signed-off-by:line and every commit appears asVerifiedin GitHubpre-commit,commit-msg, andpre-pushhooks passed, ornpm run check:diffpassed when hooks were skipped or unavailablevitest run --project installer-integration test/install-station-package-state.test.ts test/install-station-package-transaction.test.ts test/install-station-host-preparation.test.ts(86 passed)npm run docsbuilds without warnings (doc changes only)Physical Validation
Fresh generic-Ubuntu Station reboot/resume and full E2E evidence will be attached from the reprovisioned
pmgb300ws-0042qualification run.Signed-off-by: Senthil Ravichandran senthilr@nvidia.com
Summary by CodeRabbit